huginn_bigcommerce_order_agent 1.0.0 → 1.1.0
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cabec8912614fcbefdb3f4b24312d2f5fba6efb291a35aba2cc42056d1652975
|
4
|
+
data.tar.gz: a45e78bf2dc55451a236bda4eca4e25d27316964661990576d1654e751878441
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31af98d99c56f1e923bb55d1fd6022b5d408988169929faa3526fcb8265375d90ed93477ee08d84fbfaa2eab93ca638109a33717fc0b3f2a86b1dce09de65aa7
|
7
|
+
data.tar.gz: 50f36319afbefee1f094a3ed7c3a7d1a39ef6abb082e5e83b690a80bc4e866c2db7ac47059f33b3529d5b0bf694e1b8407c55eea427df29f8aee3ada6e213583
|
data/lib/client/customer.rb
CHANGED
@@ -12,7 +12,14 @@ module BigcommerceOrderAgent
|
|
12
12
|
return response.body['data'][0]
|
13
13
|
rescue Faraday::Error::ClientError => e
|
14
14
|
raise BigcommerceApiError.new(
|
15
|
-
|
15
|
+
e.response[:status],
|
16
|
+
'get order customer',
|
17
|
+
"Failed to get order customer #{id}",
|
18
|
+
id,
|
19
|
+
{
|
20
|
+
errors: JSON.parse(e.response[:body])['errors']
|
21
|
+
},
|
22
|
+
e
|
16
23
|
)
|
17
24
|
end
|
18
25
|
end
|
data/lib/client/order.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
require 'carmen'
|
2
|
+
|
1
3
|
module BigcommerceOrderAgent
|
2
4
|
module Client
|
3
5
|
class Order < AbstractClient
|
6
|
+
include Carmen
|
7
|
+
|
4
8
|
@uri_base = ':api_version/orders/:order_id'
|
5
9
|
|
6
10
|
def get(id, params = {})
|
@@ -10,7 +14,16 @@ module BigcommerceOrderAgent
|
|
10
14
|
response = client.get(uri({ order_id: id }), params)
|
11
15
|
order = response.body
|
12
16
|
rescue Faraday::Error => e
|
13
|
-
raise BigcommerceApiError.new(
|
17
|
+
raise BigcommerceApiError.new(
|
18
|
+
e.response[:status],
|
19
|
+
'get order',
|
20
|
+
"Failed to get order #{id}",
|
21
|
+
id,
|
22
|
+
{
|
23
|
+
errors: JSON.parse(e.response[:body])['errors']
|
24
|
+
},
|
25
|
+
e
|
26
|
+
)
|
14
27
|
end
|
15
28
|
|
16
29
|
if order.present?
|
@@ -20,6 +33,8 @@ module BigcommerceOrderAgent
|
|
20
33
|
order[:transactions] = get_transactions(id)
|
21
34
|
order[:shipments] = get_shipments(id)
|
22
35
|
|
36
|
+
order['billing_address']['state_code'] = get_region_code(order['billing_address'])
|
37
|
+
|
23
38
|
transactions = get_transactions(id)
|
24
39
|
end
|
25
40
|
|
@@ -34,7 +49,16 @@ module BigcommerceOrderAgent
|
|
34
49
|
response = client.get(uri({ order_id: order_id }, 'products'), params)
|
35
50
|
return response.body
|
36
51
|
rescue Faraday::Error => e
|
37
|
-
raise BigcommerceApiError.new(
|
52
|
+
raise BigcommerceApiError.new(
|
53
|
+
e.response[:status],
|
54
|
+
'get order products',
|
55
|
+
"Failed to get order products #{order_id}",
|
56
|
+
order_id,
|
57
|
+
{
|
58
|
+
errors: JSON.parse(e.response[:body])['errors']
|
59
|
+
},
|
60
|
+
e
|
61
|
+
)
|
38
62
|
end
|
39
63
|
end
|
40
64
|
|
@@ -42,9 +66,25 @@ module BigcommerceOrderAgent
|
|
42
66
|
def get_shipping_addresses(order_id, params = {})
|
43
67
|
begin
|
44
68
|
response = client.get(uri({ order_id: order_id }, 'shipping_addresses'), params)
|
45
|
-
|
69
|
+
|
70
|
+
addresses = response.body
|
71
|
+
|
72
|
+
addresses.each do |addr|
|
73
|
+
addr['state_code'] = get_region_code(addr)
|
74
|
+
end
|
75
|
+
|
76
|
+
return addresses
|
46
77
|
rescue Faraday::Error => e
|
47
|
-
raise BigcommerceApiError.new(
|
78
|
+
raise BigcommerceApiError.new(
|
79
|
+
e.response[:status],
|
80
|
+
'get order shipping address',
|
81
|
+
"Failed to get order shipping address #{order_id}",
|
82
|
+
order_id,
|
83
|
+
{
|
84
|
+
errors: JSON.parse(e.response[:body])['errors']
|
85
|
+
},
|
86
|
+
e
|
87
|
+
)
|
48
88
|
end
|
49
89
|
end
|
50
90
|
|
@@ -54,7 +94,16 @@ module BigcommerceOrderAgent
|
|
54
94
|
response = client.get(uri({ order_id: order_id }, 'shipments'), params)
|
55
95
|
return response.body
|
56
96
|
rescue Faraday::Error => e
|
57
|
-
raise BigcommerceApiError.new(
|
97
|
+
raise BigcommerceApiError.new(
|
98
|
+
e.response[:status],
|
99
|
+
'get order shipments',
|
100
|
+
"Failed to get order shipments #{order_id}",
|
101
|
+
order_id,
|
102
|
+
{
|
103
|
+
errors: JSON.parse(e.response[:body])['errors']
|
104
|
+
},
|
105
|
+
e
|
106
|
+
)
|
58
107
|
end
|
59
108
|
end
|
60
109
|
|
@@ -64,7 +113,15 @@ module BigcommerceOrderAgent
|
|
64
113
|
response = client.get(uri({ order_id: order_id }, 'coupons'), params)
|
65
114
|
return response.body
|
66
115
|
rescue Faraday::Error => e
|
67
|
-
raise BigcommerceApiError.new(
|
116
|
+
raise BigcommerceApiError.new(
|
117
|
+
e.response[:status],
|
118
|
+
'get order coupons',
|
119
|
+
"Failed to get order coupons #{order_id}",
|
120
|
+
order_id,
|
121
|
+
{
|
122
|
+
errors: JSON.parse(e.response[:body])['errors']
|
123
|
+
},
|
124
|
+
e
|
68
125
|
)
|
69
126
|
end
|
70
127
|
end
|
@@ -75,9 +132,26 @@ module BigcommerceOrderAgent
|
|
75
132
|
response = client.get(uri({ api_version: 'v3', order_id: order_id }, 'transactions'), params)
|
76
133
|
return response.body['data']
|
77
134
|
rescue Faraday::Error => e
|
78
|
-
raise BigcommerceApiError.new(
|
135
|
+
raise BigcommerceApiError.new(
|
136
|
+
e.response[:status],
|
137
|
+
'get order transactions',
|
138
|
+
"Failed to get order transactions #{order_id}",
|
139
|
+
order_id,
|
140
|
+
{
|
141
|
+
errors: JSON.parse(e.response[:body])['errors']
|
142
|
+
},
|
143
|
+
e
|
144
|
+
)
|
79
145
|
end
|
80
146
|
end
|
147
|
+
|
148
|
+
# Returns the region (state) code for the provided address
|
149
|
+
def get_region_code(address)
|
150
|
+
country = Country.named(address['country'])
|
151
|
+
state = country.subregions.named(address['state'])
|
152
|
+
|
153
|
+
return state.code
|
154
|
+
end
|
81
155
|
end
|
82
156
|
end
|
83
157
|
end
|
@@ -1,10 +1,13 @@
|
|
1
1
|
class BigcommerceApiError < StandardError
|
2
|
-
attr_reader :scope, :data, :original_error
|
2
|
+
attr_reader :status, :scope, :identifier, :data, :original_error
|
3
3
|
|
4
|
-
def initialize(scope, data, original_error)
|
4
|
+
def initialize(status, scope, message, identifier, data, original_error)
|
5
|
+
@status = status
|
5
6
|
@scope = scope
|
7
|
+
@identifier = identifier
|
6
8
|
@data = data
|
7
9
|
@original_error = original_error
|
8
|
-
|
10
|
+
|
11
|
+
super(message)
|
9
12
|
end
|
10
13
|
end
|
@@ -148,14 +148,16 @@ module Agents
|
|
148
148
|
)
|
149
149
|
|
150
150
|
rescue BigcommerceApiError => e
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
151
|
+
emit_error(e)
|
152
|
+
rescue => e
|
153
|
+
emit_error(BigcommerceApiError.new(
|
154
|
+
500,
|
155
|
+
'get order by id',
|
156
|
+
e.message,
|
157
|
+
order_id,
|
158
|
+
{ order_id: order_id },
|
159
|
+
e
|
160
|
+
))
|
159
161
|
end
|
160
162
|
|
161
163
|
end
|
@@ -176,5 +178,22 @@ module Agents
|
|
176
178
|
)
|
177
179
|
end
|
178
180
|
|
181
|
+
# Takes a BigCommerceProductError and emits the underlying data as an error payload
|
182
|
+
# to assist with error reporting. It is recommended that these errors be consolidated
|
183
|
+
# with a Digest Agent and reported as a summary.
|
184
|
+
def emit_error(error)
|
185
|
+
payload = {
|
186
|
+
status: error.status,
|
187
|
+
message: error.message,
|
188
|
+
scope: error.scope,
|
189
|
+
identifier: error.identifier,
|
190
|
+
data: error.data,
|
191
|
+
}
|
192
|
+
Rails.logger.debug({
|
193
|
+
error: payload,
|
194
|
+
trace: error.backtrace
|
195
|
+
})
|
196
|
+
create_event({ payload: payload })
|
197
|
+
end
|
179
198
|
end
|
180
199
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: huginn_bigcommerce_order_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 5 Stones
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|