quickbooks-ruby 1.0.1 → 2.0.7
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.
- checksums.yaml +4 -4
- data/lib/quickbooks/model/account.rb +0 -1
- data/lib/quickbooks/model/account_based_expense_line_detail.rb +1 -0
- data/lib/quickbooks/model/base_model.rb +1 -0
- data/lib/quickbooks/model/bill.rb +2 -0
- data/lib/quickbooks/model/bill_line_item.rb +2 -0
- data/lib/quickbooks/model/customer.rb +6 -3
- data/lib/quickbooks/model/customer_type.rb +15 -0
- data/lib/quickbooks/model/invoice.rb +10 -2
- data/lib/quickbooks/model/item.rb +2 -4
- data/lib/quickbooks/model/item_based_expense_line_detail.rb +1 -0
- data/lib/quickbooks/model/preferences.rb +23 -5
- data/lib/quickbooks/model/purchase_change.rb +7 -0
- data/lib/quickbooks/model/purchase_line_item.rb +1 -0
- data/lib/quickbooks/model/purchase_order.rb +2 -1
- data/lib/quickbooks/model/report.rb +12 -1
- data/lib/quickbooks/model/sales_item_line_detail.rb +1 -0
- data/lib/quickbooks/model/sales_receipt.rb +1 -0
- data/lib/quickbooks/model/transaction_tax_detail.rb +1 -1
- data/lib/quickbooks/model/vendor.rb +1 -0
- data/lib/quickbooks/model/vendor_credit.rb +2 -0
- data/lib/quickbooks/service/access_token.rb +19 -18
- data/lib/quickbooks/service/account.rb +0 -5
- data/lib/quickbooks/service/base_service.rb +112 -82
- data/lib/quickbooks/service/credit_memo.rb +6 -0
- data/lib/quickbooks/service/custom_field.rb +20 -0
- data/lib/quickbooks/service/customer.rb +1 -11
- data/lib/quickbooks/service/customer_type.rb +20 -0
- data/lib/quickbooks/service/invoice.rb +1 -10
- data/lib/quickbooks/service/item.rb +1 -11
- data/lib/quickbooks/service/payment.rb +6 -0
- data/lib/quickbooks/service/preferences.rb +0 -5
- data/lib/quickbooks/service/purchase_change.rb +16 -0
- data/lib/quickbooks/service/purchase_order.rb +16 -0
- data/lib/quickbooks/service/refund_receipt.rb +6 -0
- data/lib/quickbooks/service/responses/oauth_http_response.rb +1 -5
- data/lib/quickbooks/service/sales_receipt.rb +1 -1
- data/lib/quickbooks/service/service_crud.rb +4 -1
- data/lib/quickbooks/service/service_crud_json.rb +1 -1
- data/lib/quickbooks/service/upload.rb +1 -5
- data/lib/quickbooks/util/logging.rb +16 -2
- data/lib/quickbooks/util/multipart.rb +0 -72
- data/lib/quickbooks/util/query_builder.rb +10 -5
- data/lib/quickbooks/version.rb +1 -1
- data/lib/quickbooks-ruby.rb +45 -19
- metadata +92 -42
- data/lib/quickbooks/faraday/middleware/gzip.rb +0 -72
- data/lib/quickbooks/service/responses/oauth1_http_response.rb +0 -42
@@ -1,78 +1,6 @@
|
|
1
1
|
module OauthMultipart
|
2
2
|
end
|
3
3
|
|
4
|
-
require "oauth"
|
5
|
-
|
6
|
-
OAuth::Consumer.class_eval do
|
7
|
-
def create_http_request(http_method, path, *arguments)
|
8
|
-
http_method = http_method.to_sym
|
9
|
-
|
10
|
-
if [:post, :put].include?(http_method)
|
11
|
-
data = arguments.shift
|
12
|
-
end
|
13
|
-
|
14
|
-
# if the base site contains a path, add it now
|
15
|
-
uri = URI.parse(site)
|
16
|
-
path = uri.path + path if uri.path
|
17
|
-
|
18
|
-
headers = arguments.first.is_a?(Hash) ? arguments.shift : {}
|
19
|
-
|
20
|
-
case http_method
|
21
|
-
when :post
|
22
|
-
request = Net::HTTP::Post.new(path,headers)
|
23
|
-
request["Content-Length"] = '0' # Default to 0
|
24
|
-
when :put
|
25
|
-
request = Net::HTTP::Put.new(path,headers)
|
26
|
-
request["Content-Length"] = '0' # Default to 0
|
27
|
-
when :get
|
28
|
-
request = Net::HTTP::Get.new(path,headers)
|
29
|
-
when :delete
|
30
|
-
request = Net::HTTP::Delete.new(path,headers)
|
31
|
-
|
32
|
-
when :head
|
33
|
-
request = Net::HTTP::Head.new(path,headers)
|
34
|
-
when :multipart_post
|
35
|
-
request = Net::HTTP::Post::Multipart.new(path, headers)
|
36
|
-
else
|
37
|
-
raise ArgumentError, "Don't know how to handle http_method: :#{http_method.to_s}"
|
38
|
-
end
|
39
|
-
|
40
|
-
if data.is_a?(Hash)
|
41
|
-
form_data = {}
|
42
|
-
data.each {|k,v| form_data[k.to_s] = v if !v.nil?}
|
43
|
-
request.set_form_data(form_data)
|
44
|
-
elsif data
|
45
|
-
if data.respond_to?(:read)
|
46
|
-
request.body_stream = data
|
47
|
-
if data.respond_to?(:length)
|
48
|
-
request["Content-Length"] = data.length.to_s
|
49
|
-
elsif data.respond_to?(:stat) && data.stat.respond_to?(:size)
|
50
|
-
request["Content-Length"] = data.stat.size.to_s
|
51
|
-
else
|
52
|
-
raise ArgumentError, "Don't know how to send a body_stream that doesn't respond to .length or .stat.size"
|
53
|
-
end
|
54
|
-
else
|
55
|
-
request.body = data.to_s
|
56
|
-
request["Content-Length"] = request.body.length.to_s
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
request
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
OAuth::AccessToken.class_eval do
|
66
|
-
|
67
|
-
def post_with_multipart(*args)
|
68
|
-
multipart_post *args
|
69
|
-
end
|
70
|
-
|
71
|
-
def multipart_post(*args)
|
72
|
-
request(:multipart_post, *args)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
4
|
OAuth2::AccessToken.class_eval do
|
77
5
|
|
78
6
|
def post_with_multipart(*args)
|
@@ -10,26 +10,31 @@ module Quickbooks
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def clause(field, operator, value)
|
13
|
+
# replace with an escaped backslash
|
14
|
+
escape_single_quotes = -> field { field.to_s.gsub("'", "\\\\'") }
|
15
|
+
|
13
16
|
value = case value
|
14
17
|
when DateTime, Time
|
15
18
|
value.iso8601
|
16
19
|
when Date
|
17
20
|
value.strftime('%Y-%m-%d')
|
18
21
|
when Array
|
19
|
-
value = value.map
|
22
|
+
value = value.map(&escape_single_quotes)
|
23
|
+
when true, false
|
24
|
+
value
|
20
25
|
else
|
21
|
-
|
22
|
-
value = value.gsub("'", "\\\\'")
|
26
|
+
value = escape_single_quotes.call(value)
|
23
27
|
end
|
24
28
|
|
25
29
|
if operator.downcase == 'in' && value.is_a?(Array)
|
26
|
-
value = value.map{|v| "#{VALUE_QUOTE}#{v}#{VALUE_QUOTE}"}
|
30
|
+
value = value.map { |v| "#{VALUE_QUOTE}#{v}#{VALUE_QUOTE}" }
|
27
31
|
"#{field} #{operator} (#{value.join(', ')})"
|
32
|
+
elsif value == true || value == false
|
33
|
+
"#{field} #{operator} #{value}"
|
28
34
|
else
|
29
35
|
"#{field} #{operator} #{VALUE_QUOTE}#{value}#{VALUE_QUOTE}"
|
30
36
|
end
|
31
37
|
end
|
32
|
-
|
33
38
|
end
|
34
39
|
end
|
35
40
|
end
|
data/lib/quickbooks/version.rb
CHANGED
data/lib/quickbooks-ruby.rb
CHANGED
@@ -6,20 +6,19 @@ require 'cgi'
|
|
6
6
|
require 'uri'
|
7
7
|
require 'date'
|
8
8
|
require 'forwardable'
|
9
|
-
require 'oauth'
|
10
9
|
require 'oauth2'
|
11
10
|
require 'net/http/post/multipart'
|
11
|
+
require 'faraday/multipart'
|
12
|
+
require 'faraday/gzip'
|
12
13
|
require 'quickbooks/util/collection'
|
13
14
|
require 'quickbooks/util/logging'
|
14
15
|
require 'quickbooks/util/http_encoding_helper'
|
15
16
|
require 'quickbooks/util/name_entity'
|
16
17
|
require 'quickbooks/util/query_builder'
|
17
|
-
require 'quickbooks/faraday/middleware/gzip'
|
18
18
|
|
19
19
|
#== OAuth Responses
|
20
20
|
require 'quickbooks/service/responses/oauth_http_response'
|
21
21
|
require 'quickbooks/service/responses/methods'
|
22
|
-
require 'quickbooks/service/responses/oauth1_http_response'
|
23
22
|
require 'quickbooks/service/responses/oauth2_http_response'
|
24
23
|
|
25
24
|
#== Models
|
@@ -77,6 +76,7 @@ require 'quickbooks/model/invoice_line_item'
|
|
77
76
|
require 'quickbooks/model/invoice_group_line_detail'
|
78
77
|
require 'quickbooks/model/company_info'
|
79
78
|
require 'quickbooks/model/company_currency'
|
79
|
+
require 'quickbooks/model/customer_type'
|
80
80
|
require 'quickbooks/model/customer'
|
81
81
|
require 'quickbooks/model/delivery_info'
|
82
82
|
require 'quickbooks/model/sales_receipt'
|
@@ -125,6 +125,7 @@ require 'quickbooks/model/item_change'
|
|
125
125
|
require 'quickbooks/model/report'
|
126
126
|
require 'quickbooks/model/credit_memo_change'
|
127
127
|
require 'quickbooks/model/payment_change'
|
128
|
+
require 'quickbooks/model/purchase_change'
|
128
129
|
require 'quickbooks/model/transfer'
|
129
130
|
require 'quickbooks/model/change_data_capture'
|
130
131
|
require 'quickbooks/model/refund_receipt_change'
|
@@ -139,6 +140,8 @@ require 'quickbooks/service/class'
|
|
139
140
|
require 'quickbooks/service/attachable'
|
140
141
|
require 'quickbooks/service/company_info'
|
141
142
|
require 'quickbooks/service/company_currency'
|
143
|
+
require 'quickbooks/service/customer_type'
|
144
|
+
require 'quickbooks/service/custom_field'
|
142
145
|
require 'quickbooks/service/customer'
|
143
146
|
require 'quickbooks/service/department'
|
144
147
|
require 'quickbooks/service/invoice'
|
@@ -180,16 +183,16 @@ require 'quickbooks/service/item_change'
|
|
180
183
|
require 'quickbooks/service/reports'
|
181
184
|
require 'quickbooks/service/credit_memo_change'
|
182
185
|
require 'quickbooks/service/payment_change'
|
186
|
+
require 'quickbooks/service/purchase_change'
|
183
187
|
require 'quickbooks/service/transfer'
|
184
188
|
require 'quickbooks/service/change_data_capture'
|
185
189
|
require 'quickbooks/service/refund_receipt_change'
|
186
190
|
|
187
|
-
# Register Faraday Middleware
|
188
|
-
Faraday::Middleware.register_middleware :gzip => lambda { Gzip }
|
189
|
-
|
190
191
|
module Quickbooks
|
191
192
|
@@sandbox_mode = false
|
192
193
|
@@logger = nil
|
194
|
+
@@minorversion = 47
|
195
|
+
@@http_adapter = :net_http
|
193
196
|
|
194
197
|
class << self
|
195
198
|
def sandbox_mode
|
@@ -200,6 +203,14 @@ module Quickbooks
|
|
200
203
|
@@sandbox_mode = sandbox_mode
|
201
204
|
end
|
202
205
|
|
206
|
+
def minorversion=(v)
|
207
|
+
@@minorversion = v
|
208
|
+
end
|
209
|
+
|
210
|
+
def minorversion
|
211
|
+
@@minorversion
|
212
|
+
end
|
213
|
+
|
203
214
|
def logger
|
204
215
|
@@logger ||= ::Logger.new($stdout) # TODO: replace with a real log file
|
205
216
|
end
|
@@ -208,30 +219,50 @@ module Quickbooks
|
|
208
219
|
@@logger = logger
|
209
220
|
end
|
210
221
|
|
222
|
+
def http_adapter
|
223
|
+
@@http_adapter
|
224
|
+
end
|
225
|
+
|
226
|
+
def http_adapter=(adapter)
|
227
|
+
@@http_adapter = adapter
|
228
|
+
end
|
229
|
+
|
211
230
|
# set logging on or off
|
212
|
-
attr_writer :log, :log_xml_pretty_print
|
231
|
+
attr_writer :log, :log_xml_pretty_print, :condense_logs
|
213
232
|
|
214
233
|
# Returns whether to log. Defaults to 'false'.
|
215
234
|
def log?
|
216
235
|
@log ||= false
|
217
236
|
end
|
218
237
|
|
238
|
+
# Returns whether to limit log lines
|
239
|
+
def condense_logs?
|
240
|
+
@condense_logs ||= false
|
241
|
+
end
|
242
|
+
|
219
243
|
# pretty printing the xml in the logs is "on" by default
|
220
244
|
def log_xml_pretty_print?
|
221
245
|
defined?(@log_xml_pretty_print) ? @log_xml_pretty_print : true
|
222
246
|
end
|
223
247
|
|
224
248
|
def log(msg)
|
225
|
-
|
226
|
-
|
227
|
-
logger.flush if logger.respond_to?(:flush)
|
228
|
-
end
|
249
|
+
logger.info(msg)
|
250
|
+
logger.flush if logger.respond_to?(:flush)
|
229
251
|
end
|
230
252
|
end # << self
|
231
253
|
|
232
254
|
class Error < StandardError; end
|
233
255
|
class InvalidModelException < Error; end
|
234
|
-
class AuthorizationFailure < Error
|
256
|
+
class AuthorizationFailure < Error
|
257
|
+
attr_accessor :code, :detail, :type
|
258
|
+
|
259
|
+
def initialize(error_hash = {})
|
260
|
+
@code = error_hash[:code]
|
261
|
+
@detail = error_hash[:detail]
|
262
|
+
@type = error_hash[:type]
|
263
|
+
super(error_hash[:message])
|
264
|
+
end
|
265
|
+
end
|
235
266
|
class Forbidden < Error; end
|
236
267
|
class NotFound < Error; end
|
237
268
|
class RequestTooLarge < Error; end
|
@@ -239,9 +270,10 @@ module Quickbooks
|
|
239
270
|
class TooManyRequests < Error; end
|
240
271
|
class ServiceUnavailable < Error; end
|
241
272
|
class MissingRealmError < Error; end
|
273
|
+
class UnsupportedOperation < Error; end
|
242
274
|
|
243
275
|
class IntuitRequestException < Error
|
244
|
-
attr_accessor :message, :code, :detail, :type, :request_xml, :request_json
|
276
|
+
attr_accessor :message, :code, :detail, :element, :type, :intuit_tid, :request_xml, :request_json
|
245
277
|
|
246
278
|
def initialize(msg)
|
247
279
|
self.message = msg
|
@@ -249,10 +281,4 @@ module Quickbooks
|
|
249
281
|
end
|
250
282
|
end
|
251
283
|
|
252
|
-
class InvalidOauthAccessTokenObject < StandardError
|
253
|
-
def initialize(access_token)
|
254
|
-
super("Expected access token to be an instance of OAuth::AccessToken or OAuth2::AccessToken, got #{access_token.class}.")
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
284
|
end
|
metadata
CHANGED
@@ -1,59 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickbooks-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Caughlan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: oauth2
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "<"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "<"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: roxml
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activemodel
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 4.0
|
47
|
+
version: '4.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 4.0
|
54
|
+
version: '4.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: net-http-persistent
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: nokogiri
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -94,62 +94,110 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: faraday
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "<"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "<"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: faraday-multipart
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.0'
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 1.0.4
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "~>"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '1.0'
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 1.0.4
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: faraday-gzip
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '1.0'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '1.0'
|
97
145
|
- !ruby/object:Gem::Dependency
|
98
146
|
name: rake
|
99
147
|
requirement: !ruby/object:Gem::Requirement
|
100
148
|
requirements:
|
101
|
-
- -
|
149
|
+
- - ">="
|
102
150
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
151
|
+
version: '0'
|
104
152
|
type: :development
|
105
153
|
prerelease: false
|
106
154
|
version_requirements: !ruby/object:Gem::Requirement
|
107
155
|
requirements:
|
108
|
-
- -
|
156
|
+
- - ">="
|
109
157
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
158
|
+
version: '0'
|
111
159
|
- !ruby/object:Gem::Dependency
|
112
160
|
name: simplecov
|
113
161
|
requirement: !ruby/object:Gem::Requirement
|
114
162
|
requirements:
|
115
|
-
- -
|
163
|
+
- - ">="
|
116
164
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
165
|
+
version: '0'
|
118
166
|
type: :development
|
119
167
|
prerelease: false
|
120
168
|
version_requirements: !ruby/object:Gem::Requirement
|
121
169
|
requirements:
|
122
|
-
- -
|
170
|
+
- - ">="
|
123
171
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
172
|
+
version: '0'
|
125
173
|
- !ruby/object:Gem::Dependency
|
126
174
|
name: rr
|
127
175
|
requirement: !ruby/object:Gem::Requirement
|
128
176
|
requirements:
|
129
|
-
- - "
|
177
|
+
- - ">="
|
130
178
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
179
|
+
version: '0'
|
132
180
|
type: :development
|
133
181
|
prerelease: false
|
134
182
|
version_requirements: !ruby/object:Gem::Requirement
|
135
183
|
requirements:
|
136
|
-
- - "
|
184
|
+
- - ">="
|
137
185
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
186
|
+
version: '0'
|
139
187
|
- !ruby/object:Gem::Dependency
|
140
188
|
name: rspec
|
141
189
|
requirement: !ruby/object:Gem::Requirement
|
142
190
|
requirements:
|
143
|
-
- -
|
191
|
+
- - ">="
|
144
192
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
193
|
+
version: '0'
|
146
194
|
type: :development
|
147
195
|
prerelease: false
|
148
196
|
version_requirements: !ruby/object:Gem::Requirement
|
149
197
|
requirements:
|
150
|
-
- -
|
198
|
+
- - ">="
|
151
199
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
200
|
+
version: '0'
|
153
201
|
- !ruby/object:Gem::Dependency
|
154
202
|
name: webmock
|
155
203
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,16 +216,16 @@ dependencies:
|
|
168
216
|
name: dotenv
|
169
217
|
requirement: !ruby/object:Gem::Requirement
|
170
218
|
requirements:
|
171
|
-
- -
|
219
|
+
- - ">="
|
172
220
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
221
|
+
version: '0'
|
174
222
|
type: :development
|
175
223
|
prerelease: false
|
176
224
|
version_requirements: !ruby/object:Gem::Requirement
|
177
225
|
requirements:
|
178
|
-
- -
|
226
|
+
- - ">="
|
179
227
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
228
|
+
version: '0'
|
181
229
|
description: QBO V3 REST API to Quickbooks Online
|
182
230
|
email: toolbag@gmail.com
|
183
231
|
executables: []
|
@@ -185,7 +233,6 @@ extensions: []
|
|
185
233
|
extra_rdoc_files: []
|
186
234
|
files:
|
187
235
|
- lib/quickbooks-ruby.rb
|
188
|
-
- lib/quickbooks/faraday/middleware/gzip.rb
|
189
236
|
- lib/quickbooks/model/access_token_response.rb
|
190
237
|
- lib/quickbooks/model/account.rb
|
191
238
|
- lib/quickbooks/model/account_based_expense_line_detail.rb
|
@@ -216,6 +263,7 @@ files:
|
|
216
263
|
- lib/quickbooks/model/custom_field.rb
|
217
264
|
- lib/quickbooks/model/customer.rb
|
218
265
|
- lib/quickbooks/model/customer_change.rb
|
266
|
+
- lib/quickbooks/model/customer_type.rb
|
219
267
|
- lib/quickbooks/model/definition.rb
|
220
268
|
- lib/quickbooks/model/delivery_info.rb
|
221
269
|
- lib/quickbooks/model/department.rb
|
@@ -262,6 +310,7 @@ files:
|
|
262
310
|
- lib/quickbooks/model/physical_address.rb
|
263
311
|
- lib/quickbooks/model/preferences.rb
|
264
312
|
- lib/quickbooks/model/purchase.rb
|
313
|
+
- lib/quickbooks/model/purchase_change.rb
|
265
314
|
- lib/quickbooks/model/purchase_line_item.rb
|
266
315
|
- lib/quickbooks/model/purchase_order.rb
|
267
316
|
- lib/quickbooks/model/purchase_tax_rate_list.rb
|
@@ -307,8 +356,10 @@ files:
|
|
307
356
|
- lib/quickbooks/service/company_info.rb
|
308
357
|
- lib/quickbooks/service/credit_memo.rb
|
309
358
|
- lib/quickbooks/service/credit_memo_change.rb
|
359
|
+
- lib/quickbooks/service/custom_field.rb
|
310
360
|
- lib/quickbooks/service/customer.rb
|
311
361
|
- lib/quickbooks/service/customer_change.rb
|
362
|
+
- lib/quickbooks/service/customer_type.rb
|
312
363
|
- lib/quickbooks/service/department.rb
|
313
364
|
- lib/quickbooks/service/deposit.rb
|
314
365
|
- lib/quickbooks/service/employee.rb
|
@@ -324,12 +375,12 @@ files:
|
|
324
375
|
- lib/quickbooks/service/payment_method.rb
|
325
376
|
- lib/quickbooks/service/preferences.rb
|
326
377
|
- lib/quickbooks/service/purchase.rb
|
378
|
+
- lib/quickbooks/service/purchase_change.rb
|
327
379
|
- lib/quickbooks/service/purchase_order.rb
|
328
380
|
- lib/quickbooks/service/refund_receipt.rb
|
329
381
|
- lib/quickbooks/service/refund_receipt_change.rb
|
330
382
|
- lib/quickbooks/service/reports.rb
|
331
383
|
- lib/quickbooks/service/responses/methods.rb
|
332
|
-
- lib/quickbooks/service/responses/oauth1_http_response.rb
|
333
384
|
- lib/quickbooks/service/responses/oauth2_http_response.rb
|
334
385
|
- lib/quickbooks/service/responses/oauth_http_response.rb
|
335
386
|
- lib/quickbooks/service/sales_receipt.rb
|
@@ -365,15 +416,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
365
416
|
requirements:
|
366
417
|
- - ">="
|
367
418
|
- !ruby/object:Gem::Version
|
368
|
-
version: '
|
419
|
+
version: '2.6'
|
369
420
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
370
421
|
requirements:
|
371
422
|
- - ">="
|
372
423
|
- !ruby/object:Gem::Version
|
373
424
|
version: '0'
|
374
425
|
requirements: []
|
375
|
-
|
376
|
-
rubygems_version: 2.7.8
|
426
|
+
rubygems_version: 3.1.6
|
377
427
|
signing_key:
|
378
428
|
specification_version: 4
|
379
429
|
summary: REST API to Quickbooks Online
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/gzip.rb
|
2
|
-
|
3
|
-
require 'faraday'
|
4
|
-
|
5
|
-
# Middleware to automatically decompress response bodies. If the
|
6
|
-
# "Accept-Encoding" header wasn't set in the request, this sets it to
|
7
|
-
# "gzip,deflate" and appropriately handles the compressed response from the
|
8
|
-
# server. This resembles what Ruby 1.9+ does internally in Net::HTTP#get.
|
9
|
-
#
|
10
|
-
# This middleware is NOT necessary when these adapters are used:
|
11
|
-
# - net_http on Ruby 1.9+
|
12
|
-
# - net_http_persistent on Ruby 2.0+
|
13
|
-
# - em_http
|
14
|
-
class Gzip < Faraday::Middleware
|
15
|
-
dependency 'zlib'
|
16
|
-
|
17
|
-
ACCEPT_ENCODING = 'Accept-Encoding'.freeze
|
18
|
-
CONTENT_ENCODING = 'Content-Encoding'.freeze
|
19
|
-
CONTENT_LENGTH = 'Content-Length'.freeze
|
20
|
-
SUPPORTED_ENCODINGS = 'gzip,deflate,br'.freeze
|
21
|
-
RUBY_ENCODING = '1.9'.respond_to?(:force_encoding)
|
22
|
-
|
23
|
-
def call(env)
|
24
|
-
env[:request_headers][ACCEPT_ENCODING] ||= SUPPORTED_ENCODINGS
|
25
|
-
@app.call(env).on_complete do |response_env|
|
26
|
-
case response_env[:response_headers][CONTENT_ENCODING]
|
27
|
-
when 'gzip'
|
28
|
-
reset_body(response_env, &method(:uncompress_gzip))
|
29
|
-
when 'deflate'
|
30
|
-
reset_body(response_env, &method(:inflate))
|
31
|
-
when 'br'
|
32
|
-
reset_body(response_env, &method(:brotli_inflate))
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def reset_body(env)
|
38
|
-
env[:body] = yield(env[:body])
|
39
|
-
env[:response_headers].delete(CONTENT_ENCODING)
|
40
|
-
env[:response_headers][CONTENT_LENGTH] = env[:body].length
|
41
|
-
end
|
42
|
-
|
43
|
-
def uncompress_gzip(body)
|
44
|
-
io = StringIO.new(body)
|
45
|
-
gzip_reader = if RUBY_ENCODING
|
46
|
-
Zlib::GzipReader.new(io, :encoding => 'ASCII-8BIT')
|
47
|
-
else
|
48
|
-
Zlib::GzipReader.new(io)
|
49
|
-
end
|
50
|
-
gzip_reader.read
|
51
|
-
end
|
52
|
-
|
53
|
-
def inflate(body)
|
54
|
-
# Inflate as a DEFLATE (RFC 1950+RFC 1951) stream
|
55
|
-
Zlib::Inflate.inflate(body)
|
56
|
-
rescue Zlib::DataError
|
57
|
-
# Fall back to inflating as a "raw" deflate stream which
|
58
|
-
# Microsoft servers return
|
59
|
-
inflate = Zlib::Inflate.new(-Zlib::MAX_WBITS)
|
60
|
-
begin
|
61
|
-
inflate.inflate(body)
|
62
|
-
ensure
|
63
|
-
inflate.close
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def brotli_inflate(body)
|
68
|
-
self.class.dependency 'brotli'
|
69
|
-
|
70
|
-
Brotli.inflate(body)
|
71
|
-
end
|
72
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Quickbooks
|
2
|
-
module Service
|
3
|
-
module Responses
|
4
|
-
|
5
|
-
class OAuth1HttpResponse < OAuthHttpResponse
|
6
|
-
|
7
|
-
attr_accessor :real_response
|
8
|
-
|
9
|
-
# net/http response
|
10
|
-
def initialize(response)
|
11
|
-
@real_response = response
|
12
|
-
end
|
13
|
-
|
14
|
-
def version
|
15
|
-
1
|
16
|
-
end
|
17
|
-
|
18
|
-
def code
|
19
|
-
@real_response.code.to_i
|
20
|
-
end
|
21
|
-
|
22
|
-
def plain_body
|
23
|
-
if @real_response.respond_to?(:plain_body)
|
24
|
-
@real_response.plain_body
|
25
|
-
else
|
26
|
-
nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def headers
|
31
|
-
if @real_response.respond_to?(:headers)
|
32
|
-
@real_response.headers
|
33
|
-
else
|
34
|
-
nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|