class GreenSMS::Http::Client
Public Class Methods
new(opts)
click to toggle source
# File lib/greensms/http/rest.rb, line 9 def initialize(opts) @token = nil @default_data = {} @default_params = {} @use_camel_case = false opts.each { |name, value| instance_variable_set("@#{name}", value) } end
Public Instance Methods
request(kwargs)
click to toggle source
# File lib/greensms/http/rest.rb, line 18 def request(kwargs) if !kwargs.has_key? "method" raise StandardError.new "Http Method is required" end method = kwargs["method"] if !kwargs.has_key? "url" raise StandardError.new "URL is required" end url = kwargs["url"] kwargs.delete("url") kwargs.delete("method") headers = {} if kwargs.has_key? "headers" kwargs["headers"].each { |name, value| headers[name] = value } end if !GreenSMS.is_null_or_empty(@token) headers["Authorization"] = "Bearer " + @token end params = {} @connection = Faraday.new(url: url) do |f| f.request :multipart f.request :url_encoded f.headers = headers f.adapter Faraday.default_adapter end if !@default_params.empty? @default_params.each { |name, value| params[name] = value } end if kwargs.has_key? "params" kwargs["params"].each { |name, value| params[name] = value } end d = {} if method == "POST" d = d.to_json end url = url + "?" + hash_to_query(params) resp = @connection.send(method.downcase.to_sym, url, d) resp = JSON.parse resp.body if resp.has_key? "error" raise RestError.new(resp["error"], resp["code"]) end if @use_camel_case resp = GreenSMS.camelize(resp) end return resp end
Private Instance Methods
hash_to_query(hash)
click to toggle source
# File lib/greensms/http/rest.rb, line 81 def hash_to_query(hash) return hash.map { |k, v| "#{k}=#{v}" }.join("&") end