freight_kit 0.1.20 → 0.1.21

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 (434) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -2
  3. data/README.md +1 -2
  4. data/Rakefile +6 -0
  5. data/VERSION +1 -1
  6. data/configuration/locations/amazon_warehouses.yml +3330 -0
  7. data/freight_kit.gemspec +13 -13
  8. data/lib/freight_kit/address_normalizer.rb +26 -0
  9. data/lib/freight_kit/amazon_warehouse.rb +33 -0
  10. data/lib/freight_kit/api_clients/soap_client.rb +7 -9
  11. data/lib/freight_kit/carrier.rb +250 -303
  12. data/lib/freight_kit/carriers/a1_express.rb +25 -0
  13. data/lib/freight_kit/carriers/a_duie_pyle.rb +30 -0
  14. data/lib/freight_kit/carriers/aaa_cooper.rb +11 -0
  15. data/lib/freight_kit/carriers/aaa_expedited_services.rb +10 -0
  16. data/lib/freight_kit/carriers/ab_brothers_usa_inc.rb +12 -0
  17. data/lib/freight_kit/carriers/aberdeen_express_inc.rb +28 -0
  18. data/lib/freight_kit/carriers/abf_freight_system.rb +492 -0
  19. data/lib/freight_kit/carriers/access_transport.rb +10 -0
  20. data/lib/freight_kit/carriers/action_express.rb +10 -0
  21. data/lib/freight_kit/carriers/adams_and_companies.rb +10 -0
  22. data/lib/freight_kit/carriers/advance_distribution.rb +28 -0
  23. data/lib/freight_kit/carriers/alcon_transport.rb +10 -0
  24. data/lib/freight_kit/carriers/all_freight.rb +10 -0
  25. data/lib/freight_kit/carriers/alliance_transportation_group.rb +10 -0
  26. data/lib/freight_kit/carriers/allstate_transport.rb +10 -0
  27. data/lib/freight_kit/carriers/aloha_freight_forwarders.rb +35 -0
  28. data/lib/freight_kit/carriers/amado_trucking.rb +35 -0
  29. data/lib/freight_kit/carriers/american_fast_freight.rb +28 -0
  30. data/lib/freight_kit/carriers/amigos_service_transportation.rb +10 -0
  31. data/lib/freight_kit/carriers/anderson_towing_and_transport.rb +10 -0
  32. data/lib/freight_kit/carriers/apex_transporting.rb +10 -0
  33. data/lib/freight_kit/carriers/archer_cargo.rb +35 -0
  34. data/lib/freight_kit/carriers/armstrong_transport_group.rb +10 -0
  35. data/lib/freight_kit/carriers/autobahn_logistics.rb +10 -0
  36. data/lib/freight_kit/carriers/averitt_express.rb +30 -0
  37. data/lib/freight_kit/carriers/ba_transportation.rb +10 -0
  38. data/lib/freight_kit/carriers/balkin_express.rb +10 -0
  39. data/lib/freight_kit/carriers/bay_area_express.rb +10 -0
  40. data/lib/freight_kit/carriers/bc_freightways.rb +11 -0
  41. data/lib/freight_kit/carriers/benjamin_best_freight_inc.rb +37 -0
  42. data/lib/freight_kit/carriers/bennett_trucking.rb +10 -0
  43. data/lib/freight_kit/carriers/best_overnite_express.rb +78 -0
  44. data/lib/freight_kit/carriers/best_trucking.rb +10 -0
  45. data/lib/freight_kit/carriers/bestway_transport.rb +10 -0
  46. data/lib/freight_kit/carriers/bryan_systems.rb +10 -0
  47. data/lib/freight_kit/carriers/c_and_w_express.rb +10 -0
  48. data/lib/freight_kit/carriers/campbell_trucking.rb +10 -0
  49. data/lib/freight_kit/carriers/carde_transportation.rb +10 -0
  50. data/lib/freight_kit/carriers/cardinal_logistics.rb +28 -0
  51. data/lib/freight_kit/carriers/cdc_transport.rb +10 -0
  52. data/lib/freight_kit/carriers/cdo_express_diversified.rb +10 -0
  53. data/lib/freight_kit/carriers/cedar_supply_trucking.rb +10 -0
  54. data/lib/freight_kit/carriers/central_freight_lines.rb +12 -0
  55. data/lib/freight_kit/carriers/central_transport.rb +12 -0
  56. data/lib/freight_kit/carriers/chicago_suburban_express.rb +28 -0
  57. data/lib/freight_kit/carriers/city_logistics.rb +11 -0
  58. data/lib/freight_kit/carriers/clear_lane_freight_systems.rb +483 -0
  59. data/lib/freight_kit/carriers/cleopatra_trucking.rb +10 -0
  60. data/lib/freight_kit/carriers/clifford_transportation.rb +10 -0
  61. data/lib/freight_kit/carriers/cms_domestic.rb +25 -0
  62. data/lib/freight_kit/carriers/cnd_logistics.rb +10 -0
  63. data/lib/freight_kit/carriers/coast_to_coast_transport.rb +27 -0
  64. data/lib/freight_kit/carriers/countrywide_carriers.rb +10 -0
  65. data/lib/freight_kit/carriers/cpl_express.rb +35 -0
  66. data/lib/freight_kit/carriers/crosby_trucking_service.rb +29 -0
  67. data/lib/freight_kit/carriers/cross_country_freight_solutions.rb +419 -0
  68. data/lib/freight_kit/carriers/crowley.rb +10 -0
  69. data/lib/freight_kit/carriers/csa_transportation.rb +40 -0
  70. data/lib/freight_kit/carriers/csx_transportation.rb +40 -0
  71. data/lib/freight_kit/carriers/custom_global_logistics.rb +14 -0
  72. data/lib/freight_kit/carriers/d_and_a_transport.rb +10 -0
  73. data/lib/freight_kit/carriers/dak_transport.rb +10 -0
  74. data/lib/freight_kit/carriers/dash_courier_and_logistics_north_carolina.rb +10 -0
  75. data/lib/freight_kit/carriers/daylight_transport.rb +29 -0
  76. data/lib/freight_kit/carriers/dayton_freight_lines.rb +30 -0
  77. data/lib/freight_kit/carriers/dbr_logistics.rb +10 -0
  78. data/lib/freight_kit/carriers/deep_south_freight.rb +27 -0
  79. data/lib/freight_kit/carriers/delta_express.rb +10 -0
  80. data/lib/freight_kit/carriers/delta_transport.rb +10 -0
  81. data/lib/freight_kit/carriers/delta_trucking_logistics.rb +10 -0
  82. data/lib/freight_kit/carriers/demco_express.rb +10 -0
  83. data/lib/freight_kit/carriers/dependable_global_express.rb +10 -0
  84. data/lib/freight_kit/carriers/dependable_hawaiian_express.rb +24 -0
  85. data/lib/freight_kit/carriers/dependable_highway_express.rb +585 -0
  86. data/lib/freight_kit/carriers/desert_coastal_transport.rb +10 -0
  87. data/lib/freight_kit/carriers/dhl.rb +11 -0
  88. data/lib/freight_kit/carriers/diamond_line_delivery.rb +174 -0
  89. data/lib/freight_kit/carriers/ding_tai_trucking.rb +10 -0
  90. data/lib/freight_kit/carriers/diversified_transfer_and_storage.rb +29 -0
  91. data/lib/freight_kit/carriers/dohrn_transfer_company.rb +30 -0
  92. data/lib/freight_kit/carriers/dot_line_transportation.rb +29 -0
  93. data/lib/freight_kit/carriers/drt_transportation.rb +13 -0
  94. data/lib/freight_kit/carriers/dugan_truck_line.rb +29 -0
  95. data/lib/freight_kit/carriers/dupont.rb +10 -0
  96. data/lib/freight_kit/carriers/e_transport_carriers.rb +29 -0
  97. data/lib/freight_kit/carriers/echo_global_logistics.rb +13 -0
  98. data/lib/freight_kit/carriers/ecklund_logistics.rb +10 -0
  99. data/lib/freight_kit/carriers/el_emplumado_transport.rb +10 -0
  100. data/lib/freight_kit/carriers/elite_carriers.rb +28 -0
  101. data/lib/freight_kit/carriers/emerald_express.rb +10 -0
  102. data/lib/freight_kit/carriers/era_transport.rb +10 -0
  103. data/lib/freight_kit/carriers/estes_express_lines.rb +25 -0
  104. data/lib/freight_kit/carriers/euro_kam.rb +28 -0
  105. data/lib/freight_kit/carriers/ew_riverside_trucking.rb +10 -0
  106. data/lib/freight_kit/carriers/express_2000_inc.rb +12 -0
  107. data/lib/freight_kit/carriers/express_services_international.rb +10 -0
  108. data/lib/freight_kit/carriers/f_and_a_express.rb +27 -0
  109. data/lib/freight_kit/carriers/fairmont_logistics.rb +13 -0
  110. data/lib/freight_kit/carriers/fargo_cargo.rb +10 -0
  111. data/lib/freight_kit/carriers/fast_freight_transportation.rb +10 -0
  112. data/lib/freight_kit/carriers/fast_load_transport.rb +10 -0
  113. data/lib/freight_kit/carriers/fed_ex_express.rb +30 -0
  114. data/lib/freight_kit/carriers/fed_ex_ground.rb +24 -0
  115. data/lib/freight_kit/carriers/fed_ex_ltl_economy.rb +11 -0
  116. data/lib/freight_kit/carriers/fed_ex_ltl_priority.rb +11 -0
  117. data/lib/freight_kit/carriers/first_trucking_express.rb +10 -0
  118. data/lib/freight_kit/carriers/flash_trucking.rb +10 -0
  119. data/lib/freight_kit/carriers/fort_transportation_and_service_company_inc.rb +37 -0
  120. data/lib/freight_kit/carriers/forward_air.rb +789 -0
  121. data/lib/freight_kit/carriers/frahtex.rb +10 -0
  122. data/lib/freight_kit/carriers/frozen_food_express.rb +10 -0
  123. data/lib/freight_kit/carriers/gholia_bros_trucking.rb +36 -0
  124. data/lib/freight_kit/carriers/global_cargo.rb +10 -0
  125. data/lib/freight_kit/carriers/global_logistics_and_transportation.rb +10 -0
  126. data/lib/freight_kit/carriers/gls_freight.rb +32 -0
  127. data/lib/freight_kit/carriers/go_trucking_services.rb +10 -0
  128. data/lib/freight_kit/carriers/gold_eagle_transportation.rb +11 -0
  129. data/lib/freight_kit/carriers/golden_drop_trucking.rb +10 -0
  130. data/lib/freight_kit/carriers/gonzalez_transportation.rb +10 -0
  131. data/lib/freight_kit/carriers/gps_transport.rb +10 -0
  132. data/lib/freight_kit/carriers/greene_enterprise.rb +10 -0
  133. data/lib/freight_kit/carriers/gsa_international.rb +10 -0
  134. data/lib/freight_kit/carriers/gsp_express.rb +24 -0
  135. data/lib/freight_kit/carriers/gsv_transportation.rb +10 -0
  136. data/lib/freight_kit/carriers/gta_transportation.rb +10 -0
  137. data/lib/freight_kit/carriers/guam_freight_services.rb +10 -0
  138. data/lib/freight_kit/carriers/harrah_transportation.rb +23 -0
  139. data/lib/freight_kit/carriers/her_trucking.rb +10 -0
  140. data/lib/freight_kit/carriers/hercules_freight.rb +20 -0
  141. data/lib/freight_kit/carriers/highlander_xpress.rb +36 -0
  142. data/lib/freight_kit/carriers/hn_transport.rb +10 -0
  143. data/lib/freight_kit/carriers/honolulu_freight_service.rb +10 -0
  144. data/lib/freight_kit/carriers/hot_line_freight_system_inc.rb +12 -0
  145. data/lib/freight_kit/carriers/hotshot_freight_of_texas.rb +13 -0
  146. data/lib/freight_kit/carriers/houser_transport.rb +27 -0
  147. data/lib/freight_kit/carriers/infiniti_freight_logistics.rb +28 -0
  148. data/lib/freight_kit/carriers/infinity_trucking.rb +10 -0
  149. data/lib/freight_kit/carriers/interstate_tma.rb +10 -0
  150. data/lib/freight_kit/carriers/intrade_industries.rb +10 -0
  151. data/lib/freight_kit/carriers/jasper_trucking.rb +28 -0
  152. data/lib/freight_kit/carriers/jb_hunt.rb +11 -0
  153. data/lib/freight_kit/carriers/jfj_transportation.rb +8 -8
  154. data/lib/freight_kit/carriers/jkb_express.rb +10 -0
  155. data/lib/freight_kit/carriers/jlm_transport.rb +10 -0
  156. data/lib/freight_kit/carriers/johansson_transport.rb +10 -0
  157. data/lib/freight_kit/carriers/jones_express.rb +10 -0
  158. data/lib/freight_kit/carriers/jp_logistics.rb +41 -0
  159. data/lib/freight_kit/carriers/just_in_time_cargo.rb +29 -0
  160. data/lib/freight_kit/carriers/kengkok_times.rb +10 -0
  161. data/lib/freight_kit/carriers/kings_express.rb +10 -0
  162. data/lib/freight_kit/carriers/klc_transportation.rb +10 -0
  163. data/lib/freight_kit/carriers/km_trucking.rb +10 -0
  164. data/lib/freight_kit/carriers/kma_logistics.rb +10 -0
  165. data/lib/freight_kit/carriers/krc_logistics.rb +10 -0
  166. data/lib/freight_kit/carriers/ktx.rb +10 -0
  167. data/lib/freight_kit/carriers/landstar.rb +25 -0
  168. data/lib/freight_kit/carriers/lanter_distributing_llc.rb +30 -0
  169. data/lib/freight_kit/carriers/ld_trucking.rb +10 -0
  170. data/lib/freight_kit/carriers/legacy_logistics_solutions.rb +10 -0
  171. data/lib/freight_kit/carriers/leonards_express.rb +10 -0
  172. data/lib/freight_kit/carriers/liberty_linehaul_west.rb +28 -0
  173. data/lib/freight_kit/carriers/liberty_transport.rb +10 -0
  174. data/lib/freight_kit/carriers/lightning_express.rb +10 -0
  175. data/lib/freight_kit/carriers/lj_express.rb +24 -0
  176. data/lib/freight_kit/carriers/lkp_enterprises.rb +10 -0
  177. data/lib/freight_kit/carriers/ltl_pros.rb +28 -0
  178. data/lib/freight_kit/carriers/m_and_m_and_sons.rb +10 -0
  179. data/lib/freight_kit/carriers/mag_lines_transport.rb +10 -0
  180. data/lib/freight_kit/carriers/magic_messenger.rb +24 -0
  181. data/lib/freight_kit/carriers/majors_transit.rb +10 -0
  182. data/lib/freight_kit/carriers/map_global_logistics.rb +10 -0
  183. data/lib/freight_kit/carriers/matths_trucking.rb +11 -0
  184. data/lib/freight_kit/carriers/mav_canadian_transport.rb +13 -0
  185. data/lib/freight_kit/carriers/mc_systems.rb +35 -0
  186. data/lib/freight_kit/carriers/mega_fleet.rb +10 -0
  187. data/lib/freight_kit/carriers/mega_trans_group.rb +28 -0
  188. data/lib/freight_kit/carriers/meta_express.rb +10 -0
  189. data/lib/freight_kit/carriers/mia_transportation.rb +10 -0
  190. data/lib/freight_kit/carriers/midwest_motor_express.rb +14 -0
  191. data/lib/freight_kit/carriers/midwest_transport_and_trucking.rb +10 -0
  192. data/lib/freight_kit/carriers/mikade_delivery_service.rb +10 -0
  193. data/lib/freight_kit/carriers/mohoff_freight_lines.rb +23 -0
  194. data/lib/freight_kit/carriers/montata_travelers_express.rb +10 -0
  195. data/lib/freight_kit/carriers/morgan_van_lines.rb +29 -0
  196. data/lib/freight_kit/carriers/moto_transportation.rb +24 -0
  197. data/lib/freight_kit/carriers/mountain_valley_express.rb +197 -0
  198. data/lib/freight_kit/carriers/ms_freight.rb +27 -0
  199. data/lib/freight_kit/carriers/mvg_transport.rb +10 -0
  200. data/lib/freight_kit/carriers/n_and_m_transfer_co_inc.rb +29 -0
  201. data/lib/freight_kit/carriers/nabot_transport_solutions.rb +10 -0
  202. data/lib/freight_kit/carriers/national_freight_xpress.rb +10 -0
  203. data/lib/freight_kit/carriers/navigation_group.rb +10 -0
  204. data/lib/freight_kit/carriers/nelson_trucking.rb +10 -0
  205. data/lib/freight_kit/carriers/network_1_transportation.rb +10 -0
  206. data/lib/freight_kit/carriers/new_century_transport.rb +28 -0
  207. data/lib/freight_kit/carriers/new_penn_motor_express.rb +11 -0
  208. data/lib/freight_kit/carriers/nieves_transportation.rb +10 -0
  209. data/lib/freight_kit/carriers/nolan_transportation_group.rb +26 -0
  210. data/lib/freight_kit/carriers/northland_trucking.rb +10 -0
  211. data/lib/freight_kit/carriers/northwest_carrier_logistics.rb +27 -0
  212. data/lib/freight_kit/carriers/nt_usa.rb +10 -0
  213. data/lib/freight_kit/carriers/nu_line_transportation.rb +10 -0
  214. data/lib/freight_kit/carriers/numark_transportation.rb +80 -0
  215. data/lib/freight_kit/carriers/nvk_transport.rb +10 -0
  216. data/lib/freight_kit/carriers/ny_transport.rb +10 -0
  217. data/lib/freight_kit/carriers/oak_harbor.rb +28 -0
  218. data/lib/freight_kit/carriers/oakline_transportation.rb +10 -0
  219. data/lib/freight_kit/carriers/old_dominion_freight_line.rb +30 -0
  220. data/lib/freight_kit/carriers/on_trac.rb +573 -0
  221. data/lib/freight_kit/carriers/one_hundred_one_transport.rb +10 -0
  222. data/lib/freight_kit/carriers/one_way_delivery.rb +10 -0
  223. data/lib/freight_kit/carriers/oracle_transportation_solutions.rb +10 -0
  224. data/lib/freight_kit/carriers/orange_courier.rb +27 -0
  225. data/lib/freight_kit/carriers/ortas_trucking.rb +10 -0
  226. data/lib/freight_kit/carriers/pac_trux_transportation.rb +10 -0
  227. data/lib/freight_kit/carriers/pacer.rb +10 -0
  228. data/lib/freight_kit/carriers/pacific_logistics.rb +10 -0
  229. data/lib/freight_kit/carriers/pacific_states_truck_lines.rb +10 -0
  230. data/lib/freight_kit/carriers/paradise_distributing.rb +10 -0
  231. data/lib/freight_kit/carriers/paramount_freight_systems.rb +10 -0
  232. data/lib/freight_kit/carriers/peninsula_truck_lines.rb +222 -0
  233. data/lib/freight_kit/carriers/pg_transport.rb +10 -0
  234. data/lib/freight_kit/carriers/pgs_360.rb +10 -0
  235. data/lib/freight_kit/carriers/pilot_freight_services.rb +10 -0
  236. data/lib/freight_kit/carriers/pious_trans.rb +27 -0
  237. data/lib/freight_kit/carriers/pitt_ohio_express.rb +30 -0
  238. data/lib/freight_kit/carriers/pki_logistics.rb +12 -0
  239. data/lib/freight_kit/carriers/plana_transportation.rb +28 -0
  240. data/lib/freight_kit/carriers/prestige.rb +10 -0
  241. data/lib/freight_kit/carriers/pro_trans_solutions.rb +28 -0
  242. data/lib/freight_kit/carriers/puma_logistics.rb +10 -0
  243. data/lib/freight_kit/carriers/pwc_international.rb +10 -0
  244. data/lib/freight_kit/carriers/quality_logistics.rb +10 -0
  245. data/lib/freight_kit/carriers/queen_star_trucking.rb +27 -0
  246. data/lib/freight_kit/carriers/r_and_l_carriers.rb +11 -0
  247. data/lib/freight_kit/carriers/rac_transport.rb +10 -0
  248. data/lib/freight_kit/carriers/re_logistics.rb +23 -0
  249. data/lib/freight_kit/carriers/reddaway.rb +11 -0
  250. data/lib/freight_kit/carriers/reefer_van_network.rb +13 -0
  251. data/lib/freight_kit/carriers/refrigerated_trucking_and_ltl_transportation_services.rb +10 -0
  252. data/lib/freight_kit/carriers/ridgeline_express.rb +10 -0
  253. data/lib/freight_kit/carriers/rist_transport.rb +29 -0
  254. data/lib/freight_kit/carriers/river_city_transport.rb +10 -0
  255. data/lib/freight_kit/carriers/roadrunner_transportation_services.rb +675 -0
  256. data/lib/freight_kit/carriers/roadtex.rb +13 -0
  257. data/lib/freight_kit/carriers/ronald_transport_services.rb +10 -0
  258. data/lib/freight_kit/carriers/rose_trucking.rb +24 -0
  259. data/lib/freight_kit/carriers/rp_and_j_transport.rb +24 -0
  260. data/lib/freight_kit/carriers/rpm_transportation.rb +11 -0
  261. data/lib/freight_kit/carriers/rude_transportation.rb +30 -0
  262. data/lib/freight_kit/carriers/s_and_s_logistics.rb +10 -0
  263. data/lib/freight_kit/carriers/saia.rb +470 -361
  264. data/lib/freight_kit/carriers/sb_transportation.rb +27 -0
  265. data/lib/freight_kit/carriers/schneider_national.rb +29 -0
  266. data/lib/freight_kit/carriers/schwarz_trucking.rb +10 -0
  267. data/lib/freight_kit/carriers/sewell_motor_express.rb +29 -0
  268. data/lib/freight_kit/carriers/shawnee_trucking.rb +28 -0
  269. data/lib/freight_kit/carriers/shi_logistics.rb +10 -0
  270. data/lib/freight_kit/carriers/sinbad_transport.rb +10 -0
  271. data/lib/freight_kit/carriers/skyway.rb +10 -0
  272. data/lib/freight_kit/carriers/smith_cargo_transportation_services.rb +23 -0
  273. data/lib/freight_kit/carriers/sna_transportation.rb +10 -0
  274. data/lib/freight_kit/carriers/solid_group.rb +10 -0
  275. data/lib/freight_kit/carriers/solution_carrier_express.rb +10 -0
  276. data/lib/freight_kit/carriers/southeastern_freight_lines.rb +450 -0
  277. data/lib/freight_kit/carriers/southwestern_motor_transport.rb +30 -0
  278. data/lib/freight_kit/carriers/span_alaska.rb +10 -0
  279. data/lib/freight_kit/carriers/specialize_transportation.rb +27 -0
  280. data/lib/freight_kit/carriers/ssi_refrigerated_express.rb +10 -0
  281. data/lib/freight_kit/carriers/standard_forwarding_llc.rb +28 -0
  282. data/lib/freight_kit/carriers/star_american_enterprise.rb +10 -0
  283. data/lib/freight_kit/carriers/sterling_transportation.rb +10 -0
  284. data/lib/freight_kit/carriers/stg.rb +163 -0
  285. data/lib/freight_kit/carriers/supervan_service.rb +10 -0
  286. data/lib/freight_kit/carriers/sutton_transport_inc.rb +12 -0
  287. data/lib/freight_kit/carriers/swift_transportation.rb +28 -0
  288. data/lib/freight_kit/carriers/t_force_worldwide.rb +617 -0
  289. data/lib/freight_kit/carriers/tax_airfreight_inc.rb +35 -0
  290. data/lib/freight_kit/carriers/tforce_freight_inc.rb +30 -0
  291. data/lib/freight_kit/carriers/the_custom_companies.rb +162 -0
  292. data/lib/freight_kit/carriers/thk_trucking.rb +28 -0
  293. data/lib/freight_kit/carriers/tiger_cool_express.rb +11 -0
  294. data/lib/freight_kit/carriers/tili_logistics.rb +10 -0
  295. data/lib/freight_kit/carriers/tmt_industries.rb +10 -0
  296. data/lib/freight_kit/carriers/top_ten_express.rb +28 -0
  297. data/lib/freight_kit/carriers/total_quality_logistics.rb +338 -0
  298. data/lib/freight_kit/carriers/total_transportation.rb +258 -0
  299. data/lib/freight_kit/carriers/trans_international_trucking.rb +29 -0
  300. data/lib/freight_kit/carriers/treasure_transportation.rb +10 -0
  301. data/lib/freight_kit/carriers/tri_state_services.rb +10 -0
  302. data/lib/freight_kit/carriers/tritex_freighters.rb +10 -0
  303. data/lib/freight_kit/carriers/triways.rb +10 -0
  304. data/lib/freight_kit/carriers/tsi_kansas.rb +29 -0
  305. data/lib/freight_kit/carriers/u_and_r_transportation.rb +23 -0
  306. data/lib/freight_kit/carriers/union_pacific.rb +11 -0
  307. data/lib/freight_kit/carriers/united_freight_logistics.rb +10 -0
  308. data/lib/freight_kit/carriers/unlimited_distance_transportation.rb +10 -0
  309. data/lib/freight_kit/carriers/up_streamline.rb +10 -0
  310. data/lib/freight_kit/carriers/ups_freight.rb +12 -0
  311. data/lib/freight_kit/carriers/us_freightways.rb +10 -0
  312. data/lib/freight_kit/carriers/usa_truck.rb +28 -0
  313. data/lib/freight_kit/carriers/usf_holland.rb +11 -0
  314. data/lib/freight_kit/carriers/valley_cartage.rb +11 -0
  315. data/lib/freight_kit/carriers/vc_transport.rb +10 -0
  316. data/lib/freight_kit/carriers/vision_express.rb +11 -0
  317. data/lib/freight_kit/carriers/vision_logistics_group.rb +10 -0
  318. data/lib/freight_kit/carriers/vmg_transportation_group.rb +10 -0
  319. data/lib/freight_kit/carriers/volpe_express.rb +10 -0
  320. data/lib/freight_kit/carriers/ward_trucking.rb +29 -0
  321. data/lib/freight_kit/carriers/wdwb.rb +10 -0
  322. data/lib/freight_kit/carriers/western_flyer_express.rb +28 -0
  323. data/lib/freight_kit/carriers/western_regional_delivery_service.rb +271 -0
  324. data/lib/freight_kit/carriers/western_specialized_trucking.rb +22 -0
  325. data/lib/freight_kit/carriers/win_distribution.rb +28 -0
  326. data/lib/freight_kit/carriers/wlb_transport.rb +10 -0
  327. data/lib/freight_kit/carriers/x_trux.rb +29 -0
  328. data/lib/freight_kit/carriers/xpo_logistics.rb +427 -0
  329. data/lib/freight_kit/carriers/xpress_global_systems.rb +30 -0
  330. data/lib/freight_kit/carriers/xylo_trucking.rb +10 -0
  331. data/lib/freight_kit/carriers/yrc_freight.rb +24 -0
  332. data/lib/freight_kit/carriers/zentner_transportation.rb +28 -0
  333. data/lib/freight_kit/carriers.rb +331 -34
  334. data/lib/freight_kit/countries.rb +22 -0
  335. data/lib/freight_kit/error.rb +0 -2
  336. data/lib/freight_kit/errors/document_not_found_error.rb +0 -2
  337. data/lib/freight_kit/errors/expired_credentials_error.rb +0 -2
  338. data/lib/freight_kit/errors/http_error.rb +0 -2
  339. data/lib/freight_kit/errors/invalid_credentials_error.rb +0 -2
  340. data/lib/freight_kit/errors/response_error.rb +0 -2
  341. data/lib/freight_kit/errors/shipment_not_found_error.rb +0 -2
  342. data/lib/freight_kit/errors/unserviceable_accessorials_error.rb +2 -4
  343. data/lib/freight_kit/errors/unserviceable_error.rb +0 -2
  344. data/lib/freight_kit/helpers/documentable.rb +0 -2
  345. data/lib/freight_kit/helpers/pickupable.rb +3 -5
  346. data/lib/freight_kit/helpers/rateable.rb +0 -2
  347. data/lib/freight_kit/helpers/trackable.rb +0 -2
  348. data/lib/freight_kit/http_client/cache_store.rb +2 -4
  349. data/lib/freight_kit/http_client/log_device.rb +0 -2
  350. data/lib/freight_kit/http_client/response.rb +0 -2
  351. data/lib/freight_kit/http_client/revalidation.rb +0 -2
  352. data/lib/freight_kit/http_client/safe_retries.rb +0 -2
  353. data/lib/freight_kit/http_client/zstd.rb +2 -4
  354. data/lib/freight_kit/http_client.rb +8 -12
  355. data/lib/freight_kit/model.rb +1 -3
  356. data/lib/freight_kit/models/address.rb +15 -0
  357. data/lib/freight_kit/models/contact.rb +3 -4
  358. data/lib/freight_kit/models/country.rb +20 -0
  359. data/lib/freight_kit/models/credential.rb +14 -16
  360. data/lib/freight_kit/models/date_time.rb +0 -2
  361. data/lib/freight_kit/models/document_response.rb +0 -2
  362. data/lib/freight_kit/models/label.rb +0 -2
  363. data/lib/freight_kit/models/location.rb +10 -25
  364. data/lib/freight_kit/models/pickup_response.rb +0 -2
  365. data/lib/freight_kit/models/price.rb +0 -2
  366. data/lib/freight_kit/models/rate.rb +0 -2
  367. data/lib/freight_kit/models/rate_response.rb +0 -2
  368. data/lib/freight_kit/models/region.rb +19 -0
  369. data/lib/freight_kit/models/response.rb +0 -2
  370. data/lib/freight_kit/models/shipment.rb +4 -6
  371. data/lib/freight_kit/models/shipment_event.rb +0 -2
  372. data/lib/freight_kit/models/terminal.rb +10 -0
  373. data/lib/freight_kit/models/tracking_response.rb +0 -2
  374. data/lib/freight_kit/package.rb +51 -53
  375. data/lib/freight_kit/package_item.rb +14 -14
  376. data/lib/freight_kit/packaging.rb +21 -26
  377. data/lib/freight_kit/platform.rb +0 -32
  378. data/lib/freight_kit/platforms/carrier_logistics.rb +331 -345
  379. data/lib/freight_kit/platforms/next_tms.rb +93 -0
  380. data/lib/freight_kit/platforms/the_great_information_factory.rb +500 -425
  381. data/lib/freight_kit/regions.rb +27 -0
  382. data/lib/freight_kit/shipment_packer.rb +36 -38
  383. data/lib/freight_kit/tariff/overlength_rule.rb +1 -5
  384. data/lib/freight_kit/tariff.rb +0 -2
  385. data/lib/freight_kit.rb +84 -11
  386. metadata +361 -51
  387. data/configuration/carriers/abfs.yml +0 -124
  388. data/configuration/carriers/btvp.yml +0 -84
  389. data/configuration/carriers/ccyq.yml +0 -121
  390. data/configuration/carriers/clni.yml +0 -113
  391. data/configuration/carriers/cnwy.yml +0 -113
  392. data/configuration/carriers/ctbv.yml +0 -117
  393. data/configuration/carriers/dcha.yml +0 -105
  394. data/configuration/carriers/dlds.yml +0 -111
  395. data/configuration/carriers/dphe.yml +0 -130
  396. data/configuration/carriers/drrq.yml +0 -131
  397. data/configuration/carriers/fcsy.yml +0 -102
  398. data/configuration/carriers/fwda.yml +0 -137
  399. data/configuration/carriers/jfj_transportation.yml +0 -2
  400. data/configuration/carriers/mtvl.yml +0 -12
  401. data/configuration/carriers/numk.yml +0 -14
  402. data/configuration/carriers/otcl.yml +0 -124
  403. data/configuration/carriers/pens.yml +0 -22
  404. data/configuration/carriers/rdfs.yml +0 -142
  405. data/configuration/carriers/saia.yml +0 -129
  406. data/configuration/carriers/sefl.yml +0 -115
  407. data/configuration/carriers/totl.yml +0 -111
  408. data/configuration/carriers/tqyl.yml +0 -28
  409. data/configuration/carriers/wrds.yml +0 -20
  410. data/configuration/platforms/carrier_logistics.yml +0 -25
  411. data/configuration/platforms/next.yml +0 -12
  412. data/configuration/platforms/the_great_information_factory.yml +0 -122
  413. data/lib/freight_kit/carriers/abfs.rb +0 -421
  414. data/lib/freight_kit/carriers/btvp.rb +0 -29
  415. data/lib/freight_kit/carriers/ccyq.rb +0 -310
  416. data/lib/freight_kit/carriers/clni.rb +0 -396
  417. data/lib/freight_kit/carriers/cnwy.rb +0 -327
  418. data/lib/freight_kit/carriers/ctbv.rb +0 -53
  419. data/lib/freight_kit/carriers/dcha.rb +0 -76
  420. data/lib/freight_kit/carriers/dlds.rb +0 -49
  421. data/lib/freight_kit/carriers/dphe.rb +0 -472
  422. data/lib/freight_kit/carriers/drrq.rb +0 -580
  423. data/lib/freight_kit/carriers/fcsy.rb +0 -57
  424. data/lib/freight_kit/carriers/fwda.rb +0 -744
  425. data/lib/freight_kit/carriers/mtvl.rb +0 -34
  426. data/lib/freight_kit/carriers/numk.rb +0 -58
  427. data/lib/freight_kit/carriers/otcl.rb +0 -520
  428. data/lib/freight_kit/carriers/pens.rb +0 -204
  429. data/lib/freight_kit/carriers/rdfs.rb +0 -521
  430. data/lib/freight_kit/carriers/sefl.rb +0 -342
  431. data/lib/freight_kit/carriers/totl.rb +0 -172
  432. data/lib/freight_kit/carriers/tqyl.rb +0 -337
  433. data/lib/freight_kit/carriers/wrds.rb +0 -246
  434. data/lib/freight_kit/platforms/next.rb +0 -101
