Module: Paid::Requester
- Defined in:
- lib/paid/requester.rb
Class Method Summary collapse
- .delete(url, params, headers) ⇒ Object
- .escape(val) ⇒ Object
- .execute_request(opts) ⇒ Object
- .get(url, params, headers) ⇒ Object
- .post(url, params, headers) ⇒ Object
- .prepare_params(url, params, method) ⇒ Object
- .put(url, params, headers) ⇒ Object
- .query_array(params, key_prefix = nil) ⇒ Object
- .query_string(params) ⇒ Object
- .request(method, url, params, headers) ⇒ Object
Class Method Details
.delete(url, params, headers) ⇒ Object
29 30 31 |
# File 'lib/paid/requester.rb', line 29 def self.delete(url, params, headers) self.request(:delete, url, params, headers) end |
.escape(val) ⇒ Object
92 93 94 |
# File 'lib/paid/requester.rb', line 92 def self.escape(val) CGI::escape(val.to_s) end |
.execute_request(opts) ⇒ Object
21 22 23 |
# File 'lib/paid/requester.rb', line 21 def self.execute_request(opts) RestClient::Request.execute(opts) end |
.get(url, params, headers) ⇒ Object
25 26 27 |
# File 'lib/paid/requester.rb', line 25 def self.get(url, params, headers) self.request(:get, url, params, headers) end |
.post(url, params, headers) ⇒ Object
37 38 39 |
# File 'lib/paid/requester.rb', line 37 def self.post(url, params, headers) self.request(:post, url, params, headers) end |
.prepare_params(url, params, method) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/paid/requester.rb', line 41 def self.prepare_params(url, params, method) if [:get, :head, :delete].include?(method) unless params.empty? url += URI.parse(url).query ? '&' : '?' + query_string(params) end params = nil else if !RestClient::Payload.has_file?(params) params = query_string(params) end end [url, params] end |
.put(url, params, headers) ⇒ Object
33 34 35 |
# File 'lib/paid/requester.rb', line 33 def self.put(url, params, headers) self.request(:put, url, params, headers) end |
.query_array(params, key_prefix = nil) ⇒ Object
Three major use cases (and nesting of them needs to be supported):
{ :a => { :b => "bvalue" } } => ["a[b]=bvalue"]
{ :a => [1, 2] } => ["a[]=1", "a[]=2"]
{ :a => "value" } => ["a=value"]
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/paid/requester.rb', line 68 def self.query_array(params, key_prefix=nil) ret = [] params.each do |key, value| if params.is_a?(Array) value = key key = '' end key_suffix = escape(key) full_key = key_prefix ? "#{key_prefix}[#{key_suffix}]" : key_suffix if value.is_a?(Hash) || value.is_a?(Array) # Handles the following cases: # { :a => { :b => "bvalue" } } => ["a[b]=bvalue"] # { :a => [1, 2] } => ["a[]=1", "a[]=2"] ret += query_array(value, full_key) else # Handles the base case with just key and value: # { :a => "value" } => ["a=value"] ret << "#{full_key}=#{escape(value)}" end end ret end |
.query_string(params) ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/paid/requester.rb', line 55 def self.query_string(params) params ||= {} if params.any? query_array(params).join('&') else "" end end |
.request(method, url, params, headers) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/paid/requester.rb', line 4 def self.request(method, url, params, headers) method = method.to_sym url, params = prepare_params(url, params, method) request_opts = { :method => method, :url => url, :headers => headers, :payload => params, :verify_ssl => false, :open_timeout => 30, :timeout => 60 } execute_request(request_opts) end |