janio_api 0.3.4 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec588d4ddedcb71c4d1038732fe2db5864cacc915b2d4f0e257feedafd5916d7
4
- data.tar.gz: ccb59b3ec045bcd86029fbd301e909a2919a94c000f1e098f780a9e99ccf53f2
3
+ metadata.gz: 2a01c1c92ad1aa9f4b1b72fd6991aa51d14bd8802587edfb213b911ee7d98821
4
+ data.tar.gz: 4fcb1948a614241a02c1c5f2051f7b235fe6745a0e58bccdbb4e4790a6e393af
5
5
  SHA512:
6
- metadata.gz: 868e7843a0cfdfa019f48fc2eaf0df991e2aeb0369e012aa2cb2407c53cc3865b1fc5f83f6fae8ac6b42e00ee945edf8014be90b00a5ada8f41adc9740549857
7
- data.tar.gz: d946eca197b5186140ba4741cd90cbdbd15b44b66da94d2ceb54edf4be9d7a5a2013551a8d476d3f5cd55e1db87e572781e19bbb443ac37e44eb672dd23d3fe9
6
+ metadata.gz: 721d00f159ad57d14a48989f09554099cdf7308c6d983e15914a1c0263d4f98284506d3b832982caa49f205ab08457dee11f6969e92fd64c770a7528f6ab6d52
7
+ data.tar.gz: 717bc65c6f9048e8e732aba4374ec5e5c3594552a48562a69d79772ff363168d92470dbf47a627712220bc79bd41b6842658e942be7f116fde10f0a9d8bcb273
data/.gitignore CHANGED
@@ -6,8 +6,10 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /Gemfile.lock
10
+ /.vscode
9
11
 
10
12
  # rspec failure tracking
11
13
  .rspec_status
12
14
  .env
13
- .pryrc
15
+ .pryrc
@@ -26,9 +26,9 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- spec.add_dependency "activeresource"
30
- spec.add_dependency "countries"
31
- spec.add_dependency "phonelib"
29
+ spec.add_dependency "activeresource", "~> 5.0"
30
+ spec.add_dependency "countries", "~> 3.0"
31
+ spec.add_dependency "phonelib", "~> 0.6"
32
32
 
33
33
  spec.add_development_dependency "rspec", "~> 3.2"
34
34
  spec.add_development_dependency "dotenv"
@@ -10,6 +10,7 @@ loader.collapse("./lib/janio_api/resources")
10
10
  loader.ignore("#{__dir__}/config.rb")
11
11
  loader.ignore("./lib/janio_api/exceptions.rb")
12
12
  loader.ignore("./lib/janio_api/services_list.rb")
13
+ loader.ignore("./lib/janio_api/postal_code_regex_list.rb")
13
14
  loader.enable_reloading
14
15
  # loader.log!
15
16
  loader.setup
@@ -6,6 +6,7 @@ module JanioAPI
6
6
  require "countries"
7
7
 
8
8
  require "janio_api/services_list"
9
+ require "janio_api/postal_code_regex_list"
9
10
 
10
11
  require "janio_api/configuration"
11
12
 
@@ -13,9 +13,9 @@ module JanioAPI
13
13
  }
14
14
  handle_response(result)
15
15
  rescue Timeout::Error => e
16
- raise TimeoutError.new(e.message)
16
+ raise ActiveResource::TimeoutError.new(e.message)
17
17
  rescue OpenSSL::SSL::SSLError => e
18
- raise SSLError.new(e.message)
18
+ raise ActiveResource::SSLError.new(e.message)
19
19
  end
20
20
  end
21
21
  end
