freight_kit 0.1.15 → 0.1.16

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +96 -43
  3. data/README.md +28 -6
  4. data/VERSION +1 -1
  5. data/configuration/carriers/abfs.yml +124 -0
  6. data/configuration/carriers/btvp.yml +84 -0
  7. data/configuration/carriers/ccyq.yml +121 -0
  8. data/configuration/carriers/clni.yml +113 -0
  9. data/configuration/carriers/cnwy.yml +113 -0
  10. data/configuration/carriers/ctbv.yml +117 -0
  11. data/configuration/carriers/dcha.yml +105 -0
  12. data/configuration/carriers/dlds.yml +111 -0
  13. data/configuration/carriers/dphe.yml +130 -0
  14. data/configuration/carriers/drrq.yml +131 -0
  15. data/configuration/carriers/fcsy.yml +102 -0
  16. data/configuration/carriers/fwda.yml +137 -0
  17. data/configuration/carriers/jfj_transportation.yml +2 -0
  18. data/configuration/carriers/mtvl.yml +12 -0
  19. data/configuration/carriers/numk.yml +14 -0
  20. data/configuration/carriers/otcl.yml +124 -0
  21. data/configuration/carriers/pens.yml +22 -0
  22. data/configuration/carriers/rdfs.yml +142 -0
  23. data/configuration/carriers/saia.yml +129 -0
  24. data/configuration/carriers/sefl.yml +115 -0
  25. data/configuration/carriers/totl.yml +111 -0
  26. data/configuration/carriers/tqyl.yml +28 -0
  27. data/configuration/carriers/wrds.yml +20 -0
  28. data/configuration/platforms/carrier_logistics.yml +25 -0
  29. data/configuration/platforms/next.yml +12 -0
  30. data/configuration/platforms/the_great_information_factory.yml +122 -0
  31. data/freight_kit.gemspec +9 -7
  32. data/lib/freight_kit/api_clients/soap_client.rb +70 -0
  33. data/lib/freight_kit/api_clients.rb +3 -0
  34. data/lib/freight_kit/carriers/abfs.rb +421 -0
  35. data/lib/freight_kit/carriers/btvp.rb +29 -0
  36. data/lib/freight_kit/carriers/ccyq.rb +317 -0
  37. data/lib/freight_kit/carriers/clni.rb +396 -0
  38. data/lib/freight_kit/carriers/cnwy.rb +327 -0
  39. data/lib/freight_kit/carriers/ctbv.rb +53 -0
  40. data/lib/freight_kit/carriers/dcha.rb +76 -0
  41. data/lib/freight_kit/carriers/dlds.rb +49 -0
  42. data/lib/freight_kit/carriers/dphe.rb +474 -0
  43. data/lib/freight_kit/carriers/drrq.rb +580 -0
  44. data/lib/freight_kit/carriers/fcsy.rb +57 -0
  45. data/lib/freight_kit/carriers/fwda.rb +744 -0
  46. data/lib/freight_kit/carriers/jfj_transportation.rb +13 -0
  47. data/lib/freight_kit/carriers/mtvl.rb +34 -0
  48. data/lib/freight_kit/carriers/numk.rb +58 -0
  49. data/lib/freight_kit/carriers/otcl.rb +528 -0
  50. data/lib/freight_kit/carriers/pens.rb +204 -0
  51. data/lib/freight_kit/carriers/rdfs.rb +521 -0
  52. data/lib/freight_kit/carriers/saia.rb +438 -0
  53. data/lib/freight_kit/carriers/sefl.rb +342 -0
  54. data/lib/freight_kit/carriers/totl.rb +172 -0
  55. data/lib/freight_kit/carriers/tqyl.rb +339 -0
  56. data/lib/freight_kit/carriers/wrds.rb +246 -0
  57. data/lib/freight_kit/carriers.rb +26 -0
  58. data/lib/freight_kit/helpers/documentable.rb +13 -0
  59. data/lib/freight_kit/helpers/pickupable.rb +39 -0
  60. data/lib/freight_kit/helpers/rateable.rb +28 -0
  61. data/lib/freight_kit/helpers/trackable.rb +25 -0
  62. data/lib/freight_kit/helpers.rb +6 -0
  63. data/lib/freight_kit/platforms/carrier_logistics.rb +450 -0
  64. data/lib/freight_kit/platforms/next.rb +101 -0
  65. data/lib/freight_kit/platforms/the_great_information_factory.rb +528 -0
  66. data/lib/freight_kit/platforms.rb +5 -0
  67. data/lib/freight_kit.rb +20 -1
  68. metadata +94 -14
