class TwilioLookups::REST::BaseClient

Constants

HTTP_HEADERS

Attributes

account_sid[R]
last_request[R]
last_response[R]

Public Class Methods

host(host=nil) click to toggle source

Override the default host for a REST Client (api.twilio.com)

   # File lib/twilio-lookups/rest/base_client.rb
17 def self.host(host=nil)
18   return @host unless host
19   @host = host
20 end
new(*args) click to toggle source
   # File lib/twilio-lookups/rest/base_client.rb
24 def initialize(*args)
25   options = args.last.is_a?(Hash) ? args.pop : {}
26   options[:host] ||= self.class.host
27   @config = TwilioLookups::Util::ClientConfig.new options
28 
29   @account_sid = args[0] || TwilioLookups.account_sid
30   @auth_token = args[1] || TwilioLookups.auth_token
31   if @account_sid.nil? || @auth_token.nil?
32     raise ArgumentError, 'Account SID and auth token are required'
33   end
34 
35   set_up_connection
36   set_up_subresources
37 end

Protected Instance Methods

build_full_path(path, params, method) click to toggle source

Builds up full request path Needs implementation in child classes

   # File lib/twilio-lookups/rest/base_client.rb
63 def build_full_path(path, params, method)
64   raise NotImplementedError
65 end
connect_and_send(request) click to toggle source

Send an HTTP request using the cached @connection object and return the JSON response body parsed into a hash. Also save the raw Net::HTTP::Request and Net::HTTP::Response objects as @last_request and @last_response to allow for inspection later.

    # File lib/twilio-lookups/rest/base_client.rb
104 def connect_and_send(request) # :doc:
105   @last_request = request
106   retries_left = @config.retry_limit
107   begin
108     response = @connection.request request
109     @last_response = response
110     if response.kind_of? Net::HTTPServerError
111       raise TwilioLookups::REST::ServerError
112     end
113   rescue
114     raise if request.class == Net::HTTP::Post
115     if retries_left > 0 then retries_left -= 1; retry else raise end
116   end
117   if response.body and !response.body.empty?
118     object = MultiJson.load response.body
119   elsif response.kind_of? Net::HTTPBadRequest
120     object = { message: 'Bad request', code: 400 }
121   end
122 
123   if response.kind_of? Net::HTTPClientError
124     raise TwilioLookups::REST::RequestError.new object['message'], object['code']
125   end
126   object
127 end
set_up_connection() click to toggle source

Set up and cache a Net::HTTP object to use when making requests. This is a private method documented for completeness.

   # File lib/twilio-lookups/rest/base_client.rb
70 def set_up_connection # :doc:
71   connection_class = Net::HTTP::Proxy @config.proxy_addr,
72                                       @config.proxy_port, @config.proxy_user, @config.proxy_pass
73   @connection = connection_class.new @config.host, @config.port
74   set_up_ssl
75   @connection.open_timeout = @config.timeout
76   @connection.read_timeout = @config.timeout
77 end
set_up_ssl() click to toggle source

Set up the ssl properties of the @connection Net::HTTP object. This is a private method documented for completeness.

   # File lib/twilio-lookups/rest/base_client.rb
82 def set_up_ssl # :doc:
83   @connection.use_ssl = @config.use_ssl
84   if @config.ssl_verify_peer
85     @connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
86     @connection.ca_file = @config.ssl_ca_file
87   else
88     @connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
89   end
90 end
set_up_subresources() click to toggle source

Set up sub resources attributes.

   # File lib/twilio-lookups/rest/base_client.rb
94 def set_up_subresources # :doc:
95   # To be overridden
96 end