@@ -0,0 +1,190 @@
1
+ module JanioAPI
2
+ POSTAL_CODE_REGEX = {
3
+ AC: "^(ASCN 1ZZ)$",
4
+ AD: "^(?:AD)*(\\d{3})$",
5
+ AF: "^(\\d{4})$",
6
+ AG: "^(\\d{5})$",
7
+ AI: "^(AI-2640)$",
8
+ AL: "^(\\d{4})$",
9
+ AM: "^(\\d{4})$",
10
+ AQ: "^(7151)$",
11
+ AR: "^([A-Z]\\d{4}[A-Z]{3})|([A-Z]?\\d{4})$",
12
+ AS: "^(\\d{5})$",
13
+ AT: "^(\\d{4})$",
14
+ AU: "^(\\d{4})$",
15
+ AW: "^(0000 AW)$",
16
+ AX: "^(\\d{5})$",
17
+ AZ: "^(AZ) (\\d{4})$",
18
+ BA: "^(\\d{5})$",
19
+ BB: "^(?:BB)*(\\d{5})$",
20
+ BD: "^(\\d{4})$",
21
+ BE: "^(\\d{4})$",
22
+ BG: "^(\\d{4})$",
23
+ BH: "^(\\d{3}\\d?)$",
24
+ BL: "^(\\d{5})$",
25
+ BM: "^([A-Z]{2} \\d{2})$",
26
+ BN: "^([A-Z]{2}\\d{4})$",
27
+ BQ: "^(0000 BQ)$",
28
+ BR: "^[0-9]{5}-[0-9]{3}$",
29
+ BT: "^(\\d{5})$",
30
+ BY: "^(\\d{6})$",
31
+ CA: "^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] +?[0-9][A-Z][0-9]$",
32
+ CC: "^(6799 W3)$",
33
+ CH: "^(\\d{4})$",
34
+ CL: "^(\\d{7})$",
35
+ CN: "^(\\d{6})$",
36
+ CO: "^(\\d{6})$",
37
+ CR: "^(\\d{5})$",
38
+ CU: "^(?:CP)*(\\d{5})$",
39
+ CV: "^(\\d{4})$",
40
+ CW: "^(0000 CW)$",
41
+ CX: "^(6978)$",
42
+ CY: "^(\\d{4})$",
43
+ CZ: "^[0-9]{3} [0-9]{2}$",
44
+ DE: "^(\\d{5})$",
45
+ DK: "^(\\d{4})$",
46
+ DO: "^(\\d{5})$",
47
+ DZ: "^(\\d{5})$",
48
+ EC: "^(\\d{6})$",
49
+ EE: "^(\\d{5})$",
50
+ EG: "^(\\d{5})$",
51
+ EH: "^(\\d{5})$",
52
+ ES: "^(\\d{5})$",
53
+ ET: "^(\\d{4})$",
54
+ FI: "^(?:FI)*(\\d{5})$",
55
+ FK: "^(FIQQ 1ZZ)$",
56
+ FM: "^(\\d{5})$",
57
+ FO: "^(?:FO)*(\\d{3})$",
58
+ FR: "^(\\d{5})$",
59
+ GB: "^(((([A-PR-UWYZ][0-9][0-9A-HJKS-UW]?)|([A-PR-UWYZ][A-HK-Y][0-9][0-9ABEHMNPRV-Y]?))\\s{0,2}[0-9]([ABD-HJLNP-UW-Z]{2}))|(GIR\\s{0,2}0AA))$",
60
+ GE: "^(\\d{4})$",
61
+ GF: "^((973)\\d{2})$",
62
+ GG: "((GY)([0-9][0-9A-HJKPS-UW]?|[A-HK-Y][0-9][0-9ABEHMNPRV-Y]?) [0-9][ABD-HJLNP-UW-Z]{2})",
63
+ GI: "^(GX11 1AA)$",
64
+ GL: "^(\\d{4})$",
65
+ GN: "^(\\d{3})$",
66
+ GP: "^((971)[0-9][0-0])$",
67
+ GR: "^(\\d{3}) \\d{2}$",
68
+ GS: "^(SIQQ 1ZZ)$",
69
+ GT: "^(\\d{5})$",
70
+ GU: "^((969)[1-3][0-2])$",
71
+ GW: "^(\\d{4})$",
72
+ HK: "^(999077)$",
73
+ HM: "^(7151)$",
74
+ HN: "^(\\d{5})$",
75
+ HR: "^(?:HR)*(\\d{5})$",
76
+ HT: "^(?:HT)*(\\d{4})$",
77
+ HU: "^(\\d{4})$",
78
+ ID: "^(\\d{5})$",
79
+ IE: "^[A-NP-Z\\d]{3}\\s[A-NP-Z\\d]{4}",
80
+ IL: "^(\\d{5})$",
81
+ IM: "((IM)([0-9][0-9A-HJKPS-UW]?|[A-HK-Y][0-9][0-9ABEHMNPRV-Y]?) [0-9][ABD-HJLNP-UW-Z]{2})",
82
+ IN: "^(\\d{6})$",
83
+ IO: "^(BB9D 1ZZ)$",
84
+ IQ: "^(\\d{5})$",
85
+ IR: "^\\d{5}([\\-]\\d{5})?$",
86
+ IS: "^(\\d{3})$",
87
+ IT: "^(\\d{5})$",
88
+ JE: "(JE)([0-9]\\d{1})",
89
+ JM: "^((JM)[A-Z]{3,3}\\d{2,2})$",
90
+ JO: "^(\\d{5})$",
91
+ JP: "^(\\d{3}-\\d{4})$",
92
+ KE: "^(\\d{5})$",
93
+ KG: "^(\\d{6})$",
94
+ KH: "^(\\d{5})$",
95
+ KR: "^(\\d{3}[-]\\d{3})$",
96
+ KW: "^(\\d{5})$",
97
+ KY: "^[K][Y][0-9]{1}[-]([0-9]){4}$",
98
+ KZ: "^(\\d{6})$",
99
+ LA: "^(\\d{5})$",
100
+ LB: "^(\\d{4}(\\d{4})?)$",
101
+ LI: "^(\\d{4})$",
102
+ LK: "^(\\d{5})$",
103
+ LR: "^(\\d{4})$",
104
+ LS: "^(\\d{3})$",
105
+ LT: "^(?:LT)*(\\d{5})$",
106
+ LU: "^(\\d{4})$",
107
+ LV: "^[L]{1}[V]{1}[-]([0-9]){4}$",
108
+ LY: "^(\\d{5})$",
109
+ MA: "^(\\d{5})$",
110
+ MC: "^(\\d{5})$",
111
+ MD: "^(?:MD)*(\\d{4})$",
112
+ ME: "^(\\d{5})$",
113
+ MF: "^(\\d{5})$",
114
+ MG: "^(\\d{3})$",
115
+ MH: "^((969)[6-7][0-9])$",
116
+ MK: "^(\\d{4})$",
117
+ MM: "^(\\d{5})$",
118
+ MN: "^(\\d{5})$",
119
+ MP: "^(\\d{5})$",
120
+ MQ: "^(\\d{5})$",
121
+ MT: "^[A-Z]{3} [0-9]{4}$",
122
+ MU: "^([0-9A-Z]\\d{4})$",
123
+ MV: "^(\\d{5})$",
124
+ MX: "^(\\d{5})$",
125
+ MY: "^(\\d{5})$",
126
+ MZ: "^(\\d{4})$",
127
+ NC: "^(\\d{5})$",
128
+ NE: "^(\\d{4})$",
129
+ NF: "^(2899)$",
130
+ NG: "^(\\d{6})$",
131
+ NI: "^(\\d{5})$",
132
+ NL: "[0-9]{4} ?[A-Z]{2}",
133
+ NO: "^(\\d{4})$",
134
+ NP: "^(\\d{5})$",
135
+ NZ: "^(\\d{4})$",
136
+ OM: "^(\\d{3})$",
137
+ PE: "^(\\d{5})$",
138
+ PF: "^((987)\\d{2})$",
139
+ PG: "^(\\d{3})$",
140
+ PH: "^(\\d{4})$",
141
+ PK: "^(\\d{5})$",
142
+ PL: "^[0-9]{2}[-]([0-9]){3}$",
143
+ PM: "^(\\d{5})$",
144
+ PN: "^(PCR9 1ZZ)$",
145
+ PR: "^\\d{5}((-|\\s)?\\d{4})?$",
146
+ PS: "^(\\d{5})$",
147
+ PT: "^\\d{4}((-|\\s)?\\d{3})?$",
148
+ PW: "^(96940)$",
149
+ PY: "^(\\d{4})$",
150
+ RE: "[9]{1}[7|8][4|7|8]\\d{2}",
151
+ RO: "^(\\d{6})$",
152
+ RS: "^(\\d{5})$",
153
+ RU: "^(\\d{6})$",
154
+ SA: "^(\\d{5})$",
155
+ SD: "^(\\d{5})$",
156
+ SE: "^(\\d{3} \\d{2})$",
157
+ SG: "^(\\d{6})$",
158
+ SH: "^[A-Z]{4} (1ZZ)$",
159
+ SI: "^(\\d{4})$",
160
+ SJ: "^(\\d{4})$",
161
+ SK: "^(\\d{3} \\d{2})$",
162
+ SM: "^(4789\\d)$",
163
+ SN: "^(\\d{5})$",
164
+ SS: "^(\\d{5})$",
165
+ SV: "^(01101)$",
166
+ SX: "^(0000 AA)$",
167
+ SZ: "^([A-Z]\\d{3})$",
168
+ TC: "^(TKCA 1ZZ)$",
169
+ TD: "^(\\d{5})$",
170
+ TF: "^((984)\\d{2})$",
171
+ TH: "^(\\d{5})$",
172
+ TJ: "^(\\d{3})$",
173
+ TM: "^(\\d{6})$",
174
+ TN: "^(\\d{4})$",
175
+ TR: "^(\\d{5})$",
176
+ TW: "^(\\d{3} \\d{2})|(\\d{3})$",
177
+ UA: "^(\\d{5})$",
178
+ US: "^\\d{5}([\\-]\\d{4})?$",
179
+ UY: "^(\\d{5})$",
180
+ UZ: "^(\\d{6})$",
181
+ VC: "(VC)(\\d{4})",
182
+ VE: "^(\\d{4})$",
183
+ VG: "^(VG11)[0-6][0]$",
184
+ VI: "^(\\d{5})$",
185
+ VN: "^(\\d{6})$",
186
+ YT: "^(\\d{5})$",
187
+ ZA: "^(\\d{4})$",
188
+ ZM: "^(\\d{5})$"
189
+ }
190
+ end
@@ -4,16 +4,17 @@ module JanioAPI
4
4
  self.include_format_in_path = false
