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