class Alephant::Publisher::Request::Connection
Attributes
driver[R]
Public Class Methods
new(driver)
click to toggle source
# File lib/alephant/publisher/request/connection.rb, line 12 def initialize(driver) @driver = driver end
Public Instance Methods
get(uri)
click to toggle source
# File lib/alephant/publisher/request/connection.rb, line 16 def get(uri) ::JSON::parse(request(uri).body, :symbolize_names => true) rescue Faraday::ConnectionFailed => e log_error_with_metric(e, 'Connection#request', uri, "PublisherRequestConnectionConnectionFailed") raise ConnectionFailed rescue InvalidApiStatus => e log_error_with_metric(e, 'Connection#request', uri, "PublisherRequestConnectionInvalidStatus#{e.status}") raise e rescue ::JSON::ParserError => e log_error_with_metric(e, 'Connection#get', uri, "PublisherRequestConnectionInvalidApiResponse") raise InvalidApiResponse, "JSON parsing error: #{response.body}" rescue StandardError => e log_error_with_metric(e, 'Connection#get', uri, "PublisherRequestConnectionApiError") raise ApiError, e.message end
Private Instance Methods
request(uri)
click to toggle source
# File lib/alephant/publisher/request/connection.rb, line 34 def request(uri) before = Time.new logger.info "Publisher::Request::Connection#request: uri: #{uri}" driver.get(uri).tap do |response| response_time = Time.new - before logger.metric("PublisherRequestConnectionRequestHTTPTime", :unit => "Seconds", :value => response_time) logger.info "Publisher::Request::Connection#request: API response time: #{response_time}" logger.info "Publisher::Request::Connection#request: status returned: #{response.status} for #{uri}" raise InvalidApiStatus, response.status unless response.status == 200 end end