shipengine_sdk 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +96 -0
  4. data/lib/faraday/raise_http_exception.rb +77 -0
  5. data/lib/shipengine/configuration.rb +43 -0
  6. data/lib/shipengine/constants/base.rb +22 -0
  7. data/lib/shipengine/constants/countries.rb +16 -0
  8. data/lib/shipengine/constants.rb +4 -0
  9. data/lib/shipengine/domain/addresses/address_validation.rb +118 -0
  10. data/lib/shipengine/domain/addresses.rb +76 -0
  11. data/lib/shipengine/domain/carriers/list_carriers.rb +140 -0
  12. data/lib/shipengine/domain/carriers.rb +93 -0
  13. data/lib/shipengine/domain/labels/create_from_rate.rb +163 -0
  14. data/lib/shipengine/domain/labels/create_from_shipment_details.rb +163 -0
  15. data/lib/shipengine/domain/labels/void_label.rb +18 -0
  16. data/lib/shipengine/domain/labels.rb +297 -0
  17. data/lib/shipengine/domain/rates/get_with_shipment_details.rb +347 -0
  18. data/lib/shipengine/domain/rates.rb +379 -0
  19. data/lib/shipengine/domain/tracking/track_using_carrier_code_and_tracking_number.rb +45 -0
  20. data/lib/shipengine/domain/tracking/track_using_label_id.rb +45 -0
  21. data/lib/shipengine/domain/tracking.rb +103 -0
  22. data/lib/shipengine/domain.rb +7 -0
  23. data/lib/shipengine/exceptions/error_code.rb +254 -0
  24. data/lib/shipengine/exceptions/error_type.rb +49 -0
  25. data/lib/shipengine/exceptions.rb +132 -0
  26. data/lib/shipengine/internal_client.rb +91 -0
  27. data/lib/shipengine/utils/base58.rb +109 -0
  28. data/lib/shipengine/utils/pretty_print.rb +29 -0
  29. data/lib/shipengine/utils/request_id.rb +16 -0
  30. data/lib/shipengine/utils/user_agent.rb +24 -0
  31. data/lib/shipengine/utils/validate.rb +106 -0
  32. data/lib/shipengine/version.rb +5 -0
  33. data/lib/shipengine.rb +164 -0
  34. metadata +117 -0
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'hashie'
4
+ require_relative 'carriers/list_carriers'
5
+ require 'shipengine/constants'
6
+
7
+ module ShipEngine
8
+ module Domain
9
+ class Carriers
10
+ # @param [ShipEngine::InternalClient] internal_client
11
+ def initialize(internal_client)
12
+ @internal_client = internal_client
13
+ end
14
+
15
+ def list_carriers(config:)
16
+ response = @internal_client.get('/v1/carriers', {}, config)
17
+ carriers_api_result = response.body
18
+ mash_result = Hashie::Mash.new(carriers_api_result)
19
+ carriers = mash_result.carriers.map do |carrier|
20
+ services = carrier.services.map do |service|
21
+ ListCarriers::Carrier::Service.new(
22
+ carrier_id: service.carrier_id,
23
+ carrier_code: service.carrier_code,
24
+ service_code: service.service_code,
25
+ name: service.name,
26
+ domestic: service.domestic,
27
+ international: service.international,
28
+ is_multi_package_supported: service.is_multi_package_supported
29
+ )
30
+ end
31
+
32
+ packages = carrier.packages.map do |package|
33
+ dimensions = nil
34
+ if package.dimensions
35
+ dimensions = ListCarriers::Carrier::Package::Dimensions.new(
36
+ unit: package.dimensions.unit,
37
+ length: package.dimensions['length'],
38
+ width: package.dimensions.width,
39
+ height: package.dimensions.height
40
+ )
41
+ end
42
+ ListCarriers::Carrier::Package.new(
43
+ package_id: package.package_id,
44
+ package_code: package.package_code,
45
+ name: package.name,
46
+ dimensions:,
47
+ description: package.description
48
+ )
49
+ end
50
+
51
+ options = carrier.options.map do |option|
52
+ ListCarriers::Carrier::Option.new(
53
+ name: option.name,
54
+ default_value: option.default_value,
55
+ description: option.description
56
+ )
57
+ end
58
+
59
+ ListCarriers::Carrier.new(
60
+ carrier_id: carrier.carrier_id,
61
+ carrier_code: carrier.carrier_code,
62
+ account_number: carrier.account_number,
63
+ requires_funded_amount: carrier.requires_funded_amount,
64
+ balance: carrier.balance,
65
+ nickname: carrier.nickname,
66
+ friendly_name: carrier.friendly_name,
67
+ primary: carrier.primary,
68
+ has_multi_package_supporting_services: carrier.has_multi_package_supporting_services,
69
+ supports_label_messages: carrier.supports_label_messages,
70
+ services:,
71
+ packages:,
72
+ options:
73
+ )
74
+ end
75
+
76
+ errors = mash_result.errors.map do |error|
77
+ ListCarriers::Error.new(
78
+ error_source: error.error_source,
79
+ error_type: error.error_type,
80
+ error_code: error.error_code,
81
+ message: error['message']
82
+ )
83
+ end
84
+
85
+ ListCarriers::Response.new(
86
+ carriers:,
87
+ request_id: mash_result.request_id,
88
+ errors:
89
+ )
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,163 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ShipEngine
4
+ module Domain
5
+ class Labels
6
+ module CreateFromRate
7
+ class Response
8
+ attr_reader :label_id,
9
+ :status,
10
+ :shipment_id,
11
+ :ship_date,
12
+ :created_at,
13
+ :shipment_cost,
14
+ :insurance_cost,
15
+ :tracking_number,
16
+ :is_return_label,
17
+ :rma_number,
18
+ :is_international,
19
+ :batch_id,
20
+ :carrier_id,
21
+ :charge_event,
22
+ :service_code,
23
+ :package_code,
24
+ :voided,
25
+ :voided_at,
26
+ :label_format,
27
+ :display_scheme,
28
+ :label_layout,
29
+ :trackable,
30
+ :label_image_id,
31
+ :carrier_code,
32
+ :tracking_status,
33
+ :label_download,
34
+ :form_download,
35
+ :insurance_claim,
36
+ :packages
37
+
38
+ # rubocop:todo Metrics/ParameterLists
39
+ def initialize(label_id:, status:, shipment_id:, ship_date:, created_at:, shipment_cost:, insurance_cost:, tracking_number:, is_return_label:, rma_number:, is_international:, batch_id:, carrier_id:, charge_event:, service_code:, package_code:, voided:, voided_at:, label_format:,
40
+ display_scheme:, label_layout:, trackable:, label_image_id:, carrier_code:, tracking_status:, label_download:, form_download:, insurance_claim:, packages:)
41
+ # rubocop:enable Metrics/ParameterLists
42
+ @label_id = label_id
43
+ @status = status
44
+ @shipment_id = shipment_id
45
+ @ship_date = ship_date
46
+ @created_at = created_at
47
+ @shipment_cost = shipment_cost
48
+ @insurance_cost = insurance_cost
49
+ @tracking_number = tracking_number
50
+ @is_return_label = is_return_label
51
+ @rma_number = rma_number
52
+ @is_international = is_international
53
+ @batch_id = batch_id
54
+ @carrier_id = carrier_id
55
+ @charge_event = charge_event
56
+ @service_code = service_code
57
+ @package_code = package_code
58
+ @voided = voided
59
+ @voided_at = voided_at
60
+ @label_format = label_format
61
+ @display_scheme = display_scheme
62
+ @label_layout = label_layout
63
+ @trackable = trackable
64
+ @label_image_id = label_image_id
65
+ @carrier_code = carrier_code
66
+ @tracking_status = tracking_status
67
+ @label_download = label_download
68
+ @form_download = form_download
69
+ @insurance_claim = insurance_claim
70
+ @packages = packages
71
+ end
72
+
73
+ class MonetaryValue
74
+ attr_reader :currency, :amount
75
+
76
+ def initialize(currency:, amount:)
77
+ @currency = currency
78
+ @amount = amount
79
+ end
80
+ end
81
+
82
+ class Package
83
+ attr_reader :package_code, :weight, :dimensions, :insured_value, :tracking_number, :label_messages, :external_package_id
84
+
85
+ def initialize(package_code:, weight:, dimensions:, insured_value:, tracking_number:, label_messages:, external_package_id:) # rubocop:todo Metrics/ParameterLists
86
+ @package_code = package_code
87
+ @weight = weight
88
+ @dimensions = dimensions
89
+ @insured_value = insured_value
90
+ @tracking_number = tracking_number
91
+ @label_messages = label_messages
92
+ @external_package_id = external_package_id
93
+ end
94
+
95
+ class LabelMessages
96
+ attr_reader :reference1, :reference2, :reference3
97
+
98
+ def initialize(reference1:, reference2:, reference3:)
99
+ @reference1 = reference1
100
+ @reference2 = reference2
101
+ @reference3 = reference3
102
+ end
103
+ end
104
+ end
105
+
106
+ class LabelDownload
107
+ attr_reader :href, :pdf, :png, :zpl
108
+
109
+ def initialize(href:, pdf:, png:, zpl:)
110
+ @href = href
111
+ @pdf = pdf
112
+ @png = png
113
+ @zpl = zpl
114
+ end
115
+ end
116
+
117
+ class FormDownload
118
+ attr_reader :href, :type
119
+
120
+ def initialize(href:, type:)
121
+ @href = href
122
+ @type = type
123
+ end
124
+ end
125
+
126
+ class InsuranceClaim
127
+ attr_reader :href, :type
128
+
129
+ def initialize(href:, type:)
130
+ @href = href
131
+ @type = type
132
+ end
133
+ end
134
+
135
+ class Weight
136
+ attr_reader :value, :unit
137
+
138
+ def initialize(value:, unit:)
139
+ @value = value
140
+ @unit = unit
141
+ end
142
+ end
143
+
144
+ class Dimensions
145
+ attr_reader :unit, :length, :width, :height
146
+
147
+ # type ["inch" | "centimeter"] unit
148
+ # @param [Double] length - e.g. 1.0
149
+ # @param [Double] width - e.g. 1.0
150
+ # @param [Double] height - e.g. 1.0
151
+
152
+ def initialize(unit:, length:, width:, height:)
153
+ @unit = unit
154
+ @length = length
155
+ @width = width
156
+ @height = height
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,163 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ShipEngine
4
+ module Domain
5
+ class Labels
6
+ module CreateFromShipmentDetails
7
+ class Response
8
+ attr_reader :label_id,
9
+ :status,
10
+ :shipment_id,
11
+ :ship_date,
12
+ :created_at,
13
+ :shipment_cost,
14
+ :insurance_cost,
15
+ :tracking_number,
16
+ :is_return_label,
17
+ :rma_number,
18
+ :is_international,
19
+ :batch_id,
20
+ :carrier_id,
21
+ :charge_event,
22
+ :service_code,
23
+ :package_code,
24
+ :voided,
25
+ :voided_at,
26
+ :label_format,
27
+ :display_scheme,
28
+ :label_layout,
29
+ :trackable,
30
+ :label_image_id,
31
+ :carrier_code,
32
+ :tracking_status,
33
+ :label_download,
34
+ :form_download,
35
+ :insurance_claim,
36
+ :packages
37
+
38
+ # rubocop:todo Metrics/ParameterLists
39
+ def initialize(label_id:, status:, shipment_id:, ship_date:, created_at:, shipment_cost:, insurance_cost:, tracking_number:, is_return_label:, rma_number:, is_international:, batch_id:, carrier_id:, charge_event:, service_code:, package_code:, voided:, voided_at:, label_format:,
40
+ display_scheme:, label_layout:, trackable:, label_image_id:, carrier_code:, tracking_status:, label_download:, form_download:, insurance_claim:, packages:)
41
+ # rubocop:enable Metrics/ParameterLists
42
+ @label_id = label_id
43
+ @status = status
44
+ @shipment_id = shipment_id
45
+ @ship_date = ship_date
46
+ @created_at = created_at
47
+ @shipment_cost = shipment_cost
48
+ @insurance_cost = insurance_cost
49
+ @tracking_number = tracking_number
50
+ @is_return_label = is_return_label
51
+ @rma_number = rma_number
52
+ @is_international = is_international
53
+ @batch_id = batch_id
54
+ @carrier_id = carrier_id
55
+ @charge_event = charge_event
56
+ @service_code = service_code
57
+ @package_code = package_code
58
+ @voided = voided
59
+ @voided_at = voided_at
60
+ @label_format = label_format
61
+ @display_scheme = display_scheme
62
+ @label_layout = label_layout
63
+ @trackable = trackable
64
+ @label_image_id = label_image_id
65
+ @carrier_code = carrier_code
66
+ @tracking_status = tracking_status
67
+ @label_download = label_download
68
+ @form_download = form_download
69
+ @insurance_claim = insurance_claim
70
+ @packages = packages
71
+ end
72
+
73
+ class MonetaryValue
74
+ attr_reader :currency, :amount
75
+
76
+ def initialize(currency:, amount:)
77
+ @currency = currency
78
+ @amount = amount
79
+ end
80
+ end
81
+
82
+ class Package
83
+ attr_reader :package_code, :weight, :dimensions, :insured_value, :tracking_number, :label_messages, :external_package_id
84
+
85
+ def initialize(package_code:, weight:, dimensions:, insured_value:, tracking_number:, label_messages:, external_package_id:) # rubocop:todo Metrics/ParameterLists
86
+ @package_code = package_code
87
+ @weight = weight
88
+ @dimensions = dimensions
89
+ @insured_value = insured_value
90
+ @tracking_number = tracking_number
91
+ @label_messages = label_messages
92
+ @external_package_id = external_package_id
93
+ end
94
+
95
+ class LabelMessages
96
+ attr_reader :reference1, :reference2, :reference3
97
+
98
+ def initialize(reference1:, reference2:, reference3:)
99
+ @reference1 = reference1
100
+ @reference2 = reference2
101
+ @reference3 = reference3
102
+ end
103
+ end
104
+ end
105
+
106
+ class LabelDownload
107
+ attr_reader :href, :pdf, :png, :zpl
108
+
109
+ def initialize(href:, pdf:, png:, zpl:)
110
+ @href = href
111
+ @pdf = pdf
112
+ @png = png
113
+ @zpl = zpl
114
+ end
115
+ end
116
+
117
+ class FormDownload
118
+ attr_reader :href, :type
119
+
120
+ def initialize(href:, type:)
121
+ @href = href
122
+ @type = type
123
+ end
124
+ end
125
+
126
+ class InsuranceClaim
127
+ attr_reader :href, :type
128
+
129
+ def initialize(href:, type:)
130
+ @href = href
131
+ @type = type
132
+ end
133
+ end
134
+
135
+ class Weight
136
+ attr_reader :value, :unit
137
+
138
+ def initialize(value:, unit:)
139
+ @value = value
140
+ @unit = unit
141
+ end
142
+ end
143
+
144
+ class Dimensions
145
+ attr_reader :unit, :length, :width, :height
146
+
147
+ # type ["inch" | "centimeter"] unit
148
+ # @param [Double] length - e.g. 1.0
149
+ # @param [Double] width - e.g. 1.0
150
+ # @param [Double] height - e.g. 1.0
151
+
152
+ def initialize(unit:, length:, width:, height:)
153
+ @unit = unit
154
+ @length = length
155
+ @width = width
156
+ @height = height
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ShipEngine
4
+ module Domain
5
+ class Labels
6
+ module VoidLabel
7
+ class Response
8
+ attr_reader :approved, :message
9
+
10
+ def initialize(approved:, message:)
11
+ @approved = approved
12
+ @message = message
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end