taxamo 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/LICENSE +11 -0
  4. data/README.md +120 -0
  5. data/Rakefile +7 -0
  6. data/lib/monkey.rb +90 -0
  7. data/lib/swagger.rb +93 -0
  8. data/lib/swagger/configuration.rb +21 -0
  9. data/lib/swagger/request.rb +198 -0
  10. data/lib/swagger/response.rb +87 -0
  11. data/lib/taxamo.rb +999 -0
  12. data/lib/taxamo/models/additionalcurrencies.rb +62 -0
  13. data/lib/taxamo/models/additionalcurrency.rb +82 -0
  14. data/lib/taxamo/models/bycountry.rb +77 -0
  15. data/lib/taxamo/models/bystatus.rb +69 -0
  16. data/lib/taxamo/models/bytaxationtype.rb +82 -0
  17. data/lib/taxamo/models/c.rb +77 -0
  18. data/lib/taxamo/models/calculatesimpletaxout.rb +62 -0
  19. data/lib/taxamo/models/calculatetaxin.rb +62 -0
  20. data/lib/taxamo/models/calculatetaxlocationout.rb +97 -0
  21. data/lib/taxamo/models/calculatetaxout.rb +62 -0
  22. data/lib/taxamo/models/canceltransactionout.rb +62 -0
  23. data/lib/taxamo/models/capturepaymentout.rb +62 -0
  24. data/lib/taxamo/models/confirmtransactionin.rb +62 -0
  25. data/lib/taxamo/models/confirmtransactionout.rb +62 -0
  26. data/lib/taxamo/models/countries.rb +112 -0
  27. data/lib/taxamo/models/country.rb +114 -0
  28. data/lib/taxamo/models/countryschema.rb +114 -0
  29. data/lib/taxamo/models/createpaymentin.rb +72 -0
  30. data/lib/taxamo/models/createpaymentout.rb +62 -0
  31. data/lib/taxamo/models/createrefundin.rb +77 -0
  32. data/lib/taxamo/models/createrefundout.rb +77 -0
  33. data/lib/taxamo/models/createsmstokenin.rb +67 -0
  34. data/lib/taxamo/models/createsmstokenout.rb +62 -0
  35. data/lib/taxamo/models/createtransactionin.rb +67 -0
  36. data/lib/taxamo/models/createtransactionout.rb +62 -0
  37. data/lib/taxamo/models/currencyschema.rb +82 -0
  38. data/lib/taxamo/models/customfields.rb +67 -0
  39. data/lib/taxamo/models/emailinvoicein.rb +62 -0
  40. data/lib/taxamo/models/emailinvoiceout.rb +62 -0
  41. data/lib/taxamo/models/evidence.rb +112 -0
  42. data/lib/taxamo/models/evidenceschema.rb +77 -0
  43. data/lib/taxamo/models/getcountriesdictout.rb +63 -0
  44. data/lib/taxamo/models/getcurrenciesdictout.rb +63 -0
  45. data/lib/taxamo/models/getdailysettlementstatsout.rb +63 -0
  46. data/lib/taxamo/models/getproducttypesdictout.rb +63 -0
  47. data/lib/taxamo/models/getrefundsout.rb +63 -0
  48. data/lib/taxamo/models/getsettlementout.rb +83 -0
  49. data/lib/taxamo/models/getsettlementstatsbycountryout.rb +63 -0
  50. data/lib/taxamo/models/getsettlementstatsbytaxationtypeout.rb +62 -0
  51. data/lib/taxamo/models/getsettlementsummaryout.rb +62 -0
  52. data/lib/taxamo/models/gettransactionout.rb +62 -0
  53. data/lib/taxamo/models/gettransactionsstatsout.rb +62 -0
  54. data/lib/taxamo/models/inputtransaction.rb +184 -0
  55. data/lib/taxamo/models/inputtransactionline.rb +133 -0
  56. data/lib/taxamo/models/inputtransactionupdate.rb +184 -0
  57. data/lib/taxamo/models/invoiceaddress.rb +97 -0
  58. data/lib/taxamo/models/listpaymentsout.rb +63 -0
  59. data/lib/taxamo/models/listtransactionsout.rb +63 -0
  60. data/lib/taxamo/models/locategivenipout.rb +72 -0
  61. data/lib/taxamo/models/locatemyipout.rb +72 -0
  62. data/lib/taxamo/models/n.rb +77 -0
  63. data/lib/taxamo/models/payments.rb +72 -0
  64. data/lib/taxamo/models/producttypeschema.rb +62 -0
  65. data/lib/taxamo/models/report.rb +92 -0
  66. data/lib/taxamo/models/settlementdailystatsschema.rb +102 -0
  67. data/lib/taxamo/models/summary.rb +87 -0
  68. data/lib/taxamo/models/transaction.rb +279 -0
  69. data/lib/taxamo/models/transactionlines.rb +163 -0
  70. data/lib/taxamo/models/transactions.rb +279 -0
  71. data/lib/taxamo/models/unconfirmtransactionin.rb +62 -0
  72. data/lib/taxamo/models/unconfirmtransactionout.rb +62 -0
  73. data/lib/taxamo/models/updatetransactionin.rb +62 -0
  74. data/lib/taxamo/models/updatetransactionout.rb +62 -0
  75. data/lib/taxamo/models/validatetaxnumberout.rb +77 -0
  76. data/lib/taxamo/models/verifysmstokenout.rb +62 -0
  77. data/lib/taxamo/version.rb +17 -0
  78. data/taxamo.gemspec +31 -0
  79. data/test/taxamo/connectivity_test.rb +55 -0
  80. data/test/taxamo/tax_test.rb +147 -0
  81. data/test/taxamo/transactions_api_test.rb +308 -0
  82. metadata +226 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8cf5f76565fff95a1fbae895d217fa71bb049be4