@@ -0,0 +1,129 @@
1
+ :accessorials:
2
+ :mappable:
3
+ :airport_delivery: LimitedAccessLocation
4
+ :airport_pickup: LimitedAccessLocationPU
5
+ :amusement_park_delivery: LimitedAccessLocation
6
+ :amusement_park_pickup: LimitedAccessLocationPU
7
+ :appointment_delivery: ArrivalNotice/Appointment
8
+ :cemetery_delivery: LimitedAccessLocation
9
+ :cemetery_pickup: LimitedAccessLocationPU
10
+ :church_delivery: LimitedAccessLocation
11
+ :church_pickup: LimitedAccessLocationPU
12
+ :construction_delivery: LimitedAccessLocation
13
+ :construction_pickup: LimitedAccessLocationPU
14
+ :convention_delivery: TradeShowDelivery
15
+ :convention_pickup: TradeShowPickup
16
+ :driver_assist: WhiteGlove
17
+ :fair_delivery: LimitedAccessLocation
18
+ :fair_pickup: LimitedAccessLocationPU
19
+ :government_delivery: LimitedAccessLocation
20
+ :government_pickup: LimitedAccessLocationPU
21
+ :inside_delivery: InsideDelivery
22
+ :inside_pickup: InsidePickup
23
+ :jobsite_delivery: LimitedAccessLocation
24
+ :jobsite_pickup: LimitedAccessLocationPU
25
+ :liftgate_delivery: LiftgateService
26
+ :liftgate_pickup: LiftgateServicePU
27
+ :marina_delivery: LimitedAccessLocation
28
+ :marina_pickup: LimitedAccessLocationPU
29
+ :military_site_delivery: LimitedAccessLocation
30
+ :military_site_pickup: LimitedAccessLocationPU
31
+ :mine_site_delivery: LimitedAccessLocation
32
+ :mine_site_pickup: LimitedAccessLocationPU
33
+ :prison_delivery: LimitedAccessLocation
34
+ :prison_pickup: LimitedAccessLocationPU
35
+ :residential_delivery: ResidentialDelivery
36
+ :residential_pickup: ResidentialPickup
37
+ :school_delivery: LimitedAccessLocation
38
+ :school_pickup: LimitedAccessLocationPU
39
+ :steel_mill_delivery: LimitedAccessLocation
40
+ :steel_mill_pickup: LimitedAccessLocationPU
41
+ :storage_facility_delivery: LimitedAccessLocation
42
+ :storage_facility_pickup: LimitedAccessLocationPU
43
+ :university_delivery: LimitedAccessLocation
44
+ :university_pickup: LimitedAccessLocationPU
45
+ :utility_site_delivery: LimitedAccessLocation
46
+ :utility_site_pickup: LimitedAccessLocationPU
47
+ # May be inaccurate
48
+ :unquotable:
49
+ - :athletic_facility_delivery
50
+ - :athletic_facility_pickup
51
+ - :brewery_delivery
52
+ - :brewery_pickup
53
+ - :dock_dropoff
54
+ - :dock_pickup
55
+ - :farm_delivery
56
+ - :farm_pickup
57
+ - :fitness_center_delivery
58
+ - :fitness_center_pickup
59
+ - :golf_course_delivery
60
+ - :golf_course_pickup
61
+ - :grocery_store_delivery
62
+ - :grocery_store_pickup
63
+ - :grocery_warehouse_delivery
64
+ - :grocery_warehouse_pickup
65
+ - :hospital_delivery
66
+ - :hospital_pickup
67
+ - :hotel_delivery
68
+ - :hotel_pickup
69
+ - :inspection_site_delivery
70
+ - :inspection_site_pickup
71
+ - :mall_delivery
72
+ - :mall_pickup
73
+ - :motel_delivery
74
+ - :motel_pickup
75
+ - :nursing_home_delivery
76
+ - :nursing_home_pickup
77
+ - :park_delivery
78
+ - :park_pickup
79
+ - :ranch_delivery
80
+ - :ranch_pickup
81
+ - :reservation_delivery
82
+ - :reservation_pickup
83
+ - :resort_delivery
84
+ - :resort_pickup
85
+ - :restaurant_delivery
86
+ - :restaurant_pickup
87
+ - :winery_delivery
88
+ - :winery_pickup
89
+ # May be inaccurate
90
+ :unserviceable:
91
+ - :afterhours_delivery
92
+ - :afterhours_pickup
93
+ - :appointment_pickup
94
+ - :customs_brokerage
95
+ - :early_morning_delivery
96
+ - :early_morning_pickup
97
+ - :flatbed_delivery
98
+ - :flatbed_pickup
99
+ - :guaranteed_delivery
100
+ - :guaranteed_delivery_am
101
+ - :guaranteed_delivery_pm
102
+ :api:
103
+ :actions:
104
+ :rates: :create
105
+ :track: :get_by_pro_number
106
+ :domain: www.saiasecure.com
107
+ :endpoints:
108
+ :rates: /webservice/ratequote/soap.asmx?wsdl
109
+ :track: /webservice/shipment/soap.asmx?wsdl
110
+ :use_ssl: true
111
+ :attributes:
112
+ :rates:
113
+ :with_excessive_length_fees: true
114
+ :events:
115
+ :types:
116
+ :arrived_at_terminal: arrived
117
+ :delivered: delivered
118
+ :departed: departed from terminal
119
+ :located: arrived at breakbulk terminal
120
+ :out_for_delivery: dispatched for delivery
121
+ :picked_up: pickup from customer
122
+ :trailer_unloaded: unload trailer # must be before :trailer_closed
123
+ :trailer_closed: load trailer
124
+ :services:
125
+ :types:
126
+ - :standard
127
+ - :guaranteed_delivery
128
+ - :guaranteed_delivery_am
129
+ - :guaranteed_delivery_pm
@@ -0,0 +1,115 @@
1
+ :accessorials:
2
+ :mappable:
3
+ :airport_delivery: chkAPD
4
+ :airport_pickup: chkAPU
5
+ :amusement_park_delivery: chkLAD
6
+ :amusement_park_pickup: chkLAP
7
+ :appointment_delivery: chkAN
8
+ :athletic_facility_delivery: chkLAD
9
+ :athletic_facility_pickup: chkLAP
10
+ :cemetery_delivery: chkLAD
11
+ :cemetery_pickup: chkLAP
12
+ :church_delivery: chkLAD
13
+ :church_pickup: chkLAP
14
+ :construction_delivery: chkLAD
15
+ :construction_pickup: chkLAP
16
+ :convention_delivery: chkLAD
17
+ :convention_pickup: chkLAP
18
+ :dock_dropoff: chkSHC
19
+ :fair_delivery: chkLAD
20
+ :fair_pickup: chkLAP
21
+ :farm_delivery: chkLAD
22
+ :farm_pickup: chkLAP
23
+ :fitness_center_delivery: chkLAD
24
+ :fitness_center_pickup: chkLAP
25
+ :golf_course_delivery: chkLAD
26
+ :golf_course_pickup: chkLAP
27
+ :government_delivery: chkLAD
28
+ :government_pickup: chkLAP
29
+ :grocery_store_delivery: chkLAD
30
+ :grocery_store_pickup: chkLAP
31
+ :guaranteed_delivery: chkDG
32
+ :guaranteed_delivery_am: chkNG
33
+ :guaranteed_delivery_pm: chkDG
34
+ :hospital_delivery: chkLAD
35
+ :hospital_pickup: chkLAP
36
+ :hotel_delivery: chkLAD
37
+ :hotel_pickup: chkLAP
38
+ :inside_delivery: chkID
39
+ :inside_pickup: chkIP
40
+ :inspection_site_delivery: chkLAD
41
+ :inspection_site_pickup: chkLAP
42
+ :jobsite_delivery: chkLAD
43
+ :jobsite_pickup: chkLAP
44
+ :liftgate_delivery: chkLGD
45
+ :liftgate_pickup: chkLGP
46
+ :mall_delivery: chkLAD
47
+ :mall_pickup: chkLAP
48
+ :marina_delivery: chkLAD
49
+ :marina_pickup: chkLAP
50
+ :military_site_delivery: chkLAD
51
+ :military_site_pickup: chkLAP
52
+ :mine_site_delivery: chkLAD
53
+ :mine_site_pickup: chkLAP
54
+ :motel_delivery: chkLAD
55
+ :motel_pickup: chkLAP
56
+ :nursing_home_delivery: chkLAD
57
+ :nursing_home_pickup: chkLAP
58
+ :park_delivery: chkLAD
59
+ :park_pickup: chkLAP
60
+ :prison_delivery: chkLAD
61
+ :prison_pickup: chkLAP
62
+ :ranch_delivery: chkLAD
63
+ :ranch_pickup: chkLAP
64
+ :reservation_delivery: chkLAD
65
+ :reservation_pickup: chkLAP
66
+ :residential_delivery: chkPR
67
+ :residential_pickup: chkPR
68
+ :resort_delivery: chkLAD
69
+ :resort_pickup: chkLAP
70
+ :restaurant_delivery: chkLAD
71
+ :restaurant_pickup: chkLAP
72
+ :school_delivery: chkLAD
73
+ :school_pickup: chkLAP
74
+ :steel_mill_delivery: chkLAD
75
+ :steel_mill_pickup: chkLAP
76
+ :storage_facility_delivery: chkLAD
77
+ :storage_facility_pickup: chkLAP
78
+ :university_delivery: chkLAD
79
+ :university_pickup: chkLAP
80
+ :utility_site_delivery: chkLAD
81
+ :utility_site_pickup: chkLAP
82
+ # May be inaccurate
83
+ :unquotable:
84
+ - :dock_pickup
85
+ # May be inaccurate
86
+ :unserviceable:
87
+ - :afterhours_delivery
88
+ - :afterhours_pickup
89
+ - :appointment_pickup
90
+ - :brewery_delivery
91
+ - :brewery_pickup
92
+ - :customs_brokerage
93
+ - :driver_assist
94
+ - :early_morning_delivery
95
+ - :early_morning_pickup
96
+ - :flatbed_delivery
97
+ - :flatbed_pickup
98
+ - :grocery_warehouse_delivery
99
+ - :grocery_warehouse_pickup
100
+ - :winery_delivery
101
+ - :winery_pickup
102
+ :api:
103
+ :domain: www.sefl.com
104
+ :endpoints:
105
+ :rates: /webconnect/ratequotes/rest/submitQuote
106
+ :methods:
107
+ :get_rate: :get
108
+ :rates: :post
109
+ :use_ssl: false
110
+ :attributes:
111
+ :rates:
112
+ :with_excessive_length_fees: true
113
+ :services:
114
+ :types:
115
+ - :standard
@@ -0,0 +1,111 @@
1
+ :accessorials:
2
+ :mappable:
3
+ :appointment_delivery: 'APPT'
4
+ :inside_delivery: 'IDL'
5
+ :inside_pickup: 'IDL'
6
+ :liftgate_delivery: 'LIFT'
7
+ :liftgate_pickup: 'LIFTP'
8
+ :residential_delivery: 'RESI'
9
+ :residential_pickup: 'RESP'
10
+ :restaurant_delivery:
11
+ - 'IDL'
12
+ - 'LIFT'
13
+ :restaurant_pickup:
14
+ - 'IDL'
15
+ - 'LIFTP'
16
+ # May be inaccurate
17
+ :unquotable:
18
+ - :amusement_park_delivery
19
+ - :amusement_park_pickup
20
+ - :athletic_facility_delivery
21
+ - :athletic_facility_delivery
22
+ - :athletic_facility_pickup
23
+ - :cemetery_delivery
24
+ - :cemetery_pickup
25
+ - :church_delivery
26
+ - :church_pickup
27
+ - :construction_delivery
28
+ - :construction_pickup
29
+ - :dock_dropoff
30
+ - :dock_pickup
31
+ - :farm_delivery
32
+ - :farm_pickup
33
+ - :fitness_center_delivery
34
+ - :fitness_center_pickup
35
+ - :golf_course_delivery
36
+ - :golf_course_pickup
37
+ - :government_delivery
38
+ - :government_pickup
39
+ - :grocery_store_delivery
40
+ - :grocery_store_pickup
41
+ - :hospital_delivery
42
+ - :hospital_pickup
43
+ - :hotel_delivery
44
+ - :hotel_pickup
45
+ - :inspection_site_delivery
46
+ - :inspection_site_pickup
47
+ - :jobsite_delivery
48
+ - :jobsite_pickup
49
+ - :mall_delivery
50
+ - :mall_pickup
51
+ - :marina_delivery
52
+ - :marina_pickup
53
+ - :mine_site_delivery
54
+ - :mine_site_pickup
55
+ - :motel_delivery
56
+ - :motel_pickup
57
+ - :nursing_home_delivery
58
+ - :nursing_home_pickup
59
+ - :park_delivery
60
+ - :park_pickup
61
+ - :prison_delivery
62
+ - :prison_pickup
63
+ - :ranch_delivery
64
+ - :ranch_pickup
65
+ - :reservation_delivery
66
+ - :reservation_pickup
67
+ - :resort_delivery
68
+ - :resort_pickup
69
+ - :school_delivery
70
+ - :school_pickup
71
+ - :steel_mill_delivery
72
+ - :steel_mill_pickup
73
+ - :storage_facility_delivery
74
+ - :storage_facility_pickup
75
+ - :university_delivery
76
+ - :university_pickup
77
+ - :utility_site_delivery
78
+ - :utility_site_pickup
79
+ # May be inaccurate
80
+ :unserviceable:
81
+ - :airport_delivery
82
+ - :airport_pickup
83
+ - :appointment_pickup
84
+ - :brewery_delivery
85
+ - :brewery_pickup
86
+ - :convention_delivery
87
+ - :convention_pickup
88
+ - :customs_brokerage
89
+ - :driver_assist
90
+ - :early_morning_delivery
91
+ - :fair_delivery
92
+ - :fair_pickup
93
+ - :flatbed_delivery
94
+ - :flatbed_pickup
95
+ - :grocery_warehouse_delivery
96
+ - :grocery_warehouse_pickup
97
+ - :guaranteed_delivery
98
+ - :guaranteed_delivery_am
99
+ - :guaranteed_delivery_pm
100
+ - :military_site_delivery
101
+ - :military_site_pickup
102
+ - :winery_delivery
103
+ - :winery_pickup
104
+ :api:
105
+ :carrier_code: tot
106
+ :attributes:
107
+ :rates:
108
+ :with_excessive_length_fees: true
109
+ :services:
110
+ :types:
111
+ - :standard
@@ -0,0 +1,28 @@
1
+ :api:
2
+ :domain: public.api.tql.com
3
+ :endpoints:
4
+ :rates: /ltl/quotes
5
+ :track: /tracking/%TRACKING_NUMBER%
6
+ :pickup: /ltl/loads/tender
7
+ :auth: /identity/token
8
+ :methods:
9
+ :rates: :post
10
+ :track: :get
11
+ :pickup: :post
12
+ :auth: :post
13
+ :attributes:
14
+ :rates:
15
+ :with_excessive_length_fees: true
16
+ # Per carrier at 2023-02-13
17
+ :accessorials:
18
+ :mappable:
19
+ :appointment_delivery: APPTDEL
20
+ :inside_delivery: INPU
21
+ :inside_pickup: INDEL
22
+ :liftgate_delivery: LGDEL
23
+ :liftgate_pickup: LGPU
24
+ :events:
25
+ :types:
26
+ :picked_up: Tendered
27
+ :delivered: Delivered
28
+ :out_for_delivery: In Transit
@@ -0,0 +1,20 @@
1
+ :api:
2
+ :domain: tracking.wrds.com
3
+ :endpoints:
4
+ :pod: /zLogin.aspx
5
+ :track: /zTrack2.aspx
6
+ :methods:
7
+ :track: :post
8
+ :use_ssl:
9
+ :bol: false
10
+ :pod: false
11
+ :track: true
12
+ :events:
13
+ :types:
14
+ :arrived_at_terminal: arrived
15
+ :delivered: delivered
16
+ :delivery_appointment_scheduled: delivery appt made
17
+ :departed: departed
18
+ :services:
19
+ :types:
20
+ - :standard
@@ -0,0 +1,25 @@
1
+ :api:
2
+ :domain: tracking.carrierlogistics.com
3
+ :endpoints:
4
+ :bol: /scripts/@CARRIER_CODE@.pol/web-login.htm?
5
+ :pod: /scripts/@CARRIER_CODE@.pol/web-login.htm?
6
+ :rates: /scripts/@CARRIER_CODE@.pol/ratequote.xml?
7
+ :track: /scripts/@CARRIER_CODE@.pol/protracexml.htm?
8
+ :use_ssl:
9
+ :bol: true
10
+ :pod: true
11
+ :rates: true
12
+ :track: true
13
+ :attributes:
14
+ :rates:
15
+ :with_excessive_length_fees: false
16
+ :events:
17
+ :types:
18
+ :arrived_at_terminal: trailer arrived
19
+ :delivered: delivered
20
+ :departed: trailer departed
21
+ :out_for_delivery: out for delivery
22
+ :picked_up: picked up
23
+ :pickup_scheduled: pickup request received
24
+ :trailer_closed: loaded on trailer
25
+ :trailer_unloaded: undisp
@@ -0,0 +1,12 @@
1
+ :api:
2
+ :endpoints:
3
+ :authenticate: /authenticate
4
+ :show: /shipments
5
+ :methods:
6
+ :authenticate: :post
7
+ :show: :get
8
+ :prefix: /api/v1
9
+ :scopes:
10
+ :broker: /broker
11
+ :customer: /customer
12
+ :use_ssl: true
@@ -0,0 +1,122 @@
1
+ :accessorials:
2
+ :mappable:
3
+ :appointment_delivery: NOTFEE
4
+ :inside_delivery: INSDEL
5
+ :liftgate_delivery: LIFDEL
6
+ :liftgate_pickup: LIFPIC
7
+ :mall_delivery: INSDEL
8
+ :residential_delivery: RESDEL
9
+ :residential_pickup: RESPIC
10
+ :restaurant_delivery: INSDEL
11
+ # May be inaccurate
12
+ :unquotable:
13
+ - :athletic_facility_delivery
14
+ - :athletic_facility_pickup
15
+ - :cemetery_delivery
16
+ - :cemetery_pickup
17
+ - :church_delivery
18
+ - :church_pickup
19
+ - :construction_delivery
20
+ - :construction_pickup
21
+ - :dock_dropoff
22
+ - :dock_pickup
23
+ - :farm_delivery
24
+ - :farm_pickup
25
+ - :fitness_center_delivery
26
+ - :fitness_center_pickup
27
+ - :flatbed_delivery
28
+ - :flatbed_pickup
29
+ - :golf_course_delivery
30
+ - :golf_course_pickup
31
+ - :government_delivery
32
+ - :government_pickup
33
+ - :grocery_store_delivery
34
+ - :grocery_store_pickup
35
+ - :holiday_delivery
36
+ - :holiday_pickup
37
+ - :hospital_delivery
38
+ - :hospital_pickup
39
+ - :hotel_delivery
40
+ - :hotel_pickup
41
+ - :inspection_site_delivery
42
+ - :inspection_site_pickup
43
+ - :jobsite_delivery
44
+ - :jobsite_pickup
45
+ - :military_site_delivery
46
+ - :military_site_pickup
47
+ - :mine_site_delivery
48
+ - :mine_site_pickup
49
+ - :motel_delivery
50
+ - :motel_pickup
51
+ - :nursing_home_delivery
52
+ - :nursing_home_pickup
53
+ - :park_delivery
54
+ - :park_pickup
55
+ - :prison_delivery
56
+ - :prison_pickup
57
+ - :ranch_delivery
58
+ - :ranch_pickup
59
+ - :reservation_delivery
60
+ - :reservation_pickup
61
+ - :resort_delivery
62
+ - :resort_pickup
63
+ - :restaurant_pickup
64
+ - :school_delivery
65
+ - :school_pickup
66
+ - :steel_mill_delivery
67
+ - :steel_mill_pickup
68
+ - :storage_facility_delivery
69
+ - :storage_facility_pickup
70
+ - :university_delivery
71
+ - :university_pickup
72
+ - :utility_site_delivery
73
+ - :utility_site_pickup
74
+ # May be inaccurate
75
+ :unserviceable:
76
+ - :afterhours_delivery
77
+ - :airport_delivery
78
+ - :airport_pickup
79
+ - :amusement_park_delivery
80
+ - :amusement_park_pickup
81
+ - :appointment_pickup
82
+ - :brewery_delivery
83
+ - :brewery_pickup
84
+ - :convention_delivery
85
+ - :convention_pickup
86
+ - :customs_brokerage
87
+ - :driver_assist
88
+ - :early_morning_delivery
89
+ - :fair_delivery
90
+ - :fair_pickup
91
+ - :grocery_warehouse_delivery
92
+ - :grocery_warehouse_pickup
93
+ - :guaranteed_delivery
94
+ - :guaranteed_delivery_am
95
+ - :guaranteed_delivery_pm
96
+ - :inside_pickup
97
+ - :marina_delivery
98
+ - :marina_pickup
99
+ - :saturday_delivery
100
+ - :saturday_pickup
101
+ - :sunday_delivery
102
+ - :sunday_pickup
103
+ - :winery_delivery
104
+ - :winery_pickup
105
+ :api:
106
+ :actions:
107
+ :rates: :getquote
108
+ :track: :tracktrace
109
+ :pickup: :requestpickup
110
+ :use_ssl:
111
+ :rates: false
112
+ :track: false
113
+ :events:
114
+ :types:
115
+ :arrived_at_terminal: arrived
116
+ :delivered: delivered
117
+ :departed: departed
118
+ :out_for_delivery: out for delvry
119
+ :pickup_information_sent_to_carrier: p/u dispatched
120
+ :services:
121
+ :types:
122
+ - :standard
data/freight_kit.gemspec CHANGED
@@ -23,8 +23,9 @@ Gem::Specification.new do |spec|
23
23
  spec.homepage = 'https://github.com/next-tms/freight_kit'