5
5
  self.connection_class = JanioAPI::Connection
6
6
 
7
- class << self
8
- def headers
9
- if _headers_defined?
10
- _headers
11
- elsif superclass != Object && superclass.headers
12
- superclass.headers
13
- else
14
- _headers ||= {}
15
- end
7
+ def initialize(attributes = {}, persisted = false)
8
+ # check if config host and api token is set
9
+ unless JanioAPI.config.api_tokens || JanioAPI.config.api_token
10
+ raise ArgumentError, "JanioAPI api_token/api_tokens is missing, please set it in the config."
16
11
  end
12
+
13
+ unless JanioAPI.config.api_host
14
+ raise ArgumentError, "JanioAPI api_host is missing, please set it in the config."
15
+ end
16
+
17
+ super
17
18
  end
18
19
  end
19
20
  end
@@ -17,6 +17,7 @@ module JanioAPI
17
17
 
18
18
  SUPPORTED_PICKUP_COUNTRIES = SERVICES.map { |s| s[:pickup_country] }.uniq.freeze
19
19
  SUPPORTED_CONSIGNEE_COUNTRIES = SERVICES.map { |s| s[:consignee_country] }.uniq.freeze
20
+ PICKUP_DATE_ACCEPTED_COUNTRIES = ["Singapore"]
20
21
 
