class Twilio::HTTP::Client

Attributes

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

Public Class Methods

new(proxy_prot = nil, proxy_addr = nil, proxy_port = nil, proxy_user = nil, proxy_pass = nil, ssl_ca_file = nil, timeout: nil) click to toggle source
   # File lib/twilio-ruby/http/http_client.rb
11 def initialize(proxy_prot = nil, proxy_addr = nil, proxy_port = nil, proxy_user = nil, proxy_pass = nil,
12                ssl_ca_file = nil, timeout: nil)
13   @proxy_prot = proxy_prot
14   @proxy_path = "#{proxy_addr}:#{proxy_port}" if proxy_addr && proxy_port
15   @proxy_auth = "#{proxy_user}:#{proxy_pass}@" if proxy_pass && proxy_user
16   @ssl_ca_file = ssl_ca_file
17   @timeout = timeout
18   @adapter = Faraday.default_adapter
19   @configure_connection_blocks = []
20 end

Public Instance Methods

_request(request) click to toggle source
   # File lib/twilio-ruby/http/http_client.rb
29 def _request(request)
30   @connection = Faraday.new(url: request.host + ':' + request.port.to_s, ssl: { verify: true }) do |f|
31     f.options.params_encoder = Faraday::FlatParamsEncoder
32     f.request :url_encoded
33     f.headers = request.headers
34     f.request(:basic_auth, request.auth[0], request.auth[1])
35     f.proxy = "#{@proxy_prot}://#{@proxy_auth}#{@proxy_path}" if @proxy_prot && @proxy_path
36     f.options.open_timeout = request.timeout || @timeout
37     f.options.timeout = request.timeout || @timeout
38 
39     @configure_connection_blocks.each { |block| block.call(f) }
40     f.adapter @adapter
41   end
42 
43   @last_request = request
44   @last_response = nil
45 
46   response = send(request)
47   if response.status == 504
48     object = { message: 'Request timeout', code: 504 }.to_json
49   elsif response.body && !response.body.empty?
50     object = response.body
51   elsif response.status == 400
52     object = { message: 'Bad request', code: 400 }.to_json
53   end
54 
55   twilio_response = Twilio::Response.new(response.status, object, headers: response.headers)
56   @last_response = twilio_response
57 
58   twilio_response
59 end
configure_connection(&block) click to toggle source
   # File lib/twilio-ruby/http/http_client.rb
22 def configure_connection(&block)
23   raise ArgumentError, "#{__method__} must be given a block!" unless block_given?
24 
25   @configure_connection_blocks << block
26   nil
27 end
request(host, port, method, url, params = {}, data = {}, headers = {}, auth = nil, timeout = nil) click to toggle source
   # File lib/twilio-ruby/http/http_client.rb
69 def request(host, port, method, url, params = {}, data = {}, headers = {}, auth = nil, timeout = nil)
70   request = Twilio::Request.new(host, port, method, url, params, data, headers, auth, timeout)
71   _request(request)
72 end
send(request) click to toggle source
   # File lib/twilio-ruby/http/http_client.rb
61 def send(request)
62   @connection.send(request.method.downcase.to_sym,
63                    request.url,
64                    request.method == 'GET' ? request.params : request.data)
65 rescue Faraday::Error => e
66   raise Twilio::REST::TwilioError, e
67 end