24
24
  spec.summary = spec.description
25
25
 
26
- spec.files = Dir['lib/**/*'] +
27
- Dir['[A-Z]*'] +
26
+ spec.files = Dir['[A-Z]*'] +
27
+ Dir['configuration/*/*.yml'] +
28
+ Dir['lib/**/*'] +
28
29
  Dir['test/**/*']
29
30
  spec.require_paths = ['lib']
30
31
 
@@ -35,8 +36,8 @@ Gem::Specification.new do |spec|
35
36
  spec.add_development_dependency('rubocop-next', '~> 1.0.7')
36
37
  spec.add_development_dependency('yard', '~> 0.9.28')
37
38
 
38
- spec.add_dependency('activemodel', '>= 4.2', '< 8.1.4')
39
- spec.add_dependency('activesupport', '>= 4.2', '< 8.1.4')
39
+ spec.add_dependency('activemodel', '>= 7.1', '< 8.1.4')
40
+ spec.add_dependency('activesupport', '>= 7.1', '< 8.1.4')
40
41
  spec.add_dependency('active_utils', '>= 3.3.1', '< 3.7.0')
41
42
  spec.add_dependency('benchmark', '~> 0.5.0')
42
43
  spec.add_dependency('business_time', '~> 0.13.0')
@@ -44,11 +45,12 @@ Gem::Specification.new do |spec|
44
45
  spec.add_dependency('measured', '>= 2.0', '< 3.2.2')
