Class: Wajub::NetHttpTransport
- Inherits:
-
Object
- Object
- Wajub::NetHttpTransport
- Defined in:
- lib/wajub/http/base_client.rb
Instance Method Summary collapse
- #call(method:, path:, headers:, body:, query:) ⇒ Object
-
#initialize(base_url, user_agent:) ⇒ NetHttpTransport
constructor
A new instance of NetHttpTransport.
Constructor Details
#initialize(base_url, user_agent:) ⇒ NetHttpTransport
Returns a new instance of NetHttpTransport.
99 100 101 102 103 |
# File 'lib/wajub/http/base_client.rb', line 99 def initialize(base_url, user_agent:) @base_url = base_url @user_agent = user_agent @mutex = Mutex.new end |
Instance Method Details
#call(method:, path:, headers:, body:, query:) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/wajub/http/base_client.rb', line 105 def call(method:, path:, headers:, body:, query:) uri = URI.parse("#{@base_url}#{path}") if query filtered = query.compact uri.query = URI.encode_www_form(filtered) unless filtered.empty? end http = connection(uri) klass = Net::HTTP.const_get(method.capitalize) request = klass.new(uri) headers.each { |k, v| request[k] = v } request['User-Agent'] = @user_agent request.body = body if body response = http.request(request) { status: response.code.to_i, body: HttpUtils.decode_json(response.body), headers: response.to_hash.transform_values(&:first), request: { method: method, path: path, uri: uri.to_s, headers: headers.merge('User-Agent' => @user_agent) } } end |