21
22
  POSTAL_EXCLUDED_COUNTRIES = ["Hong Kong", "Vietnam", "Brunei"].freeze
22
23
  VALID_PAYMENT_TYPES = ["cod", "prepaid"].freeze
@@ -59,8 +60,10 @@ module JanioAPI
59
60
 
60
61
  validates :service_id, :order_length, :order_width, :order_height, :order_weight,
61
62
  :consignee_name, :consignee_country, :consignee_address, :consignee_state, :consignee_email,
62
- :pickup_contact_name, :pickup_country, :pickup_address, :pickup_state, :pickup_date, presence: true
63
+ :pickup_contact_name, :pickup_country, :pickup_address, :pickup_state, presence: true
63
64
 
65
+ validates :pickup_date, presence: true, if: -> { PICKUP_DATE_ACCEPTED_COUNTRIES.include?(pickup_country) }
66
+ validates :pickup_date, absence: true, if: -> { !PICKUP_DATE_ACCEPTED_COUNTRIES.include?(pickup_country) }
64
67
  validates :pickup_country, inclusion: {
65
68
  in: SUPPORTED_PICKUP_COUNTRIES,
66
69
  message: "%{value} is not a supported pickup country, supported countries are #{SUPPORTED_PICKUP_COUNTRIES.join(", ")}"
@@ -69,14 +72,14 @@ module JanioAPI
69
72
  in: SUPPORTED_CONSIGNEE_COUNTRIES,
70
73
  message: "%{value} is not a supported consignee country, supported countries are #{SUPPORTED_CONSIGNEE_COUNTRIES.join(", ")}"
71
74
  }
