janio_api 0.1.11 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/bin/console +1 -4
- data/lib/dev_config.rb +7 -0
- data/lib/janio_api/resources/order.rb +68 -11
- data/lib/janio_api/version.rb +1 -1
- data/lib/janio_api.rb +1 -1
- data/lib/patch_exception.rb +18 -0
- data/lib/zeitwerk_loader.rb +5 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f2e5b733830dbef549108d5c13cf4393e74c82e50183728f3f553bdf4434a99
|
4
|
+
data.tar.gz: c0f92b02cdc5d0d0df9ed0b7dab082695488928697c948fe61a01e7ca36191b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b2a4c8145c67f5b2e082881c044ff48b4c95fb39de9b5e77800c140c77b3fc0ab35acf88d1fc1a278383269fadcfe68326ced6c3c19caf6fe30f17bf050f025
|
7
|
+
data.tar.gz: 5a2fa08310d2cd3968dcf81df2211d3f3075262af22e339f54163b3e878e7220827fe266f9a0afe2bae1b155e241adcd6de80885683c46b9943129dac18d3082
|
data/Gemfile.lock
CHANGED
data/bin/console
CHANGED
@@ -5,10 +5,7 @@ require "janio_api"
|
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
config.api_host = ENV["API_HOST"]
|
10
|
-
config.api_token = ENV["API_TOKEN"]
|
11
|
-
end
|
8
|
+
require "dev_config"
|
12
9
|
|
13
10
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
14
11
|
require "pry"
|
data/lib/dev_config.rb
ADDED
@@ -15,29 +15,71 @@ module JanioAPI
|
|
15
15
|
|
16
16
|
self.collection_parser = Collection
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
SUPPORTED_PICKUP_COUNTRIES = ["Singapore", "China", "Hong Kong", "Indonesia", "Malaysia", "Philippines", "Thailand"].freeze
|
19
|
+
SUPPORTED_CONSIGNEE_COUNTRIES = ["Indonesia", "Singapore", "Thailand", "Malaysia", "Philippines", "China", "Hong Kong", "Taiwan", "Brunei", "South Korea", "Japan", "Vietnam"].freeze
|
20
20
|
|
21
21
|
POSTAL_EXCLUDED_COUNTRIES = ["Hong Kong", "Vietnam"].freeze
|
22
22
|
VALID_PAYMENT_TYPES = ["cod", "prepaid"].freeze
|
23
23
|
|
24
|
+
SERVICE_ID_MAP = [
|
25
|
+
{id: 1, from: "Singapore", to: "Indonesia"},
|
26
|
+
{id: 6, from: "China", to: "Indonesia"},
|
27
|
+
{id: 5, from: "China", to: "Singapore"},
|
28
|
+
{id: 7, from: "China", to: "Thailand"},
|
29
|
+
{id: 11, from: "Hong Kong", to: "Indonesia"},
|
30
|
+
{id: 37, from: "Hong Kong", to: "Malaysia"},
|
31
|
+
{id: 33, from: "Hong Kong", to: "Philippines"},
|
32
|
+
{id: 13, from: "Hong Kong", to: "Singapore"},
|
33
|
+
{id: 12, from: "Hong Kong", to: "Thailand"},
|
34
|
+
{id: 41, from: "Indonesia", to: "China"},
|
35
|
+
{id: 41, from: "Indonesia", to: "Hong Kong"},
|
36
|
+
{id: 41, from: "Indonesia", to: "Taiwan"},
|
37
|
+
{id: 41, from: "Indonesia", to: "Brunei"},
|
38
|
+
{id: 41, from: "Indonesia", to: "Philippines"},
|
39
|
+
{id: 41, from: "Indonesia", to: "Malaysia"},
|
40
|
+
{id: 3, from: "Indonesia", to: "Indonesia"},
|
41
|
+
{id: 47, from: "Indonesia", to: "Philippines"},
|
42
|
+
{id: 54, from: "Indonesia", to: "Philippines"},
|
43
|
+
{id: 20, from: "Indonesia", to: "Singapore"},
|
44
|
+
{id: 48, from: "Indonesia", to: "Singapore"},
|
45
|
+
{id: 22, from: "Indonesia", to: "South Korea"},
|
46
|
+
{id: 22, from: "Indonesia", to: "Japan"},
|
47
|
+
{id: 22, from: "Indonesia", to: "Vietnam"},
|
48
|
+
{id: 4, from: "Malaysia", to: "Indonesia"},
|
49
|
+
{id: 40, from: "Malaysia", to: "Malaysia"},
|
50
|
+
{id: 36, from: "Philippines", to: "Philippines"},
|
51
|
+
{id: 2, from: "Singapore", to: "China"},
|
52
|
+
{id: 2, from: "Singapore", to: "Taiwan"},
|
53
|
+
{id: 2, from: "Singapore", to: "South Korea"},
|
54
|
+
{id: 2, from: "Singapore", to: "Brunei"},
|
55
|
+
{id: 2, from: "Singapore", to: "Vietnam"},
|
56
|
+
{id: 2, from: "Singapore", to: "Hong Kong"},
|
57
|
+
{id: 2, from: "Singapore", to: "Japan"},
|
58
|
+
{id: 26, from: "Singapore", to: "Malaysia"},
|
59
|
+
{id: 10, from: "Singapore", to: "Singapore"},
|
60
|
+
{id: 17, from: "Singapore", to: "Thailand"},
|
61
|
+
{id: 34, from: "Thailand", to: "Indonesia"},
|
62
|
+
{id: 35, from: "Thailand", to: "Singapore"}
|
63
|
+
].freeze
|
64
|
+
|
24
65
|
self.prefix = "/api/order/orders/"
|
25
66
|
self.element_name = ""
|
26
67
|
|
27
68
|
has_many :items, class_name: "JanioAPI::Item"
|
28
69
|
|
29
|
-
validates :service_id, :order_length, :order_width, :order_height, :order_weight,
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:pickup_state, :pickup_city, :pickup_province, :pickup_date, :pickup_notes, presence: true
|
70
|
+
validates :service_id, :order_length, :order_width, :order_height, :order_weight, :cod_amount_to_collect, :consignee_name, :consignee_number, :consignee_country,
|
71
|
+
:consignee_address, :consignee_state, :consignee_email, :pickup_contact_name, :pickup_contact_number, :pickup_country, :pickup_address,
|
72
|
+
:pickup_state, :pickup_date, presence: true
|
33
73
|
|
34
|
-
validates :pickup_country,
|
74
|
+
validates :pickup_country, inclusion: {in: SUPPORTED_PICKUP_COUNTRIES, message: "%{value} is not a supported pickup country, supported countries are #{SUPPORTED_PICKUP_COUNTRIES.join(", ")}"}
|
75
|
+
validates :consignee_country, inclusion: {in: SUPPORTED_CONSIGNEE_COUNTRIES, message: "%{value} is not a supported consignee country, supported countries are #{SUPPORTED_CONSIGNEE_COUNTRIES.join(", ")}"}
|
35
76
|
validates :pickup_postal, :consignee_postal, presence: true, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(consignee_country) }
|
36
77
|
validates :pickup_postal, presence: true, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(pickup_country) }
|
37
78
|
validates :payment_type, inclusion: {in: VALID_PAYMENT_TYPES, message: "%{value} is not a valid payment type, valid payment types are #{VALID_PAYMENT_TYPES.join(", ")}"}
|
38
79
|
validates :cod_amount_to_collect, presence: true, if: -> { payment_type == "cod" }
|
39
80
|
validates :items, length: {minimum: 1, message: "are required. Please add at least one."}
|
40
81
|
validate :items_validation
|
82
|
+
validate :route_supported?
|
41
83
|
|
42
84
|
class << self
|
43
85
|
def tracking_path
|
@@ -119,6 +161,15 @@ module JanioAPI
|
|
119
161
|
}
|
120
162
|
attributes = default_attrs.merge(attributes)
|
121
163
|
super
|
164
|
+
set_service_id
|
165
|
+
end
|
166
|
+
|
167
|
+
def get_service_id
|
168
|
+
SERVICE_ID_MAP.find { |route| route[:from] == pickup_country && route[:to] == consignee_country }&.dig(:id)
|
169
|
+
end
|
170
|
+
|
171
|
+
def set_service_id
|
172
|
+
@attributes[:service_id] = get_service_id
|
122
173
|
end
|
123
174
|
|
124
175
|
# Tracks the current order
|
@@ -128,7 +179,7 @@ module JanioAPI
|
|
128
179
|
body = {
|
129
180
|
get_related_updates: true,
|
130
181
|
flatten_data: true,
|
131
|
-
tracking_nos: [@attributes[
|
182
|
+
tracking_nos: [@attributes[:tracking_no]]
|
132
183
|
}
|
133
184
|
response = connection.post(self.class.tracking_path, body.to_json, self.class.headers)
|
134
185
|
self.class.format.decode(response.body)[0]
|
@@ -142,6 +193,12 @@ module JanioAPI
|
|
142
193
|
|
143
194
|
private
|
144
195
|
|
196
|
+
def route_supported?
|
197
|
+
unless set_service_id
|
198
|
+
errors.add(:route, "not supported, if new route not available in service_id_map, please contact gem author.")
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
145
202
|
def items_validation
|
146
203
|
items&.each_with_index do |item, index|
|
147
204
|
item.errors.full_messages.each { |msg| errors.add("item_#{index}".to_sym, msg) } unless item.valid?
|
@@ -168,11 +225,11 @@ module JanioAPI
|
|
168
225
|
def reformat_before_save(blocking)
|
169
226
|
attributes = @attributes.dup
|
170
227
|
@attributes.clear
|
171
|
-
@attributes[
|
228
|
+
@attributes[:secret_key] = JanioAPI.config.api_token
|
172
229
|
# set blocking until label generated
|
173
|
-
@attributes[
|
230
|
+
@attributes[:blocking] = blocking
|
174
231
|
# reformat attributes
|
175
|
-
@attributes[
|
232
|
+
@attributes[:orders] = [attributes]
|
176
233
|
end
|
177
234
|
|
178
235
|
def reset_attributes_format
|
data/lib/janio_api/version.rb
CHANGED
data/lib/janio_api.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module ActiveResource
|
2
|
+
class ConnectionError < StandardError # :nodoc:
|
3
|
+
attr_reader :response
|
4
|
+
|
5
|
+
def initialize(response, message = nil)
|
6
|
+
@response = response
|
7
|
+
@message = message
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_s
|
11
|
+
message = "Failed.".dup
|
12
|
+
message << " Response code = #{response.code}." if response.respond_to?(:code)
|
13
|
+
message << " Response message = #{response.message}." if response.respond_to?(:message)
|
14
|
+
message << " Response body = #{response.body}." if response.respond_to?(:body)
|
15
|
+
message
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/zeitwerk_loader.rb
CHANGED
@@ -5,11 +5,15 @@ loader.inflector.inflect(
|
|
5
5
|
"janio_api" => "JanioAPI"
|
6
6
|
)
|
7
7
|
loader.collapse("./lib/janio_api/resources")
|
8
|
+
loader.ignore("#{__dir__}/dev_config.rb")
|
8
9
|
loader.enable_reloading
|
9
|
-
loader.tag = "janio_api_gem"
|
10
10
|
# loader.log!
|
11
11
|
loader.setup
|
12
|
+
|
12
13
|
$__janio_api_loader__ = loader
|
14
|
+
|
13
15
|
def reload!
|
14
16
|
$__janio_api_loader__.reload
|
17
|
+
set_config
|
18
|
+
true
|
15
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: janio_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Chong
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- bin/console
|
100
100
|
- bin/setup
|
101
101
|
- janio_api.gemspec
|
102
|
+
- lib/dev_config.rb
|
102
103
|
- lib/janio_api.rb
|
103
104
|
- lib/janio_api/configuration.rb
|
104
105
|
- lib/janio_api/connection.rb
|
@@ -107,6 +108,7 @@ files:
|
|
107
108
|
- lib/janio_api/resources/item.rb
|
108
109
|
- lib/janio_api/resources/order.rb
|
109
110
|
- lib/janio_api/version.rb
|
111
|
+
- lib/patch_exception.rb
|
110
112
|
- lib/zeitwerk_loader.rb
|
111
113
|
homepage: https://github.com/PostCo/janio_api
|
112
114
|
licenses:
|