class Songkick::Transport::HttParty::Adapter

Public Instance Methods

endpoint() click to toggle source
# File lib/songkick/transport/httparty.rb, line 17
def endpoint
  @host
end
execute_request(req) click to toggle source
# File lib/songkick/transport/httparty.rb, line 21
def execute_request(req)
  timeout = req.timeout || self.class.default_options[:timeout]

  req_options = {
    :base_uri => @host,
    :headers => req.headers,
    :timeout => timeout
  }

  response = if req.use_body?
    self.class.__send__(req.verb, req.path, req_options.merge(:body => req.body))
  else
    self.class.__send__(req.verb, req.url, req_options)
  end

  process(req, response.code, response.headers, response.parsed_response)

rescue SocketError => error
  logger.warn "Could not connect to host: #{self.class.base_uri}"
  raise ConnectionFailedError, req

rescue Timeout::Error => error
  logger.warn "Request timed out: #{req}"
  raise Transport::TimeoutError, req

rescue UpstreamError => error
  raise error

rescue Object => error
  if error.class.name =~ /json/i or error.message =~ /json/i
    logger.warn("Request returned invalid JSON: #{req}")
    raise Transport::InvalidJSONError, req
  else
    logger.warn("Error trying to call #{req}: #{error.class}: #{error.message}")
    raise UpstreamError, req
  end
end