Class: Stormpath::Http::HttpClientRequestExecutor
- Inherits:
-
Object
- Object
- Stormpath::Http::HttpClientRequestExecutor
- Includes:
- Authc, Util::Assert
- Defined in:
- lib/stormpath-sdk/http/http_client_request_executor.rb
Instance Method Summary collapse
- #execute_request(request, redirects_limit = 10) ⇒ Object
-
#initialize(options = {}) ⇒ HttpClientRequestExecutor
constructor
A new instance of HttpClientRequestExecutor.
Methods included from Util::Assert
#assert_false, #assert_kind_of, #assert_not_nil, #assert_true
Constructor Details
#initialize(options = {}) ⇒ HttpClientRequestExecutor
Returns a new instance of HttpClientRequestExecutor.
22 23 24 25 |
# File 'lib/stormpath-sdk/http/http_client_request_executor.rb', line 22 def initialize( = {}) @signer = Sauthc1Signer.new @http_client = HTTPClient.new [:proxy] end |
Instance Method Details
#execute_request(request, redirects_limit = 10) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/stormpath-sdk/http/http_client_request_executor.rb', line 27 def execute_request(request, redirects_limit = 10) assert_not_nil request, "Request argument cannot be null." @redirect_response = nil @signer.sign_request request domain = if request.query_string.present? [request.href, request.to_s_query_string(true)].join '?' else request.href end if request.http_headers["Content-Type"] == "application/x-www-form-urlencoded" @http_client.set_auth(request.href, request.api_key.id, request.api_key.secret) end method = @http_client.method(request.http_method.downcase) response = method.call domain, request.body, request.http_headers if response.redirect? and redirects_limit > 0 request.href = response.http_header['location'][0] redirects_limit -= 1 @redirect_response = execute_request request, redirects_limit return @redirect_response end Response.new response.http_header.status_code, response.http_header.body_type, response.content, response.http_header.body_size end |