72
- validates :consignee_postal, presence: true, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(consignee_country) }
73
- validates :pickup_postal, presence: true, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(pickup_country) }
74
75
  validates :payment_type, inclusion: {
75
76
  in: VALID_PAYMENT_TYPES,
76
77
  message: "%{value} is not a valid payment type, valid payment types are #{VALID_PAYMENT_TYPES.join(", ")}"
77
78
  }
78
79
  validates :cod_amount_to_collect, presence: true, if: -> { payment_type == "cod" }
79
80
  validates :items, length: {minimum: 1, message: "are required. Please add at least one."}
81
+ validate :pickup_postal_valid?, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(pickup_country) }
82
+ validate :consignee_postal_valid?, unless: -> { POSTAL_EXCLUDED_COUNTRIES.include?(consignee_country) }
80
83
  validate :pickup_contact_number_country_matched?
81
84
  validate :consignee_number_country_matched?
82
85
  validate :items_validation
@@ -115,25 +118,44 @@ module JanioAPI
115
118
  #
116
119
  # Check http://apidocs.janio.asia/track for more information
117
120
  def track(tracking_nos)
118
- raise ArgumentError, "tracking_nos not an array" unless tracking_nos.is_a?(Array)
121
+ raise ArgumentError, "tracking_nos must be an array" unless tracking_nos.is_a?(Array)
119
122
 
120
123
  body = {
121
124
  get_related_updates: true,
122
- flatten_data: true,
125
+ flatten_data: false,
123
126
  tracking_nos: tracking_nos
124
127
  }
125
- response = connection.post(tracking_path, body.to_json, headers)
128
+
129
+ retries = 0
130
+ begin
131
+ retries += 1
132
+ response = connection.post(tracking_path, body.to_json, headers)
133
+ rescue ActiveResource::ConnectionError => e
134
+ retry unless retries <= 5
135
+ raise e
136
+ end
126
137
 
127
138
  self.format.decode(response.body)
128
139
  end
129
140
  end
130
141
 
131
142
  def initialize(attributes = {}, persisted = false)
143
+ if attributes[:pickup_date].is_a?(ActiveSupport::TimeWithZone)
144
+ attributes[:pickup_date] = attributes[:pickup_date].strftime("%Y-%-m-%-d")
145
+ end
132
146
  attributes = DEFAULT_ATTRS.merge(attributes)
133
147
  super
134
148
  set_service_id
135
149
  end
136
150
 
151
+ def pickup_date=(date)
152
+ @attributes[:pickup_date] = if date.is_a?(ActiveSupport::TimeWithZone) || date.is_a?(Time)
153
+ date.strftime("%Y-%-m-%-d")
154
+ else
155
+ date
156
+ end
157
+ end
158
+
137
159
  def get_service_id(service_category = "pickup")
138
160
  # only check with services offering pickup by default
139
161
  SERVICES.find do |s|
@@ -156,6 +178,7 @@ module JanioAPI
156
178
  flatten_data: true,
