class Stormpath::Http::HttpClientRequestExecutor

Public Class Methods

new(options = {}) click to toggle source
   # File lib/stormpath-sdk/http/http_client_request_executor.rb
22 def initialize(options = {})
23   @signer = Sauthc1Signer.new
24   @http_client = HTTPClient.new(options[:proxy])
25 end

Public Instance Methods

execute_request(request, redirects_limit = 10) click to toggle source
   # File lib/stormpath-sdk/http/http_client_request_executor.rb
27 def execute_request(request, redirects_limit = 10)
28   assert_not_nil request, 'Request argument cannot be null.'
29 
30   @redirect_response = nil
31 
32   @signer.sign_request request
33 
34   domain = if request.query_string.present?
35              [request.href, request.to_s_query_string(true)].join '?'
36            else
37              request.href
38            end
39 
40   if request.http_headers['Content-Type'] == 'application/x-www-form-urlencoded'
41     @http_client.set_auth(request.href, request.api_key.id, request.api_key.secret)
42   end
43 
44   method = @http_client.method(request.http_method.downcase)
45 
46   response = method.call domain, request.body, request.http_headers
47 
48   if response.redirect? && redirects_limit > 0
49     request.href = response.http_header['location'][0]
50     redirects_limit -= 1
51     @redirect_response = execute_request request, redirects_limit
52     return @redirect_response
53   end
54 
55   Response.new(
56     response.http_header.status_code,
57     response.http_header.body_type,
58     response.content,
59     response.http_header.body_size
60   )
61 end