Class: BraintreeHttp::HttpClient
- Inherits:
-
Object
- Object
- BraintreeHttp::HttpClient
- Defined in:
- lib/braintreehttp/http_client.rb
Instance Attribute Summary collapse
-
#encoder ⇒ Object
Returns the value of attribute encoder.
-
#environment ⇒ Object
Returns the value of attribute environment.
Instance Method Summary collapse
- #_parse_response(response) ⇒ Object
- #add_injector(&block) ⇒ Object
- #execute(request) ⇒ Object
- #has_body(request) ⇒ Object
-
#initialize(environment) ⇒ HttpClient
constructor
A new instance of HttpClient.
- #user_agent ⇒ Object
Constructor Details
#initialize(environment) ⇒ HttpClient
Returns a new instance of HttpClient.
12 13 14 15 16 |
# File 'lib/braintreehttp/http_client.rb', line 12 def initialize(environment) @environment = environment @injectors = [] @encoder = Encoder.new end |
Instance Attribute Details
#encoder ⇒ Object
Returns the value of attribute encoder.
10 11 12 |
# File 'lib/braintreehttp/http_client.rb', line 10 def encoder @encoder end |
#environment ⇒ Object
Returns the value of attribute environment.
10 11 12 |
# File 'lib/braintreehttp/http_client.rb', line 10 def environment @environment end |
Instance Method Details
#_parse_response(response) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/braintreehttp/http_client.rb', line 55 def _parse_response(response) status_code = response.code.to_i result = response.body headers = response.to_hash if result && !result.empty? deserialized = @encoder.deserialize_response(response.body, headers) if deserialized.is_a?(String) || deserialized.is_a?(Array) result = deserialized else result = OpenStruct.new(deserialized) end else result = nil end obj = OpenStruct.new({ :status_code => status_code, :result => result, :headers => response.to_hash, }) if status_code >= 200 and status_code < 300 return obj elsif raise HttpError.new(obj.status_code, obj.result, obj.headers) end end |
#add_injector(&block) ⇒ Object
22 23 24 |
# File 'lib/braintreehttp/http_client.rb', line 22 def add_injector(&block) @injectors << block end |
#execute(request) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/braintreehttp/http_client.rb', line 30 def execute(request) if !request.headers request.headers = {} end @injectors.each do |injector| injector.call(request) end if !request.headers["User-Agent"] || request.headers["User-Agent"] == "Ruby" request.headers["User-Agent"] = user_agent end http_request = Net::HTTPGenericRequest.new(request.verb, true, true, request.path, request.headers) if has_body(request) http_request.body = @encoder.serialize_request(request) end uri = URI(@environment.base_url) Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| _parse_response(http.request(http_request)) end end |
#has_body(request) ⇒ Object
26 27 28 |
# File 'lib/braintreehttp/http_client.rb', line 26 def has_body(request) request.respond_to?(:body) and request.body end |
#user_agent ⇒ Object
18 19 20 |
# File 'lib/braintreehttp/http_client.rb', line 18 def user_agent "BraintreeHttp-Ruby HTTP/1.1" end |