45
46
  spec.add_dependency('mimemagic', '~> 0.4.3')
46
47
  spec.add_dependency('nokogiri', '>= 1.6', '< 1.20')
47
- spec.add_dependency('place_kit', '~> 0.0.2')
48
- spec.add_dependency('savon', '>= 2.0', '< 2.16')
48
+ spec.add_dependency('place_kit', '~> 0.0.6')
49
+ spec.add_dependency('rmagick', '>= 4.2.5', '< 7.1.0')
50
+ spec.add_dependency('savon', '>= 2.17', '< 2.18')
49
51
  spec.add_dependency('tzinfo-data', '~> 1.2023', '>= 1.2023.3')
50
52
  spec.add_dependency('watir', '>= 7.0', '< 7.4')
51
- spec.add_dependency('zeitwerk', '>= 2.6.0', '< 2.7.6')
53
+ spec.add_dependency('zeitwerk', '>= 2.6.0', '< 2.8.3')
52
54
 
53
55
  spec.required_ruby_version = '>= 3.2.0'
54
56
  end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FreightKit
4
+ class SoapClient
5
+ API_EXCEPTIONS = [
6
+ Savon::HTTPError,
7
+ Net::ReadTimeout,
8
+ Net::OpenTimeout,
9
+ Errno::ECONNREFUSED,
10
+ Errno::ECONNRESET,
11
+ Errno::EHOSTUNREACH,
12
+ ]
13
+
14
+ def initialize(carrier:, action:, client_args:, call_args:, soap_operation:)
15
+ @carrier = carrier
16
+ @action = action
17
+ @client_args = client_args || {}
18
+ @call_args = call_args
19
+ @soap_operation = soap_operation
20
+ end
21
+
22
+ def call(handle_soap_fault_error: true)
23
+ # http = OpenStruct.new(code: 500, body: {})
24
+ # raise Savon::HTTPError, http
25
+
26
+ api_exceptions = API_EXCEPTIONS
27
+
28
+ # For testing and debugging
29
+ # client_args.merge!(log: true, pretty_print_xml: true)
30
+
31
+ Savon.client(**client_args).call(soap_operation, **call_args).body
32
+ rescue *api_exceptions => e
33
+ response = build_response_class(action:)
34
+ response.error = ResponseError.new("Network Error: #{e}")
35
+
36
+ response
37
+ rescue Savon::InvalidResponseError
38
+ response = build_response_class(action:)
39
+ response.error = ResponseError.new('API Error: Invalid response')
40
+
41
+ response
42
+ rescue Savon::SOAPFault => e
43
+ raise unless handle_soap_fault_error
44
+
45
+ response = build_response_class(action:)
46
+ response.error = ResponseError.new("API Error: #{e}")
47
+
48
+ response
49
+ rescue StandardError => e
50
+ response = build_response_class(action:)
51
+ response.error = ResponseError.new("API Error: #{e}")
52
+
53
+ response
54
+ end
55
+
56
+ private
57
+
58
+ attr_reader :carrier, :action, :client_args, :call_args, :soap_operation
59
+
60
+ def build_response_class(action:)
61
+ request = call_args[:message]
62
+
63
+ case action
64
+ when :rates then RateResponse.new(request:, response: nil)
65
+ when :track then TrackingResponse.new(carrier:, request:, response: nil)
66
+ when :pickup then PickupResponse.new(request:, response: nil)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'freight_kit/api_clients/soap_client'