xero_gateway 2.0.8 → 2.0.9
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/lib/xero_gateway/exceptions.rb +6 -3
- data/lib/xero_gateway/http.rb +5 -3
- data/lib/xero_gateway/line_item.rb +4 -2
- data/test/unit/gateway_test.rb +2 -2
- data/xero_gateway.gemspec +2 -2
- metadata +6 -6
@@ -1,14 +1,17 @@
|
|
1
1
|
module XeroGateway
|
2
2
|
class ApiException < StandardError
|
3
3
|
|
4
|
-
def initialize(type, message,
|
4
|
+
def initialize(type, message, request_xml, response_xml)
|
5
5
|
@type = type
|
6
6
|
@message = message
|
7
|
-
@
|
7
|
+
@request_xml = request_xml
|
8
|
+
@response_xml = response_xml
|
8
9
|
end
|
9
10
|
|
11
|
+
attr_reader :request_xml, :response_xml
|
12
|
+
|
10
13
|
def message
|
11
|
-
"#{@type}: #{@message} \n Generated by the following XML: \n #{@
|
14
|
+
"#{@type}: #{@message} \n Generated by the following XML: \n #{@response_xml}"
|
12
15
|
end
|
13
16
|
|
14
17
|
end
|
data/lib/xero_gateway/http.rb
CHANGED
@@ -70,7 +70,7 @@ module XeroGateway
|
|
70
70
|
when 200
|
71
71
|
response.plain_body
|
72
72
|
when 400
|
73
|
-
handle_error!(response)
|
73
|
+
handle_error!(body, response)
|
74
74
|
when 401
|
75
75
|
handle_oauth_error!(response)
|
76
76
|
when 404
|
@@ -90,13 +90,14 @@ module XeroGateway
|
|
90
90
|
# a second.
|
91
91
|
case (error_details["oauth_problem"].first)
|
92
92
|
when "token_expired" then raise OAuth::TokenExpired.new(description)
|
93
|
+
when "consumer_key_unknown" then raise OAuth::TokenInvalid.new(description)
|
93
94
|
when "token_rejected" then raise OAuth::TokenInvalid.new(description)
|
94
95
|
when "rate limit exceeded" then raise OAuth::RateLimitExceeded.new(description)
|
95
96
|
else raise OAuth::UnknownError.new(error_details["oauth_problem"].first + ':' + description)
|
96
97
|
end
|
97
98
|
end
|
98
99
|
|
99
|
-
def handle_error!(response)
|
100
|
+
def handle_error!(request_xml, response)
|
100
101
|
|
101
102
|
raw_response = response.plain_body
|
102
103
|
|
@@ -109,7 +110,8 @@ module XeroGateway
|
|
109
110
|
if doc.root.name == "ApiException"
|
110
111
|
|
111
112
|
raise ApiException.new(doc.root.elements["Type"].text,
|
112
|
-
doc.root.elements["Message"].text,
|
113
|
+
doc.root.elements["Message"].text,
|
114
|
+
request_xml,
|
113
115
|
raw_response)
|
114
116
|
|
115
117
|
else
|
@@ -10,7 +10,7 @@ module XeroGateway
|
|
10
10
|
attr_reader :errors
|
11
11
|
|
12
12
|
# All accessible fields
|
13
|
-
attr_accessor :line_item_id, :description, :quantity, :unit_amount, :tax_type, :tax_amount, :account_code, :tracking
|
13
|
+
attr_accessor :line_item_id, :description, :quantity, :unit_amount, :item_code, :tax_type, :tax_amount, :account_code, :tracking
|
14
14
|
|
15
15
|
def initialize(params = {})
|
16
16
|
@errors ||= []
|
@@ -75,6 +75,7 @@ module XeroGateway
|
|
75
75
|
b.Description description
|
76
76
|
b.Quantity quantity if quantity
|
77
77
|
b.UnitAmount LineItem.format_money(unit_amount)
|
78
|
+
b.ItemCode item_code if item_code
|
78
79
|
b.TaxType tax_type if tax_type
|
79
80
|
b.TaxAmount tax_amount if tax_amount
|
80
81
|
b.LineAmount line_amount if line_amount
|
@@ -100,6 +101,7 @@ module XeroGateway
|
|
100
101
|
when "Description" then line_item.description = element.text
|
101
102
|
when "Quantity" then line_item.quantity = BigDecimal(element.text)
|
102
103
|
when "UnitAmount" then line_item.unit_amount = BigDecimal.new(element.text)
|
104
|
+
when "ItemCode" then line_item.item_code = element.text
|
103
105
|
when "TaxType" then line_item.tax_type = element.text
|
104
106
|
when "TaxAmount" then line_item.tax_amount = BigDecimal.new(element.text)
|
105
107
|
when "LineAmount" then line_item.line_amount = BigDecimal.new(element.text)
|
@@ -114,7 +116,7 @@ module XeroGateway
|
|
114
116
|
end
|
115
117
|
|
116
118
|
def ==(other)
|
117
|
-
[:description, :quantity, :unit_amount, :tax_type, :tax_amount, :line_amount, :account_code].each do |field|
|
119
|
+
[:description, :quantity, :unit_amount, :tax_type, :tax_amount, :line_amount, :account_code, :item_code].each do |field|
|
118
120
|
return false if send(field) != other.send(field)
|
119
121
|
end
|
120
122
|
return true
|
data/test/unit/gateway_test.rb
CHANGED
@@ -18,7 +18,7 @@ class GatewayTest < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
should "handle invalid request tokens" do
|
21
|
-
XeroGateway::OAuth.any_instance.stubs(:
|
21
|
+
XeroGateway::OAuth.any_instance.stubs(:get).returns(stub(:plain_body => get_file_as_string("invalid_request_token"), :code => "401"))
|
22
22
|
|
23
23
|
assert_raises XeroGateway::OAuth::TokenInvalid do
|
24
24
|
@gateway.get_accounts
|
@@ -26,7 +26,7 @@ class GatewayTest < Test::Unit::TestCase
|
|
26
26
|
end
|
27
27
|
|
28
28
|
should "handle invalid consumer key" do
|
29
|
-
|
29
|
+
XeroGateway::OAuth.any_instance.stubs(:get).returns(stub(:plain_body => get_file_as_string("invalid_consumer_key"), :code => "401"))
|
30
30
|
|
31
31
|
assert_raises XeroGateway::OAuth::TokenInvalid do
|
32
32
|
@gateway.get_accounts
|
data/xero_gateway.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "xero_gateway"
|
3
|
-
s.version = "2.0.
|
4
|
-
s.date = "2011-
|
3
|
+
s.version = "2.0.9"
|
4
|
+
s.date = "2011-04-12"
|
5
5
|
s.summary = "Enables ruby based applications to communicate with the Xero API"
|
6
6
|
s.email = "tim@connorsoftware.com"
|
7
7
|
s.homepage = "http://github.com/tlconnor/xero_gateway"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xero_gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 2.0.
|
9
|
+
- 9
|
10
|
+
version: 2.0.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Connor
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-04-12 00:00:00 +12:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
163
|
requirements: []
|
164
164
|
|
165
165
|
rubyforge_project:
|
166
|
-
rubygems_version: 1.
|
166
|
+
rubygems_version: 1.6.2
|
167
167
|
signing_key:
|
168
168
|
specification_version: 3
|
169
169
|
summary: Enables ruby based applications to communicate with the Xero API
|