Class: AmplitudeAnalytics::HttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/amplitude/http_client.rb

Overview

HttpClient

Instance Method Summary collapse

Instance Method Details

#post(url, payload, header = nil) ⇒ Object



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/amplitude/http_client.rb', line 131

def post(url, payload, header = nil)
  result = Response.new
  begin
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host || '', uri.port)
    http.use_ssl = uri.scheme == 'https'

    headers = header || JSON_HEADER
    request = Net::HTTP::Post.new(uri.request_uri, headers)
    request.body = payload
    res = http.request(request)
    result.parse(res)
  rescue Net::ReadTimeout
    result.code = 408
    result.status = HttpStatus::TIMEOUT
  rescue Net::HTTPError => e
    begin
      result.parse(e)
    rescue StandardError
      result = Response.new
      result.code = e.response.code.to_i
      result.status = Response.get_status(e.response.code.to_i)
      result.body = { 'error' => e.response.message }
    end
  rescue Net::OpenTimeout => e
    result.body = { 'error' => e.message }
  end
  result
end