class Restcomm::REST::BaseClient
Constants
- DEFAULTS
- HTTP_HEADERS
Attributes
account_sid[R]
last_request[R]
last_response[R]
Public Class Methods
new(*args)
click to toggle source
# File lib/restcomm-ruby/rest/client.rb 25 def initialize(*args) 26 options = args.last.is_a?(Hash) ? args.pop : {host: args[2]} 27 @config = get_defaults.merge! options 28 29 @account_sid = args[0] || Restcomm.account_sid 30 @auth_token = args[1] || Restcomm.auth_token 31 @host=args[2] 32 33 34 if @account_sid.nil? || @auth_token.nil? 35 raise ArgumentError, 'Account SID and auth token are required' 36 end 37 38 if @host.nil? 39 raise ArgumentError, 'Destination Host IP cannot is required!' 40 end 41 42 set_up_connection 43 set_up_subresources 44 45 end
Protected Instance Methods
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/restcomm-ruby/rest/client.rb 110 def connect_and_send(request) # :doc: 111 @last_request = request 112 retries_left = @config[:retry_limit] 113 begin 114 response = @connection.request request 115 @last_response = response 116 if response.kind_of? Net::HTTPServerError 117 raise Restcomm::REST::ServerError 118 end 119 rescue Exception 120 raise if request.class == Net::HTTP::Post 121 if retries_left > 0 then retries_left -= 1; retry else raise end 122 end 123 124 if response.body and !response.body.empty? 125 126 127 if response.body.include? ("<RestcommResponse>") 128 m = Hash.from_xml(response.body).to_json 129 object = MultiJson.load(m) 130 else 131 object = MultiJson.load(response.body) 132 end 133 end 134 135 if response.kind_of? Net::HTTPClientError 136 raise Restcomm::REST::RequestError.new object['message'], object['code'] 137 138 end 139 object 140 end
get_defaults()
click to toggle source
Get the default config values.
# File lib/restcomm-ruby/rest/client.rb 68 def get_defaults 69 # To be overridden 70 DEFAULTS 71 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/restcomm-ruby/rest/client.rb 76 def set_up_connection # :doc: 77 connection_class = Net::HTTP::Proxy @config[:proxy_addr], 78 @config[:proxy_port], @config[:proxy_user], @config[:proxy_pass] 79 @connection = connection_class.new @config[:host], @config[:port] 80 set_up_ssl 81 @connection.open_timeout = @config[:timeout] 82 @connection.read_timeout = @config[:timeout] 83 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/restcomm-ruby/rest/client.rb 88 def set_up_ssl # :doc: 89 @connection.use_ssl = @config[:use_ssl] 90 if @config[:ssl_verify_peer] 91 @connection.verify_mode = OpenSSL::SSL::VERIFY_PEER 92 @connection.ca_file = @config[:ssl_ca_file] 93 else 94 @connection.verify_mode = OpenSSL::SSL::VERIFY_NONE 95 end 96 end
set_up_subresources()
click to toggle source
Set up sub resources attributes.
# File lib/restcomm-ruby/rest/client.rb 100 def set_up_subresources # :doc: 101 # To be overridden 102 end