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