Class: Io::Flow::V0::HttpClient::DefaultHttpHandlerInstance

Inherits:
HttpHandlerInstance show all
Defined in:
lib/flow_commerce/flow_api_v0_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_uri) ⇒ DefaultHttpHandlerInstance

Returns a new instance of DefaultHttpHandlerInstance.



24443
24444
24445
24446
24447
24448
24449
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24443

def initialize(base_uri)
  @base_uri = Preconditions.assert_class('base_uri', base_uri, URI)
  @client = Net::HTTP.new(@base_uri.host, @base_uri.port)
  if @base_uri.scheme == "https"
    configure_ssl
  end
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



24441
24442
24443
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24441

def client
  @client
end

Instance Method Details

#configure_sslObject

Called to configure SSL if the base uri requires it



24472
24473
24474
24475
24476
24477
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24472

def configure_ssl
  @client.use_ssl = true
  @client.verify_mode = OpenSSL::SSL::VERIFY_PEER
  @client.cert_store = OpenSSL::X509::Store.new
  @client.cert_store.set_default_paths
end

#execute(request) ⇒ Object



24451
24452
24453
24454
24455
24456
24457
24458
24459
24460
24461
24462
24463
24464
24465
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24451

def execute(request)
  response = begin
               @client.request(request)
             rescue SocketError => e
               raise Exception.new("Error accessing uri[#{full_uri(request.path)}]: #{e}")
             end

  case response
  when Net::HTTPSuccess
    response.body
  else
    body = response.body rescue nil
    raise HttpClient::ServerError.new(response.code.to_i, response.message, :body => body, :uri => full_uri(request.path).to_s)
  end
end

#full_uri(path) ⇒ Object



24467
24468
24469
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24467

def full_uri(path)
  File.join(@base_uri.to_s, path)
end