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