157
179
  tracking_nos: [@attributes[:tracking_no]]
158
180
  }
181
+
159
182
  response = connection.post(self.class.tracking_path, body.to_json, self.class.headers)
160
183
  self.class.format.decode(response.body)[0]
161
184
  end
@@ -168,22 +191,42 @@ module JanioAPI
168
191
 
169
192
  private
170
193
 
194
+ def pickup_country_code
195
+ ISO3166::Country.find_country_by_name(pickup_country)&.alpha2
196
+ end
197
+
198
+ def consignee_country_code
199
+ ISO3166::Country.find_country_by_name(consignee_country)&.alpha2
200
+ end
201
+
202
+ def pickup_postal_valid?
203
+ if pickup_country_code
204
+ regex = Regexp.new(POSTAL_CODE_REGEX[pickup_country_code.to_sym])
205
+ errors.add(:pickup_postal, "is invalid, must match #{regex.inspect}") unless regex.match(pickup_postal)
206
+ end
207
+ end
208
+
209
+ def consignee_postal_valid?
210
+ if consignee_country_code && POSTAL_CODE_REGEX[consignee_country_code.to_sym]
211
+ regex = Regexp.new(POSTAL_CODE_REGEX[consignee_country_code.to_sym])
212
+ errors.add(:consignee_postal, "is invalid, must match #{regex.inspect}") unless regex.match(consignee_postal)
213
+ end
214
+ end
215
+
171
216
  def pickup_contact_number_country_matched?
172
- country_code = ISO3166::Country.find_country_by_name(pickup_country)&.alpha2
173
- if Phonelib.invalid_for_country? pickup_contact_number, country_code
217
+ if Phonelib.invalid_for_country?(pickup_contact_number, pickup_country_code)
174
218
  errors.add(
175
219
  :pickup_contact_number,
176
- "is invalid, please make sure the phone's country code matches the pickup address's country"
220
+ "is invalid, please make sure the phone is valid and phone's country code matches the pickup address's country"
177
221
  )
178
222
  end
179
223
  end
180
224
 
181
225
  def consignee_number_country_matched?
182
- country_code = ISO3166::Country.find_country_by_name(consignee_country)&.alpha2
183
- if Phonelib.invalid_for_country? consignee_number, country_code
226
+ if Phonelib.invalid_for_country?(consignee_number, consignee_country_code)
184
227
  errors.add(
185
228
  :consignee_number,
186
- "is invalid, please make sure the phone's country code matches the consignee address's country"
229
+ "is invalid, please make sure the phone is valid and phone's country code matches the consignee address's country"
187
230
  )
188
231
  end
189
232
  end
@@ -234,7 +277,7 @@ module JanioAPI
234
277
  elsif JanioAPI.config.api_token
235
278
  JanioAPI.config.api_token
236
279
  else
237
- throw ArgumentError.new("JanioAPI api_token is missing, please set it in the config.")
280
+ raise ArgumentError, "JanioAPI api_token/api_tokens is missing, please set it in the config."
238
281
  end
239
282
  end
240
283
 
@@ -1,3 +1,3 @@
1
1
  module JanioAPI
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.9"
3
3
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: janio_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.9
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-05-15 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '5.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: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: countries
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3.0'
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: '0'
40
+ version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: phonelib
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '0.6'
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: '0'
54
+ version: '0.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -135,7 +135,6 @@ files:
135
135
  - ".travis.yml"
136
136
  - CODE_OF_CONDUCT.md
137
137
  - Gemfile
138
- - Gemfile.lock
139
138
  - Guardfile
140
139
  - LICENSE.txt
141
140
  - README.md
@@ -148,6 +147,7 @@ files:
148
147
  - lib/janio_api.rb
149
148
  - lib/janio_api/configuration.rb
150
149
  - lib/janio_api/connection.rb
150
+ - lib/janio_api/postal_code_regex_list.rb
151
151
  - lib/janio_api/redirect_fetcher.rb
152
152
  - lib/janio_api/resources/base.rb
153
153
  - lib/janio_api/resources/item.rb
