Class: Wajub::NetHttpTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/wajub/http/base_client.rb

Instance Method Summary collapse

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