class Drip::Client::HTTPClient
Constants
- REDIRECT_LIMIT
Public Class Methods
new(config)
click to toggle source
# File lib/drip/client/http_client.rb, line 9 def initialize(config) @config = config end
Public Instance Methods
make_request(drip_request, redirected_url: nil, step: 0)
click to toggle source
# File lib/drip/client/http_client.rb, line 13 def make_request(drip_request, redirected_url: nil, step: 0) raise TooManyRedirectsError, 'too many HTTP redirects' if step >= REDIRECT_LIMIT uri = redirected_url || drip_request.url.tap do |orig_url| next if drip_request.http_verb != :get orig_url.query = URI.encode_www_form(drip_request.options) end response = Net::HTTP.start(uri.host, uri.port, connection_options(uri.scheme)) do |http| request = drip_request.verb_klass.new uri request.body = drip_request.body add_standard_headers(request) request['Content-Type'] = drip_request.content_type http.request request end return make_request(drip_request, redirected_url: URI(response["Location"]), step: step + 1) if response.is_a?(Net::HTTPRedirection) response end
Private Instance Methods
add_standard_headers(request)
click to toggle source
# File lib/drip/client/http_client.rb, line 39 def add_standard_headers(request) request['User-Agent'] = "Drip Ruby v#{Drip::VERSION}" request['Accept'] = "*/*" if @config.access_token request['Authorization'] = "Bearer #{@config.access_token}" else request.basic_auth @config.api_key, "" end request end
connection_options(uri_scheme)
click to toggle source
# File lib/drip/client/http_client.rb, line 52 def connection_options(uri_scheme) options = { use_ssl: uri_scheme == "https" } if @config.http_open_timeout options[:open_timeout] = @config.http_open_timeout options[:ssl_timeout] = @config.http_open_timeout end options[:read_timeout] = @config.http_timeout if @config.http_timeout options end