quickeebooks 0.0.5 → 0.0.6
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.
- data/Gemfile.lock +1 -1
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/service/customer.rb +5 -1
- data/lib/quickeebooks/windows/service/service_base.rb +19 -2
- data/quickeebooks.gemspec +2 -2
- data/spec/quickeebooks/windows/services/customer_spec.rb +11 -0
- data/spec/xml/windows/fetch_customer_by_id.xml +53 -0
- metadata +77 -26
data/Gemfile.lock
CHANGED
data/lib/quickeebooks/version.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'quickeebooks/windows/service/service_base'
|
2
|
-
require 'nokogiri'
|
3
2
|
|
4
3
|
module Quickeebooks
|
5
4
|
module Windows
|
@@ -13,6 +12,11 @@ module Quickeebooks
|
|
13
12
|
custom_field_query += '</CustomerQuery>'
|
14
13
|
fetch_collection(Quickeebooks::Windows::Model::Customer, custom_field_query.strip, filters, page, per_page, sort, options)
|
15
14
|
end
|
15
|
+
|
16
|
+
def fetch_by_id(id, idDomain = 'QB', options = {})
|
17
|
+
url = "#{url_for_resource(Quickeebooks::Windows::Model::Customer::REST_RESOURCE)}/#{id}"
|
18
|
+
fetch_object(Quickeebooks::Windows::Model::Customer, url, {:idDomain => idDomain})
|
19
|
+
end
|
16
20
|
|
17
21
|
end
|
18
22
|
end
|
@@ -60,7 +60,7 @@ module Quickeebooks
|
|
60
60
|
private
|
61
61
|
|
62
62
|
def parse_xml(xml)
|
63
|
-
@last_response_xml
|
63
|
+
@last_response_xml =
|
64
64
|
begin
|
65
65
|
x = Nokogiri::XML(xml)
|
66
66
|
#x.document.remove_namespaces!
|
@@ -71,6 +71,19 @@ module Quickeebooks
|
|
71
71
|
def valid_xml_document(xml)
|
72
72
|
%Q{<?xml version="1.0" encoding="utf-8"?>\n#{xml.strip}}
|
73
73
|
end
|
74
|
+
|
75
|
+
# In QBD a single object response is the same as a collection response except
|
76
|
+
# it just has a single main element
|
77
|
+
def fetch_object(model, url, params = {}, options = {})
|
78
|
+
raise ArgumentError, "missing model to instantiate" if model.nil?
|
79
|
+
response = do_http_get(url, params, {'Content-Type' => 'text/xml'})
|
80
|
+
collection = parse_collection(response, model)
|
81
|
+
if collection.is_a?(Quickeebooks::Collection)
|
82
|
+
collection.entries.first
|
83
|
+
else
|
84
|
+
nil
|
85
|
+
end
|
86
|
+
end
|
74
87
|
|
75
88
|
def fetch_collection(model, custom_field_query = nil, filters = [], page = 1, per_page = 20, sort = nil, options ={})
|
76
89
|
raise ArgumentError, "missing model to instantiate" if model.nil?
|
@@ -80,9 +93,13 @@ module Quickeebooks
|
|
80
93
|
else
|
81
94
|
response = do_http_get(url_for_resource(model::REST_RESOURCE), {}, {'Content-Type' => 'text/html'})
|
82
95
|
end
|
96
|
+
parse_collection(response, model)
|
97
|
+
end
|
98
|
+
|
99
|
+
def parse_collection(response, model)
|
83
100
|
if response
|
84
101
|
collection = Quickeebooks::Collection.new
|
85
|
-
xml =
|
102
|
+
xml = @last_response_xml
|
86
103
|
begin
|
87
104
|
results = []
|
88
105
|
path_to_nodes = "//xmlns:RestResponse/xmlns:#{model::XML_COLLECTION_NODE}/xmlns:#{model::XML_NODE}"
|
data/quickeebooks.gemspec
CHANGED
@@ -8,11 +8,11 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.author = "Cody Caughlan"
|
9
9
|
gem.email = "toolbag@gmail.com"
|
10
10
|
gem.homepage = "http://github.com/ruckus/quickeebooks"
|
11
|
-
gem.summary = "REST
|
11
|
+
gem.summary = "REST API to Quickbooks Online/Windows via Intuit Data Services"
|
12
12
|
|
13
13
|
gem.description = gem.summary
|
14
14
|
|
15
|
-
gem.files = Dir["**/*"]
|
15
|
+
gem.files = Dir["**/*"]
|
16
16
|
|
17
17
|
gem.add_dependency 'roxml'
|
18
18
|
gem.add_dependency 'oauth'
|
@@ -45,5 +45,16 @@ describe "Quickeebooks::Windows::Service::Customer" do
|
|
45
45
|
email.tag.should == "Business"
|
46
46
|
email.default.should == "1"
|
47
47
|
end
|
48
|
+
|
49
|
+
it "can fetch a customer by ID" do
|
50
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/fetch_customer_by_id.xml")
|
51
|
+
model = Quickeebooks::Windows::Model::Customer
|
52
|
+
service = Quickeebooks::Windows::Service::Customer.new
|
53
|
+
service.access_token = @oauth
|
54
|
+
service.realm_id = @realm_id
|
55
|
+
FakeWeb.register_uri(:get, "#{service.url_for_resource(model::REST_RESOURCE)}/341?idDomain=QB", :status => ["200", "OK"], :body => xml)
|
56
|
+
customer = service.fetch_by_id(341)
|
57
|
+
customer.name.should == "Wine Stop"
|
58
|
+
end
|
48
59
|
|
49
60
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ../common/RestDataFilter.xsd">
|
2
|
+
<Customers>
|
3
|
+
<Customer>
|
4
|
+
<Id idDomain="QB">341</Id>
|
5
|
+
<SyncToken>1</SyncToken>
|
6
|
+
<MetaData>
|
7
|
+
<CreatedBy>app</CreatedBy>
|
8
|
+
<CreateTime>2012-07-26T21:42:08.0Z</CreateTime>
|
9
|
+
<LastModifiedBy>app</LastModifiedBy>
|
10
|
+
<LastUpdatedTime>2012-07-26T21:42:08.0Z</LastUpdatedTime>
|
11
|
+
</MetaData>
|
12
|
+
<ExternalKey idDomain="QB">341</ExternalKey>
|
13
|
+
<Synchronized>true</Synchronized>
|
14
|
+
<PartyReferenceId idDomain="QB">341</PartyReferenceId>
|
15
|
+
<TypeOf>Person</TypeOf>
|
16
|
+
<Name>Wine Stop</Name>
|
17
|
+
<Address>
|
18
|
+
<Id idDomain="QB">0000000000000KU3</Id>
|
19
|
+
<Line1>Wine Stop</Line1>
|
20
|
+
<Line2>1300 Burlingame Avenue</Line2>
|
21
|
+
<City>Burlingame</City>
|
22
|
+
<CountrySubDivisionCode>CA</CountrySubDivisionCode>
|
23
|
+
<PostalCode>94010</PostalCode>
|
24
|
+
<Default>1</Default>
|
25
|
+
<Tag>Billing</Tag>
|
26
|
+
</Address>
|
27
|
+
<Address>
|
28
|
+
<Id idDomain="QB">0000000000000KU1</Id>
|
29
|
+
<Line1>Wine Stop</Line1>
|
30
|
+
<Line2>1300 Burlingame Avenue</Line2>
|
31
|
+
<City>Burlingame</City>
|
32
|
+
<CountrySubDivisionCode>CA</CountrySubDivisionCode>
|
33
|
+
<PostalCode>94010</PostalCode>
|
34
|
+
<Default>1</Default>
|
35
|
+
<Tag>Shipping</Tag>
|
36
|
+
</Address>
|
37
|
+
<Active>true</Active>
|
38
|
+
<ShowAs>Wine Stop</ShowAs>
|
39
|
+
<SalesTermId idDomain="QB">6</SalesTermId>
|
40
|
+
<SalesTermName>Net 30</SalesTermName>
|
41
|
+
<SalesRepId idDomain="QB">2</SalesRepId>
|
42
|
+
<TaxName>San Francisco County</TaxName>
|
43
|
+
<OpenBalance>
|
44
|
+
<CurrencyCode>USD</CurrencyCode>
|
45
|
+
<Amount>744</Amount>
|
46
|
+
</OpenBalance>
|
47
|
+
<OpenBalanceDate>2012-07-27</OpenBalanceDate>
|
48
|
+
<JobInfo>
|
49
|
+
<Status>None</Status>
|
50
|
+
</JobInfo>
|
51
|
+
</Customer>
|
52
|
+
</Customers>
|
53
|
+
</RestResponse>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickeebooks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: roxml
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: oauth
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: nokogiri
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: activemodel
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: uuidtools
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: rake
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: rcov
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ~>
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: 0.9.8
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.9.8
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: rr
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ~>
|
@@ -98,21 +133,31 @@ dependencies:
|
|
98
133
|
version: 1.0.2
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.0.2
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: rspec
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
|
-
- - =
|
147
|
+
- - '='
|
108
148
|
- !ruby/object:Gem::Version
|
109
149
|
version: 2.11.0
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - '='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 2.11.0
|
113
158
|
- !ruby/object:Gem::Dependency
|
114
159
|
name: fakeweb
|
115
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
116
161
|
none: false
|
117
162
|
requirements:
|
118
163
|
- - ! '>='
|
@@ -120,8 +165,13 @@ dependencies:
|
|
120
165
|
version: '0'
|
121
166
|
type: :development
|
122
167
|
prerelease: false
|
123
|
-
version_requirements:
|
124
|
-
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
description: REST API to Quickbooks Online/Windows via Intuit Data Services
|
125
175
|
email: toolbag@gmail.com
|
126
176
|
executables: []
|
127
177
|
extensions: []
|
@@ -254,6 +304,7 @@ files:
|
|
254
304
|
- spec/xml/online/user.xml
|
255
305
|
- spec/xml/windows/customer.xml
|
256
306
|
- spec/xml/windows/customers.xml
|
307
|
+
- spec/xml/windows/fetch_customer_by_id.xml
|
257
308
|
- spec/xml/windows/http_401.xml
|
258
309
|
- spec/xml/windows/invoice_success_create.xml
|
259
310
|
- spec/xml/windows/invoices.xml
|
@@ -280,8 +331,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
331
|
version: '0'
|
281
332
|
requirements: []
|
282
333
|
rubyforge_project:
|
283
|
-
rubygems_version: 1.8.
|
334
|
+
rubygems_version: 1.8.24
|
284
335
|
signing_key:
|
285
336
|
specification_version: 3
|
286
|
-
summary: REST
|
337
|
+
summary: REST API to Quickbooks Online/Windows via Intuit Data Services
|
287
338
|
test_files: []
|