4
+ data.tar.gz: 23aaffe3c9121060f3491dcf3ece72fce0d645af
5
+ SHA512:
6
+ metadata.gz: caa975d864fc42417e2d14109f6d2bfba405757f32590139d0b6efc00ffce06d416cce563c7a1922f6d99c256e574ba507ec652c232d077748fee1e527c45c2e
7
+ data.tar.gz: 3cfc7cd62e1e281a74df0450a48852ed631c470520863a9f1746660bf4c196df94ed3700ad59e926d1a476472a28f23f487718f60f81b269f2aab605a536d63e
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+ gemspec
3
+
4
+ if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('1.9.3')
5
+ gem 'rest-client', '~> 1.6.8'
6
+ gem 'activesupport', '~> 3.2'
7
+ end
data/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ Copyright 2014-2015 Taxamo, Ltd.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at [apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
6
+
7
+ Unless required by applicable law or agreed to in writing, software
8
+ distributed under the License is distributed on an "AS IS" BASIS,
9
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ See the License for the specific language governing permissions and
11
+ limitations under the License.
@@ -0,0 +1,120 @@
1
+ # Taxamo API Ruby client
2
+
3
+ This package provides [Taxamo](http://www.taxamo.com) API bindings for Ruby and was generated using Swagger-codegen.
4
+
5
+ ## Installation
6
+
7
+ To install it, just fetch this repository and issue the following command:
8
+
9
+ ```shell
10
+ $ gem build taxamo.gemspec
11
+ $ gem install taxamo-1.0.4.gem
12
+ ```
13
+
14
+ Alternatively, add the following line to your project's `Gemfile` file:
15
+
16
+ ```ruby
17
+ gem "taxamo", github: "taxamo/taxamo-ruby"
18
+ ```
19
+
20
+ ## Changes
21
+
22
+ 1.0.5 (2015-07-02):
23
+ * sync with the newest API model, including addition of getsettlementdailystats operation
24
+
25
+ 1.0.4 (2015-04-15):
26
+ * sync with the newest API data model, including unconfirm transaction and email invoice operations and a default currency code for each country
27
+ * please note, that the list_transactions operation has new argument: invoice_number, changing the argument count to 12
28
+
29
+ 1.0.3 (2015-04-15):
30
+ * use require_rel to make the require work properly when using bundler to manage the dependencies
31
+
32
+ 1.0.2 (2015-03-16):
33
+ * Refresh CreateRefundOut with new field and updated documentation
34
+
35
+ 1.0.1:
36
+
37
+ * Added buyer_tax_number_valid field to tax calculation, transaction storage and VAT number validation operations
38
+ * Added key_or_custom_id to list_transactions operation - please note, that the number of arguments has changed!
39
+
40
+ ## Usage
41
+
42
+ First of all, you need to set your private test or live token:
43
+
44
+ ```ruby
45
+ require 'taxamo'
46
+
47
+ Swagger.configure do |config|
48
+ config.api_key = 'YOUR_TOKEN_HERE'
49
+ end
50
+ ```
51
+
52
+ Next, you can invoke the API as functions in Taxamo module:
53
+
54
+ ```ruby
55
+ resp = Taxamo.get_transaction('SOME_TRANSACTION_ID')
56
+ ```
57
+
58
+ It is possible to use hashes and arrays as input:
59
+
60
+ ```ruby
61
+ resp = Taxamo.calculate_tax(
62
+ {'transaction' => {
63
+ 'currency_code' => 'USD',
64
+ 'buyer_ip' => '127.0.0.1',
65
+ 'billing_country_code' => 'IE',
66
+ 'force_country_code' => 'FR',
67
+ 'transaction_lines' => [{'amount' => 200,
68
+ 'custom_id' => 'line1'},
69
+ {'amount' => 100,
70
+ 'product_type' => 'e-book',
71
+ 'custom_id' => 'line2'}]}})
72
+ ```
73
+
74
+ But also regular classes:
75
+
76
+ ```ruby
77
+ taxIn = CalculateTaxIn.new
78
+ taxIn.transaction = InputTransaction.new
79
+ taxIn.transaction.currency_code = 'USD'
80
+ taxIn.transaction.buyer_ip = '127.0.0.1'
81
+ taxIn.transaction.billing_country_code = 'IE'
82
+ taxIn.transaction.force_country_code = 'FR'
83
+ taxIn.transaction.transaction_lines = [InputTransactionLine.new, InputTransactionLine.new]
84
+ taxIn.transaction.transaction_lines[0].amount = 200
85
+ taxIn.transaction.transaction_lines[0].custom_id = 'line1'
86
+ taxIn.transaction.transaction_lines[1].amount = 100
87
+ taxIn.transaction.transaction_lines[1].custom_id = 'line2'
88
+ taxIn.transaction.transaction_lines[1].product_type = 'e-book'
89
+
90
+ resp = Taxamo.calculate_tax(taxIn)
91
+ ```
92
+
93
+ The output is always coerced to appropriate classes:
94
+
95
+ ```ruby
96
+ assert_equal resp.transaction.countries.detected.code, 'IE'
97
+ assert_equal resp.transaction.amount, 300
98
+ assert_equal resp.transaction.tax_amount, 45.5
99
+ assert_equal resp.transaction.total_amount, 345.5
100
+ ```
101
+
102
+ See the regression tests for more examples.
103
+
104
+ ## Documentation
105
+
106
+ Please see http://www.taxamo.com/documentation/ for the most up-to-date documentation.
107
+
108
+ ## License
109
+
110
+ Copyright 2014-2015 Taxamo, Ltd.
111
+
112
+ Licensed under the Apache License, Version 2.0 (the "License");
113
+ you may not use this file except in compliance with the License.
114
+ You may obtain a copy of the License at [apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
115
+
116
+ Unless required by applicable law or agreed to in writing, software
117
+ distributed under the License is distributed on an "AS IS" BASIS,
118
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
119
+ See the License for the specific language governing permissions and
120
+ limitations under the License.
@@ -0,0 +1,7 @@
1
+ require 'rake/testtask'
2
+
3
+ task :default => [:test]
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = './test/**/*_test.rb'
7
+ end
@@ -0,0 +1,90 @@
1
+ # module Swagger
2
+ class Object
3
+
4
+ unless Object.method_defined? :blank?
5
+ def blank?
6
+ respond_to?(:empty?) ? empty? : !self
7
+ end
8
+ end
9
+
10
+ unless Object.method_defined? :present?
11
+ def present?
12
+ !blank?
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+ class String
19
+
20
+ unless String.method_defined? :underscore
21
+ def underscore
22
+ self.gsub(/::/, '/').
23
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
24
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
25
+ tr("-", "_").
26
+ downcase
27
+ end
28
+ end
29
+
30
+ unless String.method_defined? :camelize
31
+ def camelize(first_letter_in_uppercase = true)
32
+ if first_letter_in_uppercase != :lower
33
+ self.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
34
+ else
35
+ self.to_s[0].chr.downcase + camelize(self)[1..-1]
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ class Hash
43
+
44
+ unless Hash.method_defined? :stringify_keys
45
+ def stringify_keys
46
+ inject({}) do |options, (key, value)|
47
+ options[key.to_s] = value
48
+ options
49
+ end
50
+ end
51
+ end
52
+
53
+ unless Hash.method_defined? :stringify_keys!
54
+ def stringify_keys!
55
+ self.replace(self.stringify_keys)
56
+ end
57
+ end
58
+
59
+ unless Hash.method_defined? :symbolize_keys
60
+ def symbolize_keys
61
+ inject({}) do |options, (key, value)|
62
+ options[(key.to_sym rescue key) || key] = value
63
+ options
64
+ end
65
+ end
66
+ end
67
+
68
+ unless Hash.method_defined? :symbolize_keys!
69
+ def symbolize_keys!
70
+ self.replace(self.symbolize_keys)
71
+ end
72
+ end
73
+
74
+ unless Hash.method_defined? :symbolize_and_underscore_keys
75
+ def symbolize_and_underscore_keys
76
+ inject({}) do |options, (key, value)|
77
+ options[(key.to_s.underscore.to_sym rescue key) || key] = value
78
+ options
79
+ end
80
+ end
81
+ end
82
+
83
+ unless Hash.method_defined? :symbolize_and_underscore_keys!
84
+ def symbolize_and_underscore_keys!
85
+ self.replace(self.symbolize_and_underscore_keys)
86
+ end
87
+ end
88
+
89
+ end
90
+ # end
@@ -0,0 +1,93 @@
1
+ require 'monkey'
2
+ require 'swagger/configuration'
3
+ require 'swagger/request'
4
+ require 'swagger/response'
5
+ require 'logger'
6
+
7
+ module Swagger
8
+
9
+ class << self
10
+ attr_accessor :logger
11
+
12
+ # A Swagger configuration object. Must act like a hash and return sensible
13
+ # values for all Swagger configuration options. See Swagger::Configuration.
14
+ attr_accessor :configuration
15
+
16
+ attr_accessor :resources
17
+
18
+ # Call this method to modify defaults in your initializers.
19
+ #
20
+ # @example
21
+ # Swagger.configure do |config|
22
+ # config.api_key = '1234567890abcdef' # required
23
+ # config.username = 'wordlover' # optional, but needed for user-related functions
24
+ # config.password = 'i<3words' # optional, but needed for user-related functions
25
+ # config.format = 'json' # optional, defaults to 'json'
26
+ # end
27
+ #
28
+ def configure
29
+ self.configuration ||= Configuration.new
30
+ yield(configuration) if block_given?
31
+
32
+ # Configure logger. Default to use Rails
33
+ self.logger ||= configuration.logger || (defined?(Rails) ? Rails.logger : Logger.new(STDOUT))
34
+
35
+ # remove :// from scheme
36
+ configuration.scheme.sub!(/:\/\//, '')
37
+
38
+ # remove http(s):// and anything after a slash
39
+ configuration.host.sub!(/https?:\/\//, '')
40
+ configuration.host = configuration.host.split('/').first
41
+
42
+ # Add leading and trailing slashes to base_path
43
+ configuration.base_path = "/#{configuration.base_path}".gsub(/\/+/, '/')
44
+ configuration.base_path = "" if configuration.base_path == "/"
45
+ end
46
+
47
+ def authenticated?
48
+ Swagger.configuration.auth_token.present?
49
+ end
50
+
51
+ def de_authenticate
52
+ Swagger.configuration.auth_token = nil
53
+ end
54
+
55
+ def authenticate
56
+ return if Swagger.authenticated?
57
+
58
+ if Swagger.configuration.username.blank? || Swagger.configuration.password.blank?
59
+ raise ClientError, "Username and password are required to authenticate."
60
+ end
61
+
62
+ request = Swagger::Request.new(
63
+ :get,
64
+ "account/authenticate/{username}",
65
+ :params => {
66
+ :username => Swagger.configuration.username,
67
+ :password => Swagger.configuration.password
68
+ }
69
+ )
70
+
71
+ response_body = request.response.body
72
+ Swagger.configuration.auth_token = response_body['token']
73
+ end
74
+
75
+ end
76
+
77
+ end
78
+
79
+ class ServerError < StandardError
80
+ end
81
+
82
+ class ValidationError < StandardError
83
+ attr_accessor :validation_failures
84
+ end
85
+
86
+ class NotFoundError < StandardError
87
+ end
88
+
89
+ class AuthenticationError < StandardError
90
+ end
91
+
92
+ class ClientError < StandardError
93
+ end
@@ -0,0 +1,21 @@
1
+ module Swagger
2
+
3
+ class Configuration
4
+
5
+ attr_accessor :format, :api_key, :username, :password, :auth_token, :scheme, :host, :base_path, :user_agent, :logger, :inject_format, :force_ending_format, :camelize_params
6
+
7
+ # Defaults go in here..
8
+ def initialize
9
+ @format = 'json'
10
+ @scheme = 'https'
11
+ @host = 'api.taxamo.com'
12
+ @base_path = ''
13
+ @user_agent = "ruby-swagger"
14
+ @inject_format = true
15
+ @force_ending_format = false
16
+ @camelize_params = false
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,198 @@
1
+ module Swagger
2
+
3
+ class Request
4
+ require 'uri'
5
+ require 'addressable/uri'
6
+ require 'typhoeus'
7
+
8
+ attr_accessor :host, :path, :format, :params, :body, :http_method, :headers
9
+
10
+
11
+ # All requests must have an HTTP method and a path
12
+ # Optionals parameters are :params, :headers, :body, :format, :host
13
+ #
14
+ def initialize(http_method, path, attributes={})
15
+ attributes[:format] ||= Swagger.configuration.format
16
+ attributes[:params] ||= {}
17
+
18
+ # Set default headers
19
+ default_headers = {
20
+ 'Content-Type' => "application/#{attributes[:format].downcase}",
21
+ 'Token' => Swagger.configuration.api_key
22
+ }
23
+
24
+ # api_key from headers hash trumps the default, even if its value is blank
25
+ if attributes[:headers].present? && attributes[:headers].has_key?(:api_key)
26
+ default_headers.delete(:api_key)
27
+ end
28
+
29
+ # api_key from params hash trumps all others (headers and default_headers)
30
+ if attributes[:params].present? && attributes[:params].has_key?(:api_key)
31
+ default_headers.delete(:api_key)
32
+ attributes[:headers].delete(:api_key) if attributes[:headers].present?
33
+ end
34
+
35
+ # Merge argument headers into defaults
36
+ attributes[:headers] = default_headers.merge(attributes[:headers] || {})
37
+
38
+ # Stick in the auth token if there is one
39
+ if Swagger.authenticated?
40
+ attributes[:headers].merge!({:auth_token => Swagger.configuration.auth_token})
41
+ end
42
+
43
+ self.http_method = http_method.to_sym
44
+ self.path = path
45
+ attributes.each do |name, value|
46
+ send("#{name.to_s.underscore.to_sym}=", value)
47
+ end
48
+ end
49
+
50
+ # Construct a base URL
51
+ #
52
+ def url(options = {})
53
+ u = Addressable::URI.new(
54
+ :scheme => Swagger.configuration.scheme,
55
+ :host => Swagger.configuration.host,
56
+ :path => self.interpreted_path,
57
+ :query => self.query_string.sub(/\?/, '')
58
+ ).to_s
59
+
60
+ # Drop trailing question mark, if present
61
+ u.sub! /\?$/, ''
62
+
63
+ # Obfuscate API key?
64
+ u.sub! /api\_key=\w+/, 'api_key=YOUR_API_KEY' if options[:obfuscated]
65
+
66
+ u
67
+ end
68
+
69
+ # Iterate over the params hash, injecting any path values into the path string
70
+ #
71
+ # e.g. /word.{format}/{word}/entries => /word.json/cat/entries
72
+ def interpreted_path
73
+ p = self.path.dup
74
+
75
+ # Fill in the path params
76
+ self.params.each_pair do |key, value|
77
+ p = p.gsub("{#{key}}", value.to_s)
78
+ end
79
+
80
+ # # Stick a .{format} placeholder into the path if there isn't
81
+ # # one already or an actual format like json or xml
82
+ # # e.g. /words/blah => /words.{format}/blah
83
+ # if Swagger.configuration.inject_format
84
+ # unless ['.json', '.xml', '{format}'].any? {|s| p.downcase.include? s }
85
+ # p = p.sub(/^(\/?\w+)/, "\\1.#{format}")
86
+ # end
87
+ # end
88
+ #
89
+ # # Stick a .{format} placeholder on the end of the path if there isn't
90
+ # # one already or an actual format like json or xml
91
+ # # e.g. /words/blah => /words/blah.{format}
92
+ # if Swagger.configuration.force_ending_format
93
+ # unless ['.json', '.xml', '{format}'].any? {|s| p.downcase.include? s }
94
+ # p = "#{p}.#{format}"
95
+ # end
96
+ # end
97
+ #
98
+ # p = p.sub("{format}", self.format.to_s)
99
+ #
100
+ URI.encode [Swagger.configuration.base_path, p].join("/").gsub(/\/+/, '/')
101
+ end
102
+
103
+ # Massage the request body into a state of readiness
104
+ # If body is a hash, camelize all keys then convert to a json string
105
+ #
106
+ def body=(value)
107
+ if value.is_a?(Hash)
108
+ value = value.inject({}) do |memo, (k,v)|
109
+ memo[k.to_s.camelize(:lower).to_sym] = v
110
+ memo
111
+ end
112
+ end
113
+ @body = value
114
+ end
115
+
116
+ # If body is an object, JSONify it before making the actual request.
117
+ #
118
+ def outgoing_body
119
+ body.is_a?(String) ? body : body.to_json
120
+ end
121
+
122
+ # Construct a query string from the query-string-type params
123
+ def query_string
124
+
125
+ # Iterate over all params,
126
+ # .. removing the ones that are part of the path itself.
127
+ # .. stringifying values so Addressable doesn't blow up.
128
+ query_values = {}
129
+ self.params.each_pair do |key, value|
130
+ next if self.path.include? "{#{key}}" # skip path params
131
+ next if value.blank? && value.class != FalseClass # skip empties
132
+ if Swagger.configuration.camelize_params
133
+ key = key.to_s.camelize(:lower).to_sym unless key.to_sym == :api_key # api_key is not a camelCased param
134
+ end
135
+ query_values[key.to_s] = value.to_s
136
+ end
137
+
138
+ # We don't want to end up with '?' as our query string
139
+ # if there aren't really any params
140
+ return "" if query_values.blank?
141
+
142
+ # Addressable requires query_values to be set after initialization..
143
+ qs = Addressable::URI.new
144
+ qs.query_values = query_values
145
+ qs.to_s
146
+ end
147
+
148
+ def make
149
+ logger = Logger.new STDOUT
150
+ logger.debug self.url
151
+ response = case self.http_method.to_sym
152
+ when :get,:GET
153
+ Typhoeus::Request.get(
154
+ self.url,
155
+ :headers => self.headers.stringify_keys,
156
+ )
157
+
158
+ when :post,:POST
159
+ Typhoeus::Request.post(
160
+ self.url,
161
+ :body => self.outgoing_body,
162
+ :headers => self.headers.stringify_keys,
163
+ )
164
+
165
+ when :put,:PUT
166
+ Typhoeus::Request.put(
167
+ self.url,
168
+ :body => self.outgoing_body,
169
+ :headers => self.headers.stringify_keys,
170
+ )
171
+
172
+ when :delete,:DELETE
173
+ Typhoeus::Request.delete(
174
+ self.url,
175
+ :body => self.outgoing_body,
176
+ :headers => self.headers.stringify_keys,
177
+ )
178
+ end
179
+ Response.new(response)
180
+ end
181
+
182
+ def response
183
+ self.make
184
+ end
185
+
186
+ def response_code_pretty
187
+ return unless @response.present?
188
+ @response.code.to_s
189
+ end
190
+
191
+ def response_headers_pretty
192
+ return unless @response.present?
193
+ # JSON.pretty_generate(@response.headers).gsub(/\n/, '<br/>') # <- This was for RestClient
194
+ @response.headers.gsub(/\n/, '<br/>') # <- This is for Typhoeus
195
+ end
196
+
197
+ end
198
+ end