class HomeAway::API::Adapters::HurleyAdapter
@private
Public Class Methods
__update_opts(struct, opts)
click to toggle source
@private
# File lib/homeaway/api/adapters/hurley.rb, line 38 def self.__update_opts(struct, opts) opts.each_pair do |k, v| method = "#{k}=".to_sym if struct.respond_to?(method) struct.send(method, v) end end end
call(site, opts, headers, method, uri, body, params)
click to toggle source
@private
# File lib/homeaway/api/adapters/hurley.rb, line 48 def self.call(site, opts, headers, method, uri, body, params) begin agent = Hurley::Client.new(site) agent.header.update(headers) self.__update_opts(agent.request_options, opts) self.__update_opts(agent.ssl_options, opts) request = agent.request(method, uri) request.query.update(params) unless params.empty? request.body = body.to_json unless (!body.respond_to?(:to_json) || body.empty?) response = agent.call(request) rescue => e raise HomeAway::API::Errors::HomeAwayAPIError.new(e.message.to_s) end response_to_mash(response) end
response_to_mash(response)
click to toggle source
@private
# File lib/homeaway/api/adapters/hurley.rb, line 65 def self.response_to_mash(response) body = response.body ||= {} mash = HomeAway::API::Response.new mash.update JSON.parse(body) unless body.empty? mash._metadata = HomeAway::API::Response.new mash._metadata.headers = response.header.to_hash if response.respond_to? :header if response.respond_to? :status_code mash._metadata.status_code = response.status_code if mash._metadata.status_code.to_i >= 400 raise (HomeAway::API::Errors.for_http_code mash._metadata.status_code).new(mash) end end mash.delete(:_metadata) if mash._metadata.empty? mash end