aftership-tracking-sdk 11.0.0 → 13.0.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.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/README.md +146 -106
  4. data/aftership-tracking-sdk.gemspec +0 -1
  5. data/lib/aftership-tracking-sdk/api/courier.rb +46 -57
  6. data/lib/aftership-tracking-sdk/api/courier_connection.rb +105 -131
  7. data/lib/aftership-tracking-sdk/api/estimated_delivery_date.rb +30 -44
  8. data/lib/aftership-tracking-sdk/api/tracking.rb +171 -208
  9. data/lib/aftership-tracking-sdk/api_client.rb +9 -34
  10. data/lib/aftership-tracking-sdk/configuration.rb +106 -108
  11. data/lib/aftership-tracking-sdk/error.rb +10 -18
  12. data/lib/aftership-tracking-sdk/models/additional_fields.rb +1 -2
  13. data/lib/aftership-tracking-sdk/models/checkpoint.rb +23 -25
  14. data/lib/aftership-tracking-sdk/models/{coordinate_checkpoint.rb → checkpoint_coordinate.rb} +4 -6
  15. data/lib/aftership-tracking-sdk/models/{events_checkpoint.rb → checkpoint_events.rb} +6 -8
  16. data/lib/aftership-tracking-sdk/models/{reason_events_checkpoint.rb → checkpoint_events_reason.rb} +3 -5
  17. data/lib/aftership-tracking-sdk/models/checkpoint_source.rb +26 -0
  18. data/lib/aftership-tracking-sdk/models/courier.rb +17 -19
  19. data/lib/aftership-tracking-sdk/models/courier_connection.rb +5 -7
  20. data/lib/aftership-tracking-sdk/models/courier_connection_response_for_get_courier_connections.rb +4 -6
  21. data/lib/aftership-tracking-sdk/models/{data_courier_connection_response_for_get_courier_connections.rb → courier_connection_response_for_get_courier_connections_data.rb} +6 -8
  22. data/lib/aftership-tracking-sdk/models/{pagination_data_courier_connection_response_for_get_courier_connections.rb → courier_connection_response_for_get_courier_connections_data_pagination.rb} +5 -7
  23. data/lib/aftership-tracking-sdk/models/{credentials_courier.rb → courier_credentials.rb} +3 -5
  24. data/lib/aftership-tracking-sdk/models/courier_response.rb +4 -6
  25. data/lib/aftership-tracking-sdk/models/{data_courier_response.rb → courier_response_data.rb} +4 -6
  26. data/lib/aftership-tracking-sdk/models/create_tracking_request.rb +44 -46
  27. data/lib/aftership-tracking-sdk/models/{customers_create_tracking_request.rb → create_tracking_request_customers.rb} +7 -9
  28. data/lib/aftership-tracking-sdk/models/create_tracking_request_delivery_type.rb +27 -0
  29. data/lib/aftership-tracking-sdk/models/{last_mile_create_tracking_request.rb → create_tracking_request_last_mile.rb} +4 -6
  30. data/lib/aftership-tracking-sdk/models/create_tracking_response.rb +3 -887
  31. data/lib/aftership-tracking-sdk/models/credential_field.rb +3 -5
  32. data/lib/aftership-tracking-sdk/models/delete_courier_connections_by_id_response.rb +3 -187
  33. data/lib/aftership-tracking-sdk/models/delete_tracking_by_id_response.rb +3 -887
  34. data/lib/aftership-tracking-sdk/models/detect_courier_request.rb +12 -14
  35. data/lib/aftership-tracking-sdk/models/detect_courier_response.rb +3 -157
  36. data/lib/aftership-tracking-sdk/models/detect_courier_response_data.rb +161 -0
  37. data/lib/aftership-tracking-sdk/models/estimated_delivery_date_request.rb +16 -18
  38. data/lib/aftership-tracking-sdk/models/{destination_address_predict_request.rb → estimated_delivery_date_request_destination_address.rb} +7 -9
  39. data/lib/aftership-tracking-sdk/models/{estimated_pickup_predict_request.rb → estimated_delivery_date_request_estimated_pickup.rb} +8 -10
  40. data/lib/aftership-tracking-sdk/models/{order_processing_time_estimated_pickup_predict_request.rb → estimated_delivery_date_request_estimated_pickup_order_processing_time.rb} +4 -6
  41. data/lib/aftership-tracking-sdk/models/{origin_address_predict_request.rb → estimated_delivery_date_request_origin_address.rb} +7 -9
  42. data/lib/aftership-tracking-sdk/models/{weight_estimated_delivery_date_request.rb → estimated_delivery_date_request_weight.rb} +4 -6
  43. data/lib/aftership-tracking-sdk/models/estimated_delivery_date_response.rb +21 -23
  44. data/lib/aftership-tracking-sdk/models/{destination_address_predict_response.rb → estimated_delivery_date_response_destination_address.rb} +7 -9
  45. data/lib/aftership-tracking-sdk/models/{estimated_pickup_predict_response.rb → estimated_delivery_date_response_estimated_pickup.rb} +9 -11
  46. data/lib/aftership-tracking-sdk/models/{order_processing_time_estimated_pickup_predict_response.rb → estimated_delivery_date_response_estimated_pickup_order_processing_time.rb} +4 -6
  47. data/lib/aftership-tracking-sdk/models/{origin_address_predict_response.rb → estimated_delivery_date_response_origin_address.rb} +7 -9
  48. data/lib/aftership-tracking-sdk/models/{weight_predict_response.rb → estimated_delivery_date_response_weight.rb} +4 -6
  49. data/lib/aftership-tracking-sdk/models/get_courier_connections_by_id_response.rb +3 -187
  50. data/lib/aftership-tracking-sdk/models/get_courier_connections_response.rb +3 -157
  51. data/lib/aftership-tracking-sdk/models/{carbon_emissions_mark_tracking_completed_by_id_response.rb → get_courier_connections_response_data.rb} +18 -20
  52. data/lib/aftership-tracking-sdk/models/{pagination_get_courier_connections_response.rb → get_courier_connections_response_data_pagination.rb} +5 -7
  53. data/lib/aftership-tracking-sdk/models/get_couriers_response.rb +3 -157
  54. data/lib/aftership-tracking-sdk/models/get_couriers_response_data.rb +161 -0
  55. data/lib/aftership-tracking-sdk/models/get_tracking_by_id_response.rb +3 -887
  56. data/lib/aftership-tracking-sdk/models/get_trackings_response.rb +3 -157
  57. data/lib/aftership-tracking-sdk/models/{carbon_emissions_delete_tracking_by_id_response.rb → get_trackings_response_data.rb} +18 -20
  58. data/lib/aftership-tracking-sdk/models/{pagination_get_trackings_response.rb → get_trackings_response_data_pagination.rb} +5 -7
  59. data/lib/aftership-tracking-sdk/models/mark_tracking_completed_by_id_request.rb +4 -6
  60. data/lib/aftership-tracking-sdk/models/mark_tracking_completed_by_id_request_reason.rb +27 -0
  61. data/lib/aftership-tracking-sdk/models/mark_tracking_completed_by_id_response.rb +3 -887
  62. data/lib/aftership-tracking-sdk/models/meta.rb +5 -7
  63. data/lib/aftership-tracking-sdk/models/meta_type.rb +30 -0
  64. data/lib/aftership-tracking-sdk/models/post_courier_connections_request.rb +2 -4
  65. data/lib/aftership-tracking-sdk/models/post_courier_connections_response.rb +3 -187
  66. data/lib/aftership-tracking-sdk/models/predict_batch_request.rb +1 -3
  67. data/lib/aftership-tracking-sdk/models/predict_batch_response.rb +3 -147
  68. data/lib/aftership-tracking-sdk/models/{weight_predict_request.rb → predict_batch_response_data.rb} +10 -22
  69. data/lib/aftership-tracking-sdk/models/predict_response.rb +3 -267
  70. data/lib/aftership-tracking-sdk/models/put_courier_connections_by_id_request.rb +1 -3
  71. data/lib/aftership-tracking-sdk/models/put_courier_connections_by_id_response.rb +3 -187
  72. data/lib/aftership-tracking-sdk/models/retrack_tracking_by_id_response.rb +3 -887
  73. data/lib/aftership-tracking-sdk/models/tag.rb +6 -7
  74. data/lib/aftership-tracking-sdk/models/tracking.rb +97 -99
  75. data/lib/aftership-tracking-sdk/models/{aftership_estimated_delivery_date_tracking.rb → tracking_aftership_estimated_delivery_date.rb} +6 -8
  76. data/lib/aftership-tracking-sdk/models/{carbon_emissions_tracking.rb → tracking_carbon_emissions.rb} +4 -6
  77. data/lib/aftership-tracking-sdk/models/{courier_estimated_delivery_date_tracking.rb → tracking_courier_estimated_delivery_date.rb} +5 -7
  78. data/lib/aftership-tracking-sdk/models/{custom_estimated_delivery_date_create_tracking_response.rb → tracking_custom_estimated_delivery_date.rb} +8 -10
  79. data/lib/aftership-tracking-sdk/models/tracking_custom_estimated_delivery_date_type.rb +26 -0
  80. data/lib/aftership-tracking-sdk/models/{customers_tracking.rb → tracking_customers.rb} +7 -9
  81. data/lib/aftership-tracking-sdk/models/{first_estimated_delivery_tracking.rb → tracking_first_estimated_delivery.rb} +11 -13
  82. data/lib/aftership-tracking-sdk/models/tracking_first_estimated_delivery_source.rb +28 -0
  83. data/lib/aftership-tracking-sdk/models/tracking_first_estimated_delivery_type.rb +26 -0
  84. data/lib/aftership-tracking-sdk/models/{first_mile_tracking.rb → tracking_first_mile.rb} +7 -9
  85. data/lib/aftership-tracking-sdk/models/{last_mile_tracking.rb → tracking_last_mile.rb} +10 -12
  86. data/lib/aftership-tracking-sdk/models/tracking_last_mile_source.rb +26 -0
  87. data/lib/aftership-tracking-sdk/models/{latest_estimated_delivery_tracking.rb → tracking_latest_estimated_delivery.rb} +13 -15
  88. data/lib/aftership-tracking-sdk/models/tracking_latest_estimated_delivery_source.rb +28 -0
  89. data/lib/aftership-tracking-sdk/models/tracking_latest_estimated_delivery_type.rb +26 -0
  90. data/lib/aftership-tracking-sdk/models/tracking_response.rb +2 -4
  91. data/lib/aftership-tracking-sdk/models/tracking_response_for_get_trackings.rb +4 -6
  92. data/lib/aftership-tracking-sdk/models/{data_tracking_response_for_get_trackings.rb → tracking_response_for_get_trackings_data.rb} +6 -8
  93. data/lib/aftership-tracking-sdk/models/{pagination_data_tracking_response_for_get_trackings.rb → tracking_response_for_get_trackings_data_pagination.rb} +5 -7
  94. data/lib/aftership-tracking-sdk/models/{shipment_weight_tracking.rb → tracking_shipment_weight.rb} +4 -6
  95. data/lib/aftership-tracking-sdk/models/tracking_signature_requirement.rb +29 -0
  96. data/lib/aftership-tracking-sdk/models/update_tracking_by_id_request.rb +34 -36
  97. data/lib/aftership-tracking-sdk/models/{customers_update_tracking_by_id_request.rb → update_tracking_by_id_request_customers.rb} +7 -9
  98. data/lib/aftership-tracking-sdk/models/update_tracking_by_id_request_delivery_type.rb +27 -0
  99. data/lib/aftership-tracking-sdk/models/update_tracking_by_id_response.rb +3 -887
  100. data/lib/aftership-tracking-sdk/sign_string.rb +2 -2
  101. data/lib/aftership-tracking-sdk/version.rb +1 -1
  102. metadata +53 -109
  103. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_create_tracking_response.rb +0 -183
  104. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_delete_tracking_by_id_response.rb +0 -183
  105. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_get_tracking_by_id_response.rb +0 -183
  106. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_mark_tracking_completed_by_id_response.rb +0 -183
  107. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_retrack_tracking_by_id_response.rb +0 -183
  108. data/lib/aftership-tracking-sdk/models/aftership_estimated_delivery_date_update_tracking_by_id_response.rb +0 -183
  109. data/lib/aftership-tracking-sdk/models/carbon_emissions_create_tracking_response.rb +0 -163
  110. data/lib/aftership-tracking-sdk/models/carbon_emissions_get_tracking_by_id_response.rb +0 -163
  111. data/lib/aftership-tracking-sdk/models/carbon_emissions_retrack_tracking_by_id_response.rb +0 -163
  112. data/lib/aftership-tracking-sdk/models/carbon_emissions_update_tracking_by_id_response.rb +0 -163
  113. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_create_tracking_response.rb +0 -173
  114. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_delete_tracking_by_id_response.rb +0 -173
  115. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_get_tracking_by_id_response.rb +0 -173
  116. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_mark_tracking_completed_by_id_response.rb +0 -173
  117. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_retrack_tracking_by_id_response.rb +0 -173
  118. data/lib/aftership-tracking-sdk/models/courier_estimated_delivery_date_update_tracking_by_id_response.rb +0 -173
  119. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_delete_tracking_by_id_response.rb +0 -183
  120. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_get_tracking_by_id_response.rb +0 -183
  121. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_mark_tracking_completed_by_id_response.rb +0 -183
  122. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_retrack_tracking_by_id_response.rb +0 -183
  123. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_tracking.rb +0 -183
  124. data/lib/aftership-tracking-sdk/models/custom_estimated_delivery_date_update_tracking_by_id_response.rb +0 -183
  125. data/lib/aftership-tracking-sdk/models/customers_create_tracking_response.rb +0 -193
  126. data/lib/aftership-tracking-sdk/models/customers_delete_tracking_by_id_response.rb +0 -193
  127. data/lib/aftership-tracking-sdk/models/customers_get_tracking_by_id_response.rb +0 -193
  128. data/lib/aftership-tracking-sdk/models/customers_mark_tracking_completed_by_id_response.rb +0 -193
  129. data/lib/aftership-tracking-sdk/models/customers_retrack_tracking_by_id_response.rb +0 -193
  130. data/lib/aftership-tracking-sdk/models/customers_update_tracking_by_id_response.rb +0 -193
  131. data/lib/aftership-tracking-sdk/models/destination_address_estimated_delivery_date_request.rb +0 -193
  132. data/lib/aftership-tracking-sdk/models/destination_address_estimated_delivery_date_response.rb +0 -193
  133. data/lib/aftership-tracking-sdk/models/estimated_pickup_estimated_delivery_date_request.rb +0 -183
  134. data/lib/aftership-tracking-sdk/models/estimated_pickup_estimated_delivery_date_response.rb +0 -193
  135. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_create_tracking_response.rb +0 -193
  136. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_delete_tracking_by_id_response.rb +0 -193
  137. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_get_tracking_by_id_response.rb +0 -193
  138. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_mark_tracking_completed_by_id_response.rb +0 -193
  139. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_retrack_tracking_by_id_response.rb +0 -193
  140. data/lib/aftership-tracking-sdk/models/first_estimated_delivery_update_tracking_by_id_response.rb +0 -193
  141. data/lib/aftership-tracking-sdk/models/first_mile_create_tracking_response.rb +0 -193
  142. data/lib/aftership-tracking-sdk/models/first_mile_delete_tracking_by_id_response.rb +0 -193
  143. data/lib/aftership-tracking-sdk/models/first_mile_get_tracking_by_id_response.rb +0 -193
  144. data/lib/aftership-tracking-sdk/models/first_mile_mark_tracking_completed_by_id_response.rb +0 -193
  145. data/lib/aftership-tracking-sdk/models/first_mile_retrack_tracking_by_id_response.rb +0 -193
  146. data/lib/aftership-tracking-sdk/models/first_mile_update_tracking_by_id_response.rb +0 -193
  147. data/lib/aftership-tracking-sdk/models/last_mile_create_tracking_response.rb +0 -203
  148. data/lib/aftership-tracking-sdk/models/last_mile_delete_tracking_by_id_response.rb +0 -203
  149. data/lib/aftership-tracking-sdk/models/last_mile_get_tracking_by_id_response.rb +0 -203
  150. data/lib/aftership-tracking-sdk/models/last_mile_mark_tracking_completed_by_id_response.rb +0 -203
  151. data/lib/aftership-tracking-sdk/models/last_mile_retrack_tracking_by_id_response.rb +0 -203
  152. data/lib/aftership-tracking-sdk/models/last_mile_update_tracking_by_id_response.rb +0 -203
  153. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_create_tracking_response.rb +0 -203
  154. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_delete_tracking_by_id_response.rb +0 -203
  155. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_get_tracking_by_id_response.rb +0 -203
  156. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_mark_tracking_completed_by_id_response.rb +0 -203
  157. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_retrack_tracking_by_id_response.rb +0 -203
  158. data/lib/aftership-tracking-sdk/models/latest_estimated_delivery_update_tracking_by_id_response.rb +0 -203
  159. data/lib/aftership-tracking-sdk/models/order_processing_time_estimated_pickup_estimated_delivery_date_request.rb +0 -163
  160. data/lib/aftership-tracking-sdk/models/order_processing_time_estimated_pickup_estimated_delivery_date_response.rb +0 -163
  161. data/lib/aftership-tracking-sdk/models/origin_address_estimated_delivery_date_request.rb +0 -193
  162. data/lib/aftership-tracking-sdk/models/origin_address_estimated_delivery_date_response.rb +0 -193
  163. data/lib/aftership-tracking-sdk/models/pagination.rb +0 -164
  164. data/lib/aftership-tracking-sdk/models/predict_request.rb +0 -223
  165. data/lib/aftership-tracking-sdk/models/shipment_weight_create_tracking_response.rb +0 -163
  166. data/lib/aftership-tracking-sdk/models/shipment_weight_delete_tracking_by_id_response.rb +0 -163
  167. data/lib/aftership-tracking-sdk/models/shipment_weight_get_tracking_by_id_response.rb +0 -163
  168. data/lib/aftership-tracking-sdk/models/shipment_weight_mark_tracking_completed_by_id_response.rb +0 -163
  169. data/lib/aftership-tracking-sdk/models/shipment_weight_retrack_tracking_by_id_response.rb +0 -163
  170. data/lib/aftership-tracking-sdk/models/shipment_weight_update_tracking_by_id_response.rb +0 -163
  171. data/lib/aftership-tracking-sdk/models/slug_group.rb +0 -37
  172. data/lib/aftership-tracking-sdk/models/weight_estimated_delivery_date_response.rb +0 -163