@@ -1,113 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- janio_api (0.3.4)
5
- activeresource
6
- countries
7
- phonelib
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activemodel (6.0.2.2)
13
- activesupport (= 6.0.2.2)
14
- activemodel-serializers-xml (1.0.2)
15
- activemodel (> 5.x)
16
- activesupport (> 5.x)
17
- builder (~> 3.1)
18
- activeresource (5.1.0)
19
- activemodel (>= 5.0, < 7)
20
- activemodel-serializers-xml (~> 1.0)
21
- activesupport (>= 5.0, < 7)
22
- activesupport (6.0.2.2)
23
- concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 0.7, < 2)
25
- minitest (~> 5.1)
26
- tzinfo (~> 1.1)
27
- zeitwerk (~> 2.2)
28
- builder (3.2.4)
29
- byebug (11.1.1)
30
- coderay (1.1.2)
31
- concurrent-ruby (1.1.6)
32
- countries (3.0.0)
33
- i18n_data (~> 0.8.0)
34
- sixarm_ruby_unaccent (~> 1.1)
35
- unicode_utils (~> 1.4)
36
- diff-lcs (1.3)
37
- dotenv (2.7.5)
38
- ffi (1.12.2)
39
- formatador (0.2.5)
40
- guard (2.16.2)
41
- formatador (>= 0.2.4)
42
- listen (>= 2.7, < 4.0)
43
- lumberjack (>= 1.0.12, < 2.0)
44
- nenv (~> 0.1)
45
- notiffany (~> 0.0)
46
- pry (>= 0.9.12)
47
- shellany (~> 0.0)
48
- thor (>= 0.18.1)
49
- guard-compat (1.2.1)
50
- guard-rspec (4.7.3)
51
- guard (~> 2.1)
52
- guard-compat (~> 1.1)
53
- rspec (>= 2.99.0, < 4.0)
54
- i18n (1.8.2)
55
- concurrent-ruby (~> 1.0)
56
- i18n_data (0.8.0)
57
- listen (3.2.1)
58
- rb-fsevent (~> 0.10, >= 0.10.3)
59
- rb-inotify (~> 0.9, >= 0.9.10)
60
- lumberjack (1.2.4)
61
- method_source (1.0.0)
62
- minitest (5.14.0)
63
- nenv (0.3.0)
64
- notiffany (0.1.3)
65
- nenv (~> 0.1)
66
- shellany (~> 0.0)
67
- phonelib (0.6.43)
68
- pry (0.13.1)
69
- coderay (~> 1.1)
70
- method_source (~> 1.0)
71
- pry-byebug (3.9.0)
72
- byebug (~> 11.0)
73
- pry (~> 0.13.0)
74
- rake (12.3.3)
75
- rb-fsevent (0.10.3)
76
- rb-inotify (0.10.1)
77
- ffi (~> 1.0)
78
- rspec (3.9.0)
79
- rspec-core (~> 3.9.0)
80
- rspec-expectations (~> 3.9.0)
81
- rspec-mocks (~> 3.9.0)
82
- rspec-core (3.9.1)
83
- rspec-support (~> 3.9.1)
84
- rspec-expectations (3.9.1)
85
- diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.9.0)
87
- rspec-mocks (3.9.1)
88
- diff-lcs (>= 1.2.0, < 2.0)
89
- rspec-support (~> 3.9.0)
90
- rspec-support (3.9.2)
91
- shellany (0.0.1)
92
- sixarm_ruby_unaccent (1.2.0)
93
- thor (1.0.1)
94
- thread_safe (0.3.6)
95
- tzinfo (1.2.7)
96
- thread_safe (~> 0.1)
97
- unicode_utils (1.4.0)
98
- zeitwerk (2.3.0)
99
-
100
- PLATFORMS
101
- ruby
102
-
103
- DEPENDENCIES
104
- dotenv
105
- guard-rspec
106
- janio_api!
107
- pry
108
- pry-byebug
109
- rake (~> 12.3)
110
- rspec (~> 3.2)
111
-
112
- BUNDLED WITH
113
- 2.1.4