@@ -0,0 +1,427 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class XPOLogistics < Carrier
4
+ class << self
5
+ def check_mailing_addresses
6
+ [
7
+ Address.new(
8
+ city: 'Chicago',
9
+ country: Countries.find_by(iso31661_alpha2: 'US'),
10
+ id: '6a957fa1-73cd-417c-a0f7-cc4531cd5570',
11
+ postal_code: '60673',
12
+ region_abbreviation: 'IL',
13
+ street: '29559 Network Pl'
14
+ )
15
+ ]
16
+ end
17
+
18
+ def contacts
19
+ [
20
+ Contact.new(
21
+ department: 'Customer Service - Kingman, AZ',
22
+ id: '5bb9caaa-ae84-4ee6-90ef-3c14f6d434c6',
23
+ phone: '+17609228255'
24
+ )
25
+ ]
26
+ end
27
+
28
+ def headquarters
29
+ Address.new(
30
+ city: 'Ann Arbor',
31
+ country: Countries.find_by(iso31661_alpha2: 'US'),
32
+ id: '17cbf3e9-ca23-4591-9363-4a0abd7aa5c5',
33
+ postal_code: '48105-2963',
34
+ region_abbreviation: 'MI',
35
+ street: '2211 Old Earhart Rd'
36
+ )
37
+ end
38
+
39
+ def id = '5ca40fc0-a4f0-444c-a300-d794336b8216'
40
+ def legal_name = 'XPO Logistics Freight Inc'
41
+
42
+ def mappable_accessorials
43
+ {
44
+ afterhours_delivery: 'DAH',
45
+ airport_delivery: 'DMS',
46
+ appointment_delivery: 'APT',
47
+ construction_delivery: 'CSD',
48
+ construction_pickup: 'OCS',
49
+ convention_delivery: 'PED',
50
+ convention_pickup: 'PEO',
51
+ fair_delivery: 'PED',
52
+ fair_pickup: 'PEO',
53
+ government_delivery: 'DMS',
54
+ guaranteed_delivery_am: 'G12',
55
+ guaranteed_delivery: 'GUR',
56
+ inside_delivery: 'DID',
57
+ inside_pickup: 'OIP',
58
+ jobsite_delivery: 'CSD',
59
+ jobsite_pickup: 'OCS',
60
+ liftgate_delivery: 'DLG',
61
+ liftgate_pickup: 'OLG',
62
+ marina_delivery: 'DPW',
63
+ mine_site_delivery: 'DMS',
64
+ residential_delivery: 'RSD',
65
+ residential_pickup: 'RSO'
66
+ }
67
+ end
68
+
69
+ def maximum_height = Measured::Length.new(105, :inches)
70
+ def maximum_weight = Measured::Weight.new(10_000, :pounds)
71
+ def minimum_length_for_overlength_fees = Measured::Length.new(8, :feet)
72
+ def name = 'XPO Logistics'
73
+ def overlength_fees_require_tariff? = false
74
+ def required_credential_types = %i[api api_key]
75
+ def requirements = %i[credentials]
76
+ def scac = 'CNWY'
77
+ def services = %i[standard]
78
+
79
+ def unserviceable_accessorials
80
+ %i[
81
+ afterhours_pickup
82
+ airport_pickup
83
+ amusement_park_delivery
84
+ amusement_park_pickup
85
+ appointment_pickup
86
+ athletic_facility_delivery
87
+ athletic_facility_pickup
88
+ brewery_delivery
89
+ brewery_pickup
90
+ cemetery_delivery
91
+ cemetery_pickup
92
+ church_delivery
93
+ church_pickup
94
+ customs_brokerage
95
+ dock_dropoff
96
+ dock_pickup
97
+ driver_assist
98
+ early_morning_delivery
99
+ early_morning_pickup
100
+ farm_delivery
101
+ farm_pickup
102
+ fitness_center_delivery
103
+ fitness_center_pickup
104
+ flatbed_delivery
105
+ flatbed_pickup
106
+ golf_course_delivery
107
+ golf_course_pickup
108
+ government_pickup
109
+ grocery_store_delivery
110
+ grocery_store_pickup
111
+ grocery_warehouse_delivery
112
+ grocery_warehouse_pickup
113
+ guaranteed_delivery_pm
114
+ hospital_delivery
115
+ hospital_pickup
116
+ hotel_delivery
117
+ hotel_pickup
118
+ inspection_site_delivery
119
+ inspection_site_pickup
120
+ mall_delivery
121
+ mall_pickup
122
+ marina_pickup
123
+ military_site_delivery
124
+ military_site_pickup
125
+ mine_site_pickup
126
+ motel_delivery
127
+ motel_pickup
128
+ nursing_home_delivery
129
+ nursing_home_pickup
130
+ park_delivery
131
+ park_pickup
132
+ prison_delivery
133
+ prison_pickup
134
+ ranch_delivery
135
+ ranch_pickup
136
+ reservation_delivery
137
+ reservation_pickup
138
+ resort_delivery
139
+ resort_pickup
140
+ restaurant_delivery
141
+ restaurant_pickup
142
+ school_delivery
143
+ school_pickup
144
+ steel_mill_delivery
145
+ steel_mill_pickup
146
+ storage_facility_delivery
147
+ storage_facility_pickup
148
+ university_delivery
149
+ university_pickup
150
+ utility_site_delivery
151
+ utility_site_pickup
152
+ winery_delivery
153
+ winery_pickup
154
+ ]
155
+ end
156
+
157
+ def us_dot_number = 241_829
158
+ def us_mc_number = 165_377
159
+ def website_url = 'https://www.xpo.com'
160
+ end
161
+
162
+ API = {
163
+ domain: 'api.ltl.xpo.com',
164
+ endpoints: { rates: '/rating/1.0/ratequotes', token: '/token' },
165
+ use_ssl: true
166
+ }.freeze
167
+
168
+ # Documents
169
+
170
+ # Pickups
171
+
172
+ # Rates
173
+
174
+ def find_rates(shipment:)
175
+ begin
176
+ validate_packages(shipment.packages)
177
+ rescue UnserviceableError => e
178
+ return RateResponse.new(error: e)
179
+ end
180
+
181
+ request = build_rate_request(shipment:)
182
+ parse_rate_response(shipment:, response: commit(request))
183
+ end
184
+
185
+ # Tracking
186
+
187
+ protected
188
+
189
+ def bearer_token = @bearer_token ||= commit(build_bearer_token_request)[:access_token]
190
+
191
+ def build_accessorials(shipment:)
192
+ serviceable_accessorials?(shipment.accessorials)
193
+
194
+ accessorial_codes = []
195
+ accessorial_codes << 'SSC'
196
+ accessorial_codes << 'ZHM' if shipment.hazmat?
197
+
198
+ if shipment.destination.province.upcase == 'HI'
199
+ accessorial_codes = accessorial_codes.map { |code| ['DID', 'OIP'].include?(code) ? 'WHN' : code }.uniq
200
+ end
201
+
202
+ longest_dimension_in = shipment.packages.map { |p| [p.width(:inch), p.length(:inch)].max }.max.ceil
203
+
204
+ # Switch to accessorials rather than accessorial_codes since now we need more complex structures
205
+
206
+ accessorials = accessorial_codes.map { |accessorial_code| { accessorial_cd: accessorial_code, quantity: 0 } }
207
+
208
+ return accessorials if longest_dimension_in < 96 && shipment.accessorials.blank?
209
+
210
+ accessorials << { accessorial_cd: 'ELS', quantity_uom: 'INCH', quantity: longest_dimension_in } if longest_dimension_in >= 96
211
+
212
+ return accessorials if shipment.accessorials.blank?
213
+
214
+ shipment.accessorials.map do |accessorial|
215
+ next if unquotable_accessorials.include?(accessorial)
216
+
217
+ accessorials << { accessorial_cd: mappable_accessorials[accessorial], quantity: 0 }
218
+ end
219
+
220
+ accessorials
221
+ end
222
+
223
+ def build_bearer_token_request
224
+ api_credentials = fetch_credential(:api)
225
+
226
+ body = URI.encode_www_form(
227
+ grant_type: 'password',
228
+ password: api_credentials.password,
229
+ username: api_credentials.username
230
+ )
231
+
232
+ {
233
+ body:,
234
+ headers: {
235
+ authorization: "Basic #{api_credentials.api_key}",
236
+ content_type: 'application/x-www-form-urlencoded'
237
+ },
238
+ method: :post,
239
+ url: build_url(:token)
240
+ }
241
+ end
242
+
243
+ def build_commodity(shipment:)
244
+ shipment.packages.map do |package|
245
+ {
246
+ dimensions: {
247
+ dimensions_uom: 'INCH',
248
+ height: package.inches(:height).ceil,
249
+ length: package.inches(:length).ceil,
250
+ width: package.inches(:width).ceil
251
+ },
252
+ gross_weight: { weight: package.pounds(:total).ceil, weight_uom: 'LBS' },
253
+ hazmat_ind: package.hazmat?,
254
+ nmfc_class: package.freight_class.to_s,
255
+ nmfc_item_cd: package.nmfc,
256
+ piece_cnt: package.quantity
257
+ }
258
+ end
259
+ end
260
+
261
+ def build_headers
262
+ { accept: 'application/json', authorization: "Bearer #{bearer_token}", 'Content-Type': 'application/json' }
263
+ end
264
+
265
+ def build_rate_request(shipment:)
266
+ api_credentials = fetch_credential(:api)
267
+ shipment_date = shipment.pickup_at.date_time_with_zone.iso8601
268
+
269
+ accessorials = build_accessorials(shipment:)
270
+ commodity = build_commodity(shipment:)
271
+
272
+ body = {
273
+ shipmentInfo: {
274
+ accessorials:,
275
+ bill_2_party: { acct_inst_id: api_credentials.account },
276
+ commodity:,
277
+ consignee: { address: { postal_cd: shipment.destination.postal_code.to_s } },
278
+ pallet_cnt: shipment.packages.map(&:packaging).map(&:pallet?).count(true),
279
+ payment_term_cd: 'P', # prepaid,
280
+ shipment_date:,
281
+ shipper: { address: { postal_cd: shipment.origin.postal_code.to_s } }
282
+ }
283
+ }.deep_transform_keys! { |key| key.to_s.camelize(:lower) }.to_json
284
+
285
+ request = { body:, headers: build_headers, method: :post, url: build_url(:rates) }
286
+
287
+ save_request(request)
288
+ request
289
+ end
290
+
291
+ def build_url(action)
292
+ scheme = API[:use_ssl] ? 'https://' : 'http://'
293
+ "#{scheme}#{API[:domain]}#{API.dig(:endpoints, action)}"
294
+ end
295
+
296
+ def commit(request)
297
+ url = request[:url]
298
+ headers = request[:headers] || build_headers
299
+ method = request[:method]
300
+ body = request[:body]
301
+
302
+ response = case method
303
+ when :post
304
+ HTTPClient.post(url, headers:, body:)
305
+ else
306
+ HTTPClient.get(url, headers:)
307
+ end
308
+
309
+ begin
310
+ json = JSON.parse(response.body).deep_symbolize_keys
311
+ rescue JSON::ParserError => e
312
+ # CNWY returns a string during runtime/server error
313
+ raise FreightKit::ResponseError, 'Runtime Error' if response.body.include?('Runtime Error')
314
+
315
+ raise e
316
+ end
317
+
318
+ error = (json[:error_description] || json.dig(:fault, :description) || json.dig(:error, :message) if json.is_a?(Hash))
319
+
320
+ if error.blank?
321
+ return json if (200..299).include?(response.code)
322
+ else
323
+ case response.code
324
+ when 401
325
+ raise FreightKit::InvalidCredentialsError
326
+ end
327
+ end
328
+
329
+ raise FreightKit::ResponseError, error
330
+ end
331
+
332
+ def parse_amount(amount) = (amount.to_f * 100).to_i
333
+
334
+ def parse_rate_response(shipment:, response:)
335
+ rate_response = RateResponse.new(request: last_request, response:)
336
+
337
+ if response.blank?
338
+ rate_response.error = ResponseError.new('Unknown response')
339
+ return rate_response
340
+ end
341
+
342
+ if response.dig(:data, :rateQuote, :totCharge, 0, :amt).blank?
343
+ rate_response.error = ResponseError.new('Cost is empty')
344
+ return rate_response
345
+ end
346
+
347
+ accessorials = response.dig(:data, :rateQuote, :shipmentInfo, :accessorials)
348
+ commodities = response.dig(:data, :rateQuote, :shipmentInfo, :commodity)
349
+ deficit_weight = response.dig(:data, :rateQuote, :deficitRatingInfo)
350
+
351
+ prices = []
352
+
353
+ prices << FreightKit::Price.new(
354
+ blame: :api,
355
+ cents: parse_amount(commodities.sum { |c| c.dig(:charge, :chargeAmt, :amt) }),
356
+ description: 'Freight'
357
+ )
358
+
359
+ if deficit_weight.present?
360
+ prices << FreightKit::Price.new(
361
+ blame: :api,
362
+ cents: parse_amount(deficit_weight.dig(:deficitAmt, :amt)),
363
+ description: <<~DESC.squish
364
+ Deficit weight
365
+ #{deficit_weight.dig(:deficitWght, :weight).ceil}
366
+ #{deficit_weight.dig(:deficitWght, :weightUom).downcase}
367
+ DESC
368
+ )
369
+ end
370
+
371
+ prices << FreightKit::Price.new(
372
+ blame: :api,
373
+ cents: parse_amount(response.dig(:data, :rateQuote, :totDiscountAmt, :amt)) * -1,
374
+ description: "Discount #{response.dig(:data, :rateQuote, :actlDiscountPct)}%"
375
+ )
376
+
377
+ prices += accessorials.map do |accessorial|
378
+ FreightKit::Price.new(
379
+ blame: :api,
380
+ cents: parse_amount(accessorial.dig(:chargeAmt, :amt)),
381
+ description: accessorial[:accessorialDesc].squish.capitalize.gsub('Xpo', 'XPO')
382
+ )
383
+ end
384
+
385
+ comment = response.dig(:data, :rateQuote, :shipmentInfo, :comment)
386
+ days = if comment.blank?
387
+ nil
388
+ else
389
+ comment[/(\d+) days/, 1]&.to_i
390
+ end
391
+
392
+ expires_at = if days.is_a?(Integer) && days.positive?
393
+ days.days.from_now
394
+ else
395
+ 2.days.from_now
396
+ end
397
+
398
+ estimate_reference = response.dig(:data, :rateQuote, :confirmationNbr)
399
+ transit_days = response.dig(:data, :transitTime, :transitDays)
400
+
401
+ rate = Rate.new(
402
+ carrier: self,
403
+ carrier_name: name,
404
+ currency: 'USD',
405
+ estimate_reference:,
406
+ expires_at:,
407
+ scac:,
408
+ service_name: :standard,
409
+ shipment:,
410
+ prices:,
411
+ transit_days:,
412
+ with_excessive_length_fees: rates_with_excessive_length_fees?
413
+ )
414
+
415
+ rate_response.rates = [rate]
416
+ rate_response
417
+ end
418
+
419
+ def request_url(action)
420
+ scheme = API.dig(:use_ssl, action) ? 'https://' : 'http://'
421
+ "#{scheme}#{API.dig(:domains, action)}#{API.dig(:endpoints, action)}"
422
+ end
423
+
424
+ # Tracking
425
+ end
426
+ end
427
+ end
@@ -0,0 +1,30 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class XpressGlobalSystems < Carrier
4
+ class << self
5
+ def contacts
6
+ [Contact.new(department: 'Main', id: '72b8ba38-1281-47d1-86e1-2f6c9df102d9', phone: '+17063413393')]
7
+ end
8
+
9
+ def headquarters
10
+ Address.new(
11
+ city: 'Tunnel Hill',
12
+ country: Countries.find_by(iso31661_alpha2: 'US'),
13
+ id: '093e63fd-0d3d-4730-8386-e4e789a376b0',
14
+ postal_code: '30755',
15
+ region_abbreviation: 'GA',
16
+ street: '1537 New Hope Church Road'
17
+ )
18
+ end
19
+
20
+ def id = '1802a2a1-a0f8-4a8b-a441-acc40a8f18e0'
21
+ def legal_name = 'Xpress Global Systems LLC'
22
+ def name = 'Xpress Global Systems'
23
+ def scac = 'XGSI'
24
+ def us_dot_number = 534_817
25
+ def us_mc_number = 188_471
26
+ def website_url = 'https://www.xgsi.com'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class XyloTrucking < Carrier
4
+ class << self
5
+ def id = 'f13bfd99-a3e8-4cea-9bff-7685d603737a'
6
+ def name = 'Xylo Trucking'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class YRCFreight < Carrier
4
+ class << self
5
+ def check_mailing_addresses
6
+ [
7
+ Address.new(
8
+ city: 'Pasadena',
9
+ country: Countries.find_by(iso31661_alpha2: 'US'),
10
+ id: 'b4d30c47-00dc-47b8-a732-29890a6b7032',
11
+ postal_code: '91189',
12
+ region_abbreviation: 'CA',
13
+ street: 'PO Box 100129'
14
+ )
15
+ ]
16
+ end
17
+
18
+ def id = '30d0fc37-971b-4a67-bd12-bb4dda3f411a'
19
+ def name = 'YRC Freight'
20
+ def scac = 'RDWY'
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class ZentnerTransportation < Carrier
4
+ class << self
5
+ def contacts
6
+ [Contact.new(department: 'Main', id: '268a3b40-b03a-4600-839a-478223ed0bca', phone: '+13083580291')]
7
+ end
8
+
9
+ def headquarters
10
+ Address.new(
11
+ city: 'Cedar Rapids',
12
+ country: Countries.find_by(iso31661_alpha2: 'US'),
13
+ id: 'bd418b64-abb8-47ef-b6aa-5298a4e5bd80',
14
+ postal_code: '68627',
15
+ region_abbreviation: 'NE',
16
+ street: '612 S Third Street'
17
+ )
18
+ end
19
+
20
+ def id = 'd46277ce-db54-46b5-8310-02b1f84524ee'
21
+ def legal_name = 'Zentner Transportation Inc'
22
+ def name = 'Zentner Transportation'
23
+ def us_dot_number = 239_232
24
+ def website_url = 'https://zentnertransportation.com'
25
+ end
26
+ end
27
+ end
28
+ end