@@ -44,7 +44,7 @@ module AftershipAPI
44
44
  begin
45
45
  call_api_internal(http_method, path, opts)
46
46
  rescue ApiError => e
47
- if retries > 0 && (e.error_code == AftershipAPI::TIMED_OUT || e.status_code >= 500 )
47
+ if retries > 0 && (e.error_code == AftershipAPI::TIMED_OUT || e.status_code >= 500)
48
48
  retries -= 1
49
49
  delay_with_jitter
50
50
  retry
@@ -61,6 +61,7 @@ module AftershipAPI
61
61
  end
62
62
 
63
63
  def call_api_internal(http_method, path, opts = {})
64
+ path = path.split('/').map { |part| URI.encode_www_form_component(part) }.join('/')
64
65
  request = build_request(http_method, path, opts)
65
66
  tempfile = download_file(request) if opts[:return_type] == 'File'
66
67
  response = request.run
@@ -89,7 +90,7 @@ module AftershipAPI
89
90
  if opts[:return_type] == 'File'
90
91
  data = tempfile
91
92
  elsif opts[:return_type]
92
- data = deserialize(response, opts[:return_type], opts[:response_legacy_tag], opts[:is_paging])
93
+ data = deserialize(response, opts[:return_type])
93
94
  else
94
95
  data = nil
