class Gupshup::HTTP::Client

Attributes

adapter[RW]
last_request[R]
last_response[R]

Public Class Methods

new() click to toggle source
# File lib/gupshup_whatsapp/http/http.rb, line 9
def initialize
  @adapter = Faraday.default_adapter
end

Public Instance Methods

_request(request) click to toggle source
# File lib/gupshup_whatsapp/http/http.rb, line 13
def _request(request)
  @connection = Faraday.new(url: "#{request.host}:#{request.port.to_s}", ssl: { verify: true }) do |f|
    f.request :url_encoded
    f.adapter @adapter
    f.headers = request.headers
  end
  @last_request = request
  @last_response = nil

  response = send(request)
  if response.status == 504
    object = { message: 'Request timeout', code: 504 }.to_json
  elsif response.body && !response.body.empty?
    object = response.body
  elsif response.status == 400
    object = { message: 'Bad request', code: 400 }.to_json
  end

  gupshup_response = Gupshup::Response.new(response.status, object, headers: response.headers)
  @last_response = gupshup_response

  gupshup_response
end
request(host, port, method, url, data = {}, headers = {}, params = {}, auth = nil, timeout = nil) click to toggle source
# File lib/gupshup_whatsapp/http/http.rb, line 45
def request(host, port, method, url, data = {}, headers = {}, params = {}, auth = nil, timeout = nil)
  request = Gupshup::Request.new(host, port, method, url, params, data, headers)
  _request(request)

end
send(request) click to toggle source
# File lib/gupshup_whatsapp/http/http.rb, line 37
def send(request)
  @connection.send(request.method.downcase.to_sym,
                   request.url,
                   request.method == 'GET' ? request.params : request.data)
rescue Faraday::Error => e
  raise Gupshup::REST::GupshupError, e
end