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