95
96
  end
@@ -109,13 +110,11 @@ module AftershipAPI
109
110
  url = build_request_url(path, opts)
110
111
  http_method = http_method.to_sym.downcase
111
112
 
112
- header_params = @default_headers.merge(opts[:header_params] || {}).merge({'as-api-key' => config.as_api_key})
113
+ header_params = @default_headers.merge(opts[:header_params] || {}).merge({ 'as-api-key' => config.as_api_key })
113
114
  query_params = opts[:query_params] || {}
114
115
  form_params = opts[:form_params] || {}
115
116
  follow_location = opts[:follow_location] || true
116
117
 
117
- header_params['date'] = Time.now.httpdate
118
-
119
118
  req_opts = {
120
119
  :method => http_method,
121
120
  :headers => header_params,
@@ -139,17 +138,19 @@ module AftershipAPI
139
138
 
140
139
  if @config.authentication_type == AUTHENTICATION_TYPE_AES || @config.authentication_type == AUTHENTICATION_TYPE_RSA
141
140
  signature_header = @config.authentication_type == AUTHENTICATION_TYPE_AES ? "as-signature-hmac-sha256" : "as-signature-rsa-sha256"
141
+ date = Time.now.httpdate
142
142
  req_opts[:headers][signature_header] = SignString.sign({
143
143
  'method' => http_method,
144
144
  'headers' => req_opts[:headers],
145
145
  'body' => req_opts[:body] || '',
146
146
  'content_type' => header_params['Content-Type'],
147
- 'date' => header_params['date'],
147
+ 'date' => date,
148
148
  'url' => url,
149
149
  'query' => query_params,
150
150
  'auth_type' => @config.authentication_type,
151
151
  'secret' => @config.as_api_secret
152
152
  })
153
+ header_params['date'] = date
153
154
  end
154
155
 
155
156
  Typhoeus::Request.new(url, req_opts)
@@ -242,9 +243,7 @@ module AftershipAPI
242
243
  #
243
244
  # @param [Response] response HTTP response
244
245
  # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
245
- # @param [String] response_legacy_tag {tracking: Tracking{}} where response_legacy_tag is "tracking"
246
- # @param [Boolean] is_paging
247
- def deserialize(response, return_type, response_legacy_tag, is_paging)
246
+ def deserialize(response, return_type)
248
247
  body = response.body
249
248
  return nil if body.nil? || body.empty?
250
249
 
@@ -266,31 +265,7 @@ module AftershipAPI
266
265
  end
267
266
  end
268
267
 
269
- convert_to_type handle_data(response_legacy_tag, is_paging, data), return_type
270
- end
271
-
272
- def handle_data(response_legacy_tag, is_paging, data)
273
- if response_legacy_tag.to_s != "" && !is_paging
274
- return data[:data][response_legacy_tag.to_sym]
275
- end
276
-
277
- if response_legacy_tag.to_s != "" && is_paging
278
- pagination = {
279
- page: data[:data][:page],
280
- limit: data[:data][:limit],
281
- has_next_page: data[:data][:has_next_page],
282
- }
283
-
284
- total = data[:data][:total]
285
- total = data[:data][:count] if total.nil?
286
- pagination[:total] = total
287
- return {
288
- pagination: pagination,
289
- response_legacy_tag.to_sym => data[:data][response_legacy_tag.to_sym]
290
- }
291
- end
292
-
293
- data[:data]
268
+ convert_to_type data[:data], return_type
294
269
  end
295
270
 
296
271
  # Convert data to the given return type.
@@ -4,119 +4,117 @@ require 'uri'
4
4
  require 'typhoeus'
5
5
 
6
6
  module AftershipAPI
7
- AUTHENTICATION_TYPE_API_KEY = 'API_KEY'
8
- AUTHENTICATION_TYPE_AES = 'AES'
9
- AUTHENTICATION_TYPE_RSA = 'RSA'
10
-
11
- SDK_PREFIX = 'AFTERSHIP_TRACKING_SDK'
12
-
13
-
14
- class Configuration
15
- def get_env(key)
16
- ENV[SDK_PREFIX + '_' + key]
17
- end
18
-
19
- # Defines domain
20
- attr_accessor :domain
21
-
22
- # Defines the authentication type used in the API.
23
- #
24
- # @return ["API_KEY", "AES", "RSA"]
25
- attr_accessor :authentication_type
26
-
27
- # Defines API keys used with API Key authentications.
28
- #
29
- # @return [string]
30
- attr_accessor :as_api_key
31
-
32
- # Defines AES secret or RSA private key used with AES or RSA authentications.
33
- #
34
- # @return [string]
35
- attr_accessor :as_api_secret
36
-
37
- # Defines the user agent used in the API requests.
38
- # Default to 'aftership-sdk-ruby/$VERSION'
39
- #
40
- # @return [string]
41
- attr_accessor :user_agent
42
-
43
- # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
44
- # details will be logged with `logger.debug` (see the `logger` attribute).
45
- # Default to false.
46
- #
47
- # @return [true, false]
48
- attr_accessor :debugging
49
-
50
- # Defines the logger used for debugging.
51
- # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
52
- #
53
- # @return [#debug]
54
- attr_accessor :logger
55
-
56
- # The time limit for HTTP request in seconds.
57
- # Default to 30
58
- attr_accessor :timeout
59
-
60
- # When response is a retryable error, retry current request
61
- # Default to 2
62
- attr_accessor :max_retry
63
-
64
- # HTTP proxy
65
- attr_accessor :proxy
7
+ AUTHENTICATION_TYPE_API_KEY = 'API_KEY'
8
+ AUTHENTICATION_TYPE_AES = 'AES'
9
+ AUTHENTICATION_TYPE_RSA = 'RSA'
10
+
11
+ class Configuration
12
+ def get_env(key)
13
+ ENV["AFTERSHIP_TRACKING_SDK_" + key]
14
+ end
15
+
16
+ # Defines domain
17
+ attr_accessor :domain
18
+
19
+ # Defines the authentication type used in the API.
20
+ #
21
+ # @return ["API_KEY", "AES", "RSA"]
22
+ attr_accessor :authentication_type
23
+
24
+ # Defines API keys used with API Key authentications.
25
+ #
26
+ # @return [string]
27
+ attr_accessor :as_api_key
28
+
29
+ # Defines AES secret or RSA private key used with AES or RSA authentications.
30
+ #
31
+ # @return [string]
32
+ attr_accessor :as_api_secret
33
+
34
+ # Defines the user agent used in the API requests.
35
+ # Default to 'aftership-sdk-ruby/$VERSION'
36
+ #
37
+ # @return [string]
38
+ attr_accessor :user_agent
39
+
40
+ # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
41
+ # details will be logged with `logger.debug` (see the `logger` attribute).
42
+ # Default to false.
43
+ #
44
+ # @return [true, false]
45
+ attr_accessor :debugging
46
+
47
+ # Defines the logger used for debugging.
48
+ # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
49
+ #
50
+ # @return [#debug]
51
+ attr_accessor :logger
52
+
53
+ # The time limit for HTTP request in seconds.
54
+ # Default to 30
55
+ attr_accessor :timeout
56
+
57
+ # When response is a retryable error, retry current request
58
+ # Default to 2
59
+ attr_accessor :max_retry
60
+
61
+ # HTTP proxy
62
+ attr_accessor :proxy
66
63
 
67
- attr_accessor :aftership_client
64
+ attr_accessor :aftership_client
68
65
 
69
- attr_accessor :headers
66
+ attr_accessor :headers
70
67
 
71
68
 
72
- def initialize
73
- default_user_agent = "aftership-sdk-ruby/#{AftershipAPI::VERSION} (https://www.aftership.com) typhoeus/#{Typhoeus::VERSION}"
69
+ def initialize
70
+ default_user_agent = "aftership-sdk-ruby/#{AftershipAPI::VERSION} (https://www.aftership.com) typhoeus/#{Typhoeus::VERSION}"
74
71
 
75
- @domain = get_env('DOMAIN') || 'https://api.aftership.com'
76
- @authentication_type = get_env('AUTHENTICATION_TYPE') || AUTHENTICATION_TYPE_API_KEY
77
- @as_api_key = get_env('API_KEY') || ''
78
- @as_api_secret = get_env('API_SECRET') || ''
79
- @user_agent = get_env('USER_AGENT') || default_user_agent
80
- @aftership_client = default_user_agent
81
- @timeout = (get_env('TIMEOUT') || 30).to_i
82
- @max_retry = (get_env('MAX_RETRY') || 2).to_i
83
- @proxy = get_env('PROXY')
84
- @debugging = get_env('DEBUGGING') || false
85
- @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
86
- @headers = {}
72
+ @domain = get_env('DOMAIN') || 'https://api.aftership.com'
73
+ @authentication_type = get_env('AUTHENTICATION_TYPE') || AUTHENTICATION_TYPE_API_KEY
74
+ @as_api_key = get_env('API_KEY') || ''
75
+ @as_api_secret = get_env('API_SECRET') || ''
76
+ @user_agent = get_env('USER_AGENT') || default_user_agent
77
+ @aftership_client = default_user_agent
78
+ @timeout = (get_env('TIMEOUT') || 30).to_i
79
+ @max_retry = (get_env('MAX_RETRY') || 2).to_i
80
+ @proxy = get_env('PROXY')
81
+ @debugging = get_env('DEBUGGING') || false
82
+ @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
83
+ @headers = {}
87
84
 
88
- yield(self) if block_given?
89
- end
90
-
91
- # The default Configuration object.
92
- def self.default
93
- @@default ||= Configuration.new
94
- end
95
-
96
- def configure
97
- yield(self) if block_given?
98
- end
99
-
100
- def domain=(domain)
101
- @domain = domain.sub(/\/+\z/, '')
102
- end
103
-
104
- def check
105
- fail InvalidOptionError.new("Invalid authentication type: #{authentication_type}") unless [AUTHENTICATION_TYPE_API_KEY, AUTHENTICATION_TYPE_AES, AUTHENTICATION_TYPE_RSA].include?(authentication_type)
106
- fail InvalidOptionError.new("as_api_key cannot be empty") unless as_api_key.to_s.size > 0
107
- fail InvalidOptionError.new("Invalid base URL: #{domain}") unless valid_url?(domain)
108
- fail InvalidOptionError.new("authentication type must not be API_KEY if as_api_secret is set") if as_api_secret.to_s.size > 0 && authentication_type == AUTHENTICATION_TYPE_API_KEY
109
- fail InvalidOptionError.new("timeout cannot be negative, value #{timeout}") unless timeout.to_i >= 0
110
- fail InvalidOptionError.new("max_retry must be in range 0..10, value #{max_retry}") unless max_retry.to_i >= 0 and max_retry.to_i <=10
111
- fail InvalidOptionError.new("max_retry cannot be negative, value #{max_retry}") unless max_retry.to_i >= 0
112
- end
113
-
114
- def valid_url?(url)
115
- uri = URI.parse(url)
116
- uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS)
117
- rescue URI::InvalidURIError
118
- false
119
- end
120
- end
85
+ yield(self) if block_given?
86
+ end
87
+
88
+ # The default Configuration object.
89
+ def self.default
90
+ @@default ||= Configuration.new
91
+ end
92
+
93
+ def configure
94
+ yield(self) if block_given?
95
+ end
96
+
97
+ def domain=(domain)
98
+ @domain = domain.sub(/\/+\z/, '')
99
+ end
100
+
101
+ def check
102
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "Invalid authentication type: #{authentication_type}") unless [AUTHENTICATION_TYPE_API_KEY, AUTHENTICATION_TYPE_AES, AUTHENTICATION_TYPE_RSA].include?(authentication_type)
103
+ fail ApiError.new(:error_code => INVALID_API_KEY, :message => "Invalid API key") unless as_api_key.to_s.size > 0
104
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "Invalid base URL: #{domain}") unless valid_url?(domain)
105
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "authentication type must not be API_KEY if as_api_secret is set") if as_api_secret.to_s.size > 0 && authentication_type == AUTHENTICATION_TYPE_API_KEY
106
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "as_api_secret cannot be empty when authentication type is #{authentication_type}") if [AUTHENTICATION_TYPE_AES, AUTHENTICATION_TYPE_RSA].include?(authentication_type) && as_api_secret.to_s.size == 0
107
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "timeout cannot be negative, value #{timeout}") unless timeout.to_i >= 0
108
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "max_retry must be in range 0..10, value #{max_retry}") unless max_retry.to_i >= 0 and max_retry.to_i <= 10
109
+ fail ApiError.new(:error_code => INVALID_OPTION, :message => "max_retry cannot be negative, value #{max_retry}") unless max_retry.to_i >= 0
110
+ end
111
+
112
+ def valid_url?(url)
113
+ uri = URI.parse(url)
114
+ uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS)
115
+ rescue URI::InvalidURIError
116
+ false
117
+ end
121
118
  end
119
+ end
122
120
 
@@ -3,14 +3,12 @@
3
3
  require 'json'
4
4
 
5
5
  module AftershipAPI
6
- REQUEST_ERROR = 'REQUEST_ERROR'
7
-
8
- # Common AfterShipError
9
- INVALID_API_KEY = 'INVALID_API_KEY'.freeze
10
- INVALID_OPTION = 'INVALID_OPTION'.freeze
11
- RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED'.freeze
6
+ INVALID_API_KEY = "INVALID_API_KEY".freeze
7
+ INVALID_OPTION = "INVALID_OPTION".freeze
8
+ BAD_REQUEST = "BAD_REQUEST".freeze
9
+ RATE_LIMIT_EXCEED = "RATE_LIMIT_EXCEED".freeze
12
10
  TIMED_OUT = "TIMED_OUT".freeze
13
-
11
+ UNKNOWN_ERROR = "UNKNOWN_ERROR".freeze
14
12
  INVALID_REQUEST = "INVALID_REQUEST".freeze
15
13
  INVALID_JSON = "INVALID_JSON".freeze
16
14
  TRACKING_ALREADY_EXIST = "TRACKING_ALREADY_EXIST".freeze
@@ -24,7 +22,7 @@ module AftershipAPI
24
22
  MISSING_OR_INVALID_REQUIRED_FIELD = "MISSING_OR_INVALID_REQUIRED_FIELD".freeze
25
23
  BAD_COURIER = "BAD_COURIER".freeze
26
24
  INACTIVE_RETRACK_NOT_ALLOWED = "INACTIVE_RETRACK_NOT_ALLOWED".freeze
27
- NOTIFICATION_REUQIRED = "NOTIFICATION_REUQIRED".freeze
25
+ NOTIFICATION_REQUIRED = "NOTIFICATION_REQUIRED".freeze
28
26
  ID_INVALID = "ID_INVALID".freeze
29
27
  RETRACK_ONCE_ALLOWED = "RETRACK_ONCE_ALLOWED".freeze
30
28
  TRACKING_NUMBER_FORMAT_INVALID = "TRACKING_NUMBER_FORMAT_INVALID".freeze
@@ -49,7 +47,7 @@ module AftershipAPI
49
47
  4011 => MISSING_OR_INVALID_REQUIRED_FIELD,
50
48
  4012 => BAD_COURIER,
51
49
  4013 => INACTIVE_RETRACK_NOT_ALLOWED,
52
- 4014 => NOTIFICATION_REUQIRED,
50
+ 4014 => NOTIFICATION_REQUIRED,
53
51
  4015 => ID_INVALID,
54
52
  4016 => RETRACK_ONCE_ALLOWED,
55
53
  4017 => TRACKING_NUMBER_FORMAT_INVALID,
@@ -81,11 +79,11 @@ module AftershipAPI
81
79
  end
82
80
 
83
81
  response_body = JSON.parse(arg[:response_body], :symbolize_names => true) rescue nil
84
- @message = REQUEST_ERROR
82
+ @message = UNKNOWN_ERROR
85
83
  if response_body && response_body[:meta] && response_body[:meta][:code]
86
84
  @meta_code = response_body[:meta][:code]
87
- @error_code = ERROR_MAP[@meta_code] || REQUEST_ERROR
88
- @message = response_body[:meta][:message] || REQUEST_ERROR
85
+ @error_code = ERROR_MAP[@meta_code] || ((arg[:status_code] || arg['status_code'])&.between?(400, 499) ? BAD_REQUEST : UNKNOWN_ERROR)
86
+ @message = response_body[:meta][:message] || UNKNOWN_ERROR
89
87
  end
90
88
  arg.each do |k, v|
91
89
  instance_variable_set "@#{k}", v
@@ -116,10 +114,4 @@ module AftershipAPI
116
114
  msg
117
115
  end
118
116
  end
119
-
120
- class InvalidOptionError < StandardError
121
- end
122
-
123
- class InvalidParamError < StandardError
124
- end
125
117
  end
@@ -1,6 +1,5 @@
1
1
  # This code was auto generated by AfterShip SDK Generator.
2
2
  # Do not edit the class manually.
3
-
4
3
  module AftershipAPI::Model
5
4
  class AdditionalFields
6
5
  TRACKING_ACCOUNT_NUMBER = "tracking_account_number".freeze
@@ -11,7 +10,7 @@ module AftershipAPI::Model
11
10
  DESTINATION_COUNTRY_REGION = "destination_country_region".freeze
12
11
  TRACKING_SHIP_DATE = "tracking_ship_date".freeze
13
12
  def self.all_vars
14
- @all_vars ||= [TRACKING_ACCOUNT_NUMBER,DESTINATION_POSTAL_CODE,DESTINATION_STATE,TRACKING_KEY,ORIGIN_COUNTRY_REGION,DESTINATION_COUNTRY_REGION,TRACKING_SHIP_DATE,].freeze
13
+ @all_vars ||= [TRACKING_ACCOUNT_NUMBER, DESTINATION_POSTAL_CODE, DESTINATION_STATE, TRACKING_KEY, ORIGIN_COUNTRY_REGION, DESTINATION_COUNTRY_REGION, TRACKING_SHIP_DATE,].freeze
15
14
  end
16
15
 
17
16
  # Builds the enum from string
@@ -2,7 +2,6 @@
2
2
  # Do not edit the class manually.
3
3
  module AftershipAPI::Model
4
4
  class Checkpoint
5
-
6
5
  # The date and time of the checkpoint event was added to AfterShip. It uses the format `YYYY-MM-DDTHH:mm:ssZ` for the timezone GMT +0.
7
6
  # created_at?: String;
8
7
  attr_accessor :created_at
@@ -32,7 +31,7 @@ module AftershipAPI::Model
32
31
  attr_accessor :zip
33
32
 
34
33
  # The latitude and longitude coordinates indicate the precise location of the shipments that are currently in transit.
35
- # coordinate?: CoordinateCheckpoint;
34
+ # coordinate?: CheckpointCoordinate;
36
35
  attr_accessor :coordinate
37
36
 
38
37
  # Country/Region ISO Alpha-3 (three letters) of the checkpoint
@@ -64,11 +63,11 @@ module AftershipAPI::Model
64
63
  attr_accessor :raw_tag
65
64
 
66
65
  # The array provides details about specific event(s) that occurred to a shipment, such as "returned_to_sender". You can find the full list of events and reasons </span>- The events' value for the same checkpoint message is subject to change as we consistently strive to enhance the performance of this feature.
67
- # events?: EventsCheckpoint[];
66
+ # events?: CheckpointEvents[];
68
67
  attr_accessor :events
69
68
 
70
69
  # The source of the checkpoint, which can either be from the carrier or when the user marks the tracking as completed.
71
- # source?: String;
70
+ # source?: CheckpointSource;
72
71
  attr_accessor :source
73
72
 
74
73
  # Initializes the object
@@ -84,71 +83,71 @@ module AftershipAPI::Model
84
83
 
85
84
  if attributes.key?(:'created_at')
86
85
  self.created_at = attributes[:'created_at']
87
- end
86
+ end
88
87
 
89
88
  if attributes.key?(:'slug')
90
89
  self.slug = attributes[:'slug']
91
- end
90
+ end
92
91
 
93
92
  if attributes.key?(:'checkpoint_time')
94
93
  self.checkpoint_time = attributes[:'checkpoint_time']
95
- end
94
+ end
96
95
 
97
96
  if attributes.key?(:'location')
98
97
  self.location = attributes[:'location']
99
- end
98
+ end
100
99
 
101
100
  if attributes.key?(:'city')
102
101
  self.city = attributes[:'city']
103
- end
102
+ end
104
103
 
105
104
  if attributes.key?(:'state')
106
105
  self.state = attributes[:'state']
107
- end
106
+ end
108
107
 
109
108
  if attributes.key?(:'zip')
110
109
  self.zip = attributes[:'zip']
111
- end
110
+ end
112
111
 
113
112
  if attributes.key?(:'coordinate')
114
113
  self.coordinate = attributes[:'coordinate']
115
- end
114
+ end
116
115
 
117
116
  if attributes.key?(:'country_region')
118
117
  self.country_region = attributes[:'country_region']
119
- end
118
+ end
120
119
 
121
120
  if attributes.key?(:'country_region_name')
122
121
  self.country_region_name = attributes[:'country_region_name']
123
- end
122
+ end
124
123
 
125
124
  if attributes.key?(:'message')
126
125
  self.message = attributes[:'message']
127
- end
126
+ end
128
127
 
129
128
  if attributes.key?(:'tag')
130
129
  self.tag = attributes[:'tag']
131
- end
130
+ end
132
131
 
133
132
  if attributes.key?(:'subtag')
134
133
  self.subtag = attributes[:'subtag']
135
- end
134
+ end
136
135
 
137
136
  if attributes.key?(:'subtag_message')
138
137
  self.subtag_message = attributes[:'subtag_message']
139
- end
138
+ end
140
139
 
141
140
  if attributes.key?(:'raw_tag')
142
141
  self.raw_tag = attributes[:'raw_tag']
143
- end
142
+ end
144
143
 
145
144
  if attributes.key?(:'events')
146
145
  self.events = attributes[:'events']
147
- end
146
+ end
148
147
 
149
148
  if attributes.key?(:'source')
150
149
  self.source = attributes[:'source']
151
- end
150
+ end
152
151
  end
153
152
 
154
153
  # Attribute type mapping.
@@ -161,7 +160,7 @@ module AftershipAPI::Model
161
160
  :'city' => :'String',
162
161
  :'state' => :'String',
163
162
  :'zip' => :'String',
164
- :'coordinate' => :'CoordinateCheckpoint',
163
+ :'coordinate' => :'CheckpointCoordinate',
165
164
  :'country_region' => :'String',
166
165
  :'country_region_name' => :'String',
167
166
  :'message' => :'String',
@@ -169,8 +168,8 @@ module AftershipAPI::Model
169
168
  :'subtag' => :'String',
170
169
  :'subtag_message' => :'String',
171
170
  :'raw_tag' => :'String',
172
- :'events' => :'Array<EventsCheckpoint>',
173
- :'source' => :'String',
171
+ :'events' => :'Array<CheckpointEvents>',
172
+ :'source' => :'CheckpointSource',
174
173
  }
175
174
  end
176
175
 
@@ -310,4 +309,3 @@ module AftershipAPI::Model
310
309
  end
311
310
  end
312
311
  end
313
-
@@ -1,8 +1,7 @@
1
1
  # This code was auto generated by AfterShip SDK Generator.
2
2
  # Do not edit the class manually.
3
3
  module AftershipAPI::Model
4
- class CoordinateCheckpoint
5
-
4
+ class CheckpointCoordinate
6
5
  # Represents the latitude.
7
6
  # latitude?: Float;
8
7
  attr_accessor :latitude
@@ -15,7 +14,7 @@ module AftershipAPI::Model
15
14
  # @param [Hash] attributes Model attributes in the form of hash
16
15
  def initialize(attributes = {})
17
16
  if (!attributes.is_a?(Hash))
18
- fail ArgumentError, "The input argument (attributes) must be a hash in `AftershipAPI::CoordinateCheckpoint` initialize method"
17
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AftershipAPI::CheckpointCoordinate` initialize method"
19
18
  end
20
19
 
21
20
  attributes = attributes.each_with_object({}) { |(k, v), h|
@@ -24,11 +23,11 @@ module AftershipAPI::Model
24
23
 
25
24
  if attributes.key?(:'latitude')
26
25
  self.latitude = attributes[:'latitude']
27
- end
26
+ end
28
27
 
29
28
  if attributes.key?(:'longitude')
30
29
  self.longitude = attributes[:'longitude']
31
- end
30
+ end
32
31
  end
33
32
 
34
33
  # Attribute type mapping.
@@ -160,4 +159,3 @@ module AftershipAPI::Model
160
159
  end
161
160
  end
162
161
  end
163
-
@@ -1,21 +1,20 @@
1
1
  # This code was auto generated by AfterShip SDK Generator.
2
2
  # Do not edit the class manually.
3
3
  module AftershipAPI::Model
4
- class EventsCheckpoint
5
-
4
+ class CheckpointEvents
6
5
  # Represents the event code.
7
6
  # code?: String;
8
7
  attr_accessor :code
9
8
 
10
9
  # Describes the specific reason that led to the event.
11
- # reason?: ReasonEventsCheckpoint;
10
+ # reason?: CheckpointEventsReason;
12
11
  attr_accessor :reason
13
12
 
14
13
  # Initializes the object
15
14
  # @param [Hash] attributes Model attributes in the form of hash
16
15
  def initialize(attributes = {})
17
16
  if (!attributes.is_a?(Hash))
18
- fail ArgumentError, "The input argument (attributes) must be a hash in `AftershipAPI::EventsCheckpoint` initialize method"
17
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AftershipAPI::CheckpointEvents` initialize method"
19
18
  end
20
19
 
21
20
  attributes = attributes.each_with_object({}) { |(k, v), h|
@@ -24,18 +23,18 @@ module AftershipAPI::Model
24
23
 
25
24
  if attributes.key?(:'code')
26
25
  self.code = attributes[:'code']
27
- end
26
+ end
28
27
 
29
28
  if attributes.key?(:'reason')
30
29
  self.reason = attributes[:'reason']
31
- end
30
+ end
32
31
  end
33
32
 
34
33
  # Attribute type mapping.
35
34
  def self.openapi_types
36
35
  {
37
36
  :'code' => :'String',
38
- :'reason' => :'ReasonEventsCheckpoint',
37
+ :'reason' => :'CheckpointEventsReason',
39
38
  }
40
39
  end
41
40
 
@@ -160,4 +159,3 @@ module AftershipAPI::Model
160
159
  end
161
160
  end
162
161
  end
163
-