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,483 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class ClearLaneFreightSystems < FreightKit::Carrier
4
+ class << self
5
+ def check_mailing_addresses
6
+ [
7
+ Address.new(
8
+ city: 'Rancho Cucamonga',
9
+ country: Countries.find_by(iso31661_alpha2: 'US'),
10
+ id: '522c3717-d8f1-45c1-a363-da48dadd3090',
11
+ postal_code: '91730',
12
+ region_abbreviation: 'CA',
13
+ street: '9278 Charles Smith Ave'
14
+ )
15
+ ]
16
+ end
17
+
18
+ # @note Explicitly set to `false` because though API allows this, it "doesn't quote correctly" per customer
19
+ # service
20
+ def find_rates_with_declared_value? = false
21
+
22
+ def id = '5fe13653-7ac8-4c82-977a-ba9e83ea92e6'
23
+
24
+ def mappable_accessorials
25
+ {
26
+ inside_delivery: 'INSD',
27
+ inside_pickup: 'INSP',
28
+ liftgate_delivery: 'LIFTD',
29
+ liftgate_pickup: 'LIFTP',
30
+ residential_delivery: 'RESDLY',
31
+ residential_pickup: 'RESPU'
32
+ }
33
+ end
34
+
35
+ def maximum_height = Measured::Length.new(105, :inches)
36
+ def maximum_weight = Measured::Weight.new(10_000, :pounds)
37
+ def minimum_length_for_overlength_fees = Measured::Length.new(8, :feet)
38
+ def name = 'Clear Lane Freight Systems'
39
+ def overlength_fees_require_tariff? = false
40
+ def required_credential_types = %i[api website]
41
+ def requirements = %i[credentials]
42
+ def scac = 'CLNI'
43
+ def unquotable_accessorials = %i[appointment_delivery]
44
+
45
+ def unserviceable_accessorials
46
+ %i[
47
+ afterhours_delivery
48
+ afterhours_pickup
49
+ airport_delivery
50
+ airport_pickup
51
+ amusement_park_delivery
52
+ amusement_park_pickup
53
+ appointment_pickup
54
+ athletic_facility_delivery
55
+ athletic_facility_pickup
56
+ brewery_delivery
57
+ brewery_pickup
58
+ cemetery_delivery
59
+ cemetery_pickup
60
+ church_delivery
61
+ church_pickup
62
+ construction_delivery
63
+ construction_pickup
64
+ convention_delivery
65
+ convention_pickup
66
+ customs_brokerage
67
+ dock_dropoff
68
+ dock_pickup
69
+ driver_assist
70
+ early_morning_delivery
71
+ early_morning_pickup
72
+ fair_delivery
73
+ fair_pickup
74
+ farm_delivery
75
+ farm_pickup
76
+ fitness_center_delivery
77
+ fitness_center_pickup
78
+ flatbed_delivery
79
+ flatbed_pickup
80
+ golf_course_delivery
81
+ golf_course_pickup
82
+ government_delivery
83
+ government_pickup
84
+ grocery_store_delivery
85
+ grocery_store_pickup
86
+ grocery_warehouse_delivery
87
+ grocery_warehouse_pickup
88
+ guaranteed_delivery
89
+ guaranteed_delivery_am
90
+ guaranteed_delivery_pm
91
+ hospital_delivery
92
+ hospital_pickup
93
+ hotel_delivery
94
+ hotel_pickup
95
+ inspection_site_delivery
96
+ inspection_site_pickup
97
+ jobsite_delivery
98
+ jobsite_pickup
99
+ mall_delivery
100
+ mall_pickup
101
+ marina_delivery
102
+ marina_pickup
103
+ military_site_delivery
104
+ military_site_pickup
105
+ mine_site_delivery
106
+ mine_site_pickup
107
+ motel_delivery
108
+ motel_pickup
109
+ nursing_home_delivery
110
+ nursing_home_pickup
111
+ park_delivery
112
+ park_pickup
113
+ prison_delivery
114
+ prison_pickup
115
+ ranch_delivery
116
+ ranch_pickup
117
+ reservation_delivery
118
+ reservation_pickup
119
+ resort_delivery
120
+ resort_pickup
121
+ restaurant_delivery
122
+ restaurant_pickup
123
+ school_delivery
124
+ school_pickup
125
+ steel_mill_delivery
126
+ steel_mill_pickup
127
+ storage_facility_delivery
128
+ storage_facility_pickup
129
+ university_delivery
130
+ university_pickup
131
+ utility_site_delivery
132
+ utility_site_pickup
133
+ winery_delivery
134
+ winery_pickup
135
+ ]
136
+ end
137
+
138
+ def validate_packages(packages, tariff = nil)
139
+ raise UnserviceableError, 'Must be fewer than 10 items altogether' if packages.sum(&:quantity) > 10
140
+
141
+ super
142
+ end
143
+ end
144
+
145
+ include FreightKit::Rateable
146
+
147
+ API = {
148
+ actions: { rates: :get_rating },
149
+ domain: 'ssworldtrak.com',
150
+ endpoints: { rates: '/WTKServicesCLEARL/GetRating.asmx?WSDL' },
151
+ use_ssl: true
152
+ }.freeze
153
+ WEBSITE = { login: 'https://ssworldtrak.com/WebtrakWTNew/' }.freeze
154
+
155
+ # Documents
156
+
157
+ def pod(tracking_number) = parse_document_response(:pod, tracking_number)
158
+ def scanned_bol(tracking_number) = parse_document_response(:bol, tracking_number)
159
+
160
+ # Rates
161
+
162
+ # Tracking
163
+
164
+ protected
165
+
166
+ def accessorial_output_description(accessorial_output)
167
+ return '' if accessorial_output[:accessorial_desc].blank?
168
+
169
+ description = accessorial_output[:accessorial_desc]
170
+ description = description.capitalize
171
+ description.gsub('Smc', 'SMC')
172
+ end
173
+
174
+ def build_commodity_input(packages)
175
+ packages.map do |package|
176
+ {
177
+ CommodityInput: {
178
+ CommodityClass: package.freight_class,
179
+ CommodityHazmat: package.hazmat? ? 'Y' : 'N',
180
+ CommodityHeight: package.height(:in).ceil,
181
+ CommodityLength: package.length(:in).ceil,
182
+ CommodityPieces: package.quantity,
183
+ CommodityPieceType: package.packaging.pallet? ? 'pallet' : 'box',
184
+ CommodityWeight: package.pounds(:total).ceil,
185
+ CommodityWeightPerPiece: package.pounds(:each).ceil,
186
+ CommodityWidth: package.width(:in).ceil
187
+ }
188
+ }
189
+ end
190
+ end
191
+
192
+ def build_rate_request(shipment:)
193
+ accessorial_input = []
194
+ if shipment.accessorials.present?
195
+ serviceable_accessorials?(shipment.accessorials)
196
+ shipment.accessorials.each do |a|
197
+ next if unserviceable_accessorials.include?(a)
198
+
199
+ accessorial_input << { AccessorialInput: { AccessorialCode: mappable_accessorials[a] } }
200
+ end
201
+ end
202
+
203
+ accessorial_input.uniq!
204
+
205
+ commodity_input = build_commodity_input(shipment.packages)
206
+
207
+ palletized = shipment.packages.all? { |package| package.packaging.pallet? } ? 'Y' : 'N'
208
+
209
+ pickup_from = ::Time.current.beginning_of_day + 14.hours
210
+ pickup_from += 1.day if ::Time.current > pickup_from
211
+ pickup_to = pickup_from + 3.hours
212
+
213
+ api_credentials = fetch_credential(:api)
214
+
215
+ request = {
216
+ RatingParam: {
217
+ AccessorialInput: accessorial_input,
218
+ CommodityInput: commodity_input,
219
+ RatingInput: {
220
+ DeclaredValue: 0,
221
+ DestinationCity: shipment.destination.city,
222
+ DestinationCountry: shipment.destination.country.code(:alpha2).value,
223
+ DestinationState: shipment.destination.province,
224
+ DestinationZip: shipment.destination.postal_code,
225
+ LiabilityType: '',
226
+ OriginCity: shipment.origin.city,
227
+ OriginCountry: shipment.origin.country.code(:alpha2).value,
228
+ OriginState: shipment.origin.province,
229
+ OriginZip: shipment.origin.postal_code,
230
+ Palletized: palletized,
231
+ PickupDate: pickup_from.to_date.strftime('%Y-%m-%d'),
232
+ PickupLocationCloseTime: pickup_to.strftime('%H:%M:00'),
233
+ PickupTime: pickup_from.strftime('%H:%M:00'),
234
+ RequestID: rand(0..999_999).to_s,
235
+ ServiceLevelID: '',
236
+ ShipmentTerms: '',
237
+ Stackable: false,
238
+ WebTrakUserID: api_credentials.username
239
+ }
240
+ }
241
+ }
242
+
243
+ save_request(request)
244
+ request
245
+ end
246
+
247
+ def build_url(api_or_website, action)
248
+ case api_or_website
249
+ when :api
250
+ scheme = API[:use_ssl] ? 'https://' : 'http://'
251
+ "#{scheme}#{API[:domain]}#{API.dig(:endpoints, action)}"
252
+ when :website
253
+ WEBSITE[action]
254
+ end
255
+ end
256
+
257
+ def commit(action, request)
258
+ client_args = {
259
+ wsdl: build_url(:api, action),
260
+ convert_request_keys_to: :none,
261
+ env_namespace: :soap,
262
+ element_form_default: :qualified
263
+ }
264
+
265
+ call_args = { message: request_blueprint.deep_merge(request) }
266
+
267
+ ::FreightKit::SoapClient.new(
268
+ carrier: self,
269
+ action:,
270
+ client_args:,
271
+ call_args:,
272
+ soap_operation: API.dig(:actions, action)
273
+ ).call&.to_hash&.with_indifferent_access
274
+ end
275
+
276
+ def parse_amount(amount)
277
+ ['$', ','].each do |char|
278
+ amount = amount.sub(char, '')
279
+ end
280
+
281
+ return 0 if amount.blank?
282
+
283
+ amount = (amount.to_f * 100).to_i
284
+ end
285
+
286
+ def parse_document_response(action, tracking_number)
287
+ document_response = DocumentResponse.new
288
+
289
+ selenoid_credential = fetch_credential(:selenoid)
290
+ website_credentials = fetch_credential(:website)
291
+
292
+ browser = Watir::Browser.new(*selenoid_credential.watir_args)
293
+ browser.goto('https://ssworldtrak.com/WebtrakWTNew/')
294
+
295
+ browser.text_field(name: 'txtUserId').set(website_credentials.username)
296
+ browser.text_field(name: 'txtPass').set(website_credentials.password)
297
+ browser.button(name: 'btnSubmit').click
298
+
299
+ if browser.html.include?('Either UserID or Password are incorrect, please try again.')
300
+ browser.close
301
+
302
+ document_response.error = InvalidCredentialsError.new
303
+ return document_response
304
+ end
305
+
306
+ # Bypass the hover menu
307
+ browser.goto('https://ssworldtrak.com/WebtrakWTNew/Main/Reports/POD.aspx')
308
+
309
+ from = 90.days.ago.strftime('%m%d%Y')
310
+
311
+ browser.text_field(name: 'txtFromDate').wait_until(&:present?).focus
312
+
313
+ # Hack to get around JavaScript messing up our input
314
+ sleep(1)
315
+ from.chars.each do |char|
316
+ browser.text_field(name: 'txtFromDate').append(char)
317
+ end
318
+
319
+ browser.text_field(name: 'txtToDate').click
320
+ browser.element(xpath: '/html/body/form/div[3]/div[4]/div[3]/div[2]/div/div/div[3]/div').wait_until(&:present?)
321
+ .click
322
+
323
+ browser.button(name: 'btnSubmit').click
324
+
325
+ browser.text_field(id: 'yadcf-filter--grid-2').set(tracking_number)
326
+ browser.send_keys(:enter)
327
+
328
+ if browser.element(id: 'tdPODName0').wait_until(&:present?).text == 'NO POD' && action == :pod
329
+ browser.window.close
330
+ browser.original_window.use
331
+ browser.goto('https://ssworldtrak.com/WebtrakWTNew/logoff.aspx')
332
+ browser.close
333
+
334
+ document_response.error = DocumentNotFoundError.new
335
+ return document_response
336
+ end
337
+
338
+ browser.element(xpath: '/html/body/form/div[3]/div[4]/div[8]/div/table/tbody/tr/td[12]/a')
339
+ .wait_until(&:present?)
340
+ .click
341
+
342
+ browser.switch_window
343
+
344
+ sleep(5)
345
+
346
+ html = browser.element(id: 'DataTables_Table_0').wait_until(&:present?).html
347
+ html = Nokogiri::HTML(html)
348
+ link_id = nil
349
+
350
+ html.css('tbody tr').each do |row|
351
+ next unless row.css('td:nth-child(3)').text == action.to_s.upcase
352
+
353
+ link_id = row.css('td:nth-child(1) a').attr('id').value
354
+ end
355
+
356
+ if link_id.blank?
357
+ browser.window.close
358
+ browser.original_window.use
359
+ browser.goto('https://ssworldtrak.com/WebtrakWTNew/logoff.aspx')
360
+ browser.close
361
+
362
+ document_response.error = DocumentNotFoundError.new
363
+ return document_response
364
+ end
365
+
366
+ browser.element(css: "##{link_id}").click
367
+
368
+ sleep(50) # so Chrome can finish downloading, Selenoid default timeout is 60s
369
+
370
+ download_url = "#{selenoid_credential.selenoid_options[:download_url]}/#{browser.driver.session_id}"
371
+ response = HTTPClient.get("#{download_url}/?json")
372
+
373
+ filename = URI.encode_www_form_component(JSON.parse(response.body)&.last)
374
+ url = "#{download_url}/#{filename}"
375
+
376
+ document_response.request = URI.parse(url)
377
+
378
+ begin
379
+ response = HTTPClient.get(url)
380
+ rescue StandardError => e
381
+ document_response.error = e
382
+ return document_response
383
+ end
384
+
385
+ browser.window.close
386
+ browser.original_window.use
387
+ browser.goto('https://ssworldtrak.com/WebtrakWTNew/logoff.aspx')
388
+ browser.close
389
+
390
+ unless response.code == 200
391
+ document_response.error = DocumentNotFoundError.new
392
+
393
+ return document_response
394
+ end
395
+
396
+ document_response.assign_attributes(content_type: response.headers['content-type'], data: response.body)
397
+ document_response
398
+ end
399
+
400
+ def parse_rate_response(shipment:, response:)
401
+ rate_response = RateResponse.new(request: last_request, response:)
402
+
403
+ if response.blank?
404
+ rate_response.error = ResponseError.new('Blank response')
405
+ return rate_response
406
+ end
407
+
408
+ error = response.dig(:get_rating_response, :get_rating_result, :rating_output, :message)
409
+
410
+ if error.present?
411
+ if error.include?('do not service this lane')
412
+ rate_response.error = UnserviceableError.new(
413
+ 'Incorrect ZIP code or no service available at origin and/or destination'
414
+ )
415
+ return rate_response
416
+ end
417
+
418
+ pretty_error = error.strip.gsub('can not', 'cannot')
419
+
420
+ rate_response.error = ResponseError.new(pretty_error)
421
+ return rate_response
422
+ end
423
+
424
+ result = response.dig(:get_rating_response, :get_rating_result, :rating_output)
425
+
426
+ if result.blank?
427
+ rate_response.error = ResponseError.new('Blank response')
428
+ return rate_response
429
+ end
430
+
431
+ cents = parse_amount(result[:standard_total_rate])
432
+
433
+ if cents.blank?
434
+ rate_response.error = ResponseError.new('Cost is blank')
435
+ return rate_response
436
+ end
437
+
438
+ prices = []
439
+ prices << Price.new(blame: :api, cents:, description: 'Freight')
440
+
441
+ accessorial_outputs = result.dig(:accessorial_output, :accessorial_output)
442
+
443
+ accessorial_outputs.each do |accessorial_output|
444
+ prices << Price.new(blame: :api, cents: 0, description: accessorial_output_description(accessorial_output))
445
+ end
446
+
447
+ transit_days = response[:transit_days].to_i
448
+
449
+ rate = Rate.new(
450
+ carrier: self,
451
+ carrier_name: name,
452
+ currency: 'USD',
453
+ estimate_reference: nil,
454
+ scac:,
455
+ service_name: :standard,
456
+ shipment:,
457
+ prices:,
458
+ transit_days:,
459
+ with_excessive_length_fees: rates_with_excessive_length_fees?
460
+ )
461
+
462
+ rate_response.rates = [rate]
463
+ rate_response
464
+ end
465
+
466
+ def request_blueprint
467
+ api_credentials = fetch_credential(:api)
468
+
469
+ {
470
+ request: {
471
+ Application: 'ThirdParty',
472
+ AccountNumber: api_credentials.account,
473
+ UserID: api_credentials.username,
474
+ Password: api_credentials.password,
475
+ TestMode: 'N'
476
+ }
477
+ }
478
+ end
479
+
480
+ # Tracking
481
+ end
482
+ end
483
+ end
@@ -0,0 +1,10 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CleopatraTrucking < Carrier
4
+ class << self
5
+ def id = 'a630f877-5054-4f75-b446-fed6c4bbf942'
6
+ def name = 'Cleopatra Trucking'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CliffordTransportation < Carrier
4
+ class << self
5
+ def id = '4d25455c-f24a-4cf3-bb43-f40e88a6fdd9'
6
+ def name = 'Clifford Transportation'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CMSDomestic < Carrier
4
+ class << self
5
+ def check_mailing_addresses
6
+ [
7
+ Address.new(
8
+ city: 'Denver',
9
+ country: Countries.find_by(iso31661_alpha2: 'US'),
10
+ id: '494c4cf7-3b71-4a5b-b274-afe316f37e46',
11
+ postal_code: '80217',
12
+ region_abbreviation: 'CO',
13
+ street: 'PO Box 17769'
14
+ )
15
+ ]
16
+ end
17
+
18
+ def id = '272af805-19ad-4754-b26f-9177fc39c91d'
19
+ def legal_name = 'Charles M. Schayer & Co.'
20
+ def name = 'CMS Domestic'
21
+ def us_dot_number = 2_249_786
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CNDLogistics < Carrier
4
+ class << self
5
+ def id = '114bc7ea-33f4-4368-b192-2279fc1a65c5'
6
+ def name = 'CND Logistics'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,27 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CoastToCoastTransport < Carrier
4
+ class << self
5
+ def contacts
6
+ [Contact.new(department: 'Main', id: '1f791e8b-74cb-452d-971b-50b37f0dac2e', phone: '+13363624940')]
7
+ end
8
+
9
+ def headquarters
10
+ Address.new(
11
+ city: 'Salisbury',
12
+ country: Countries.find_by(iso31661_alpha2: 'US'),
13
+ id: '949745f1-ec5c-4955-b384-60ecc1ff8c4d',
14
+ postal_code: '28146',
15
+ region_abbreviation: 'NC',
16
+ street: '324 Sailboat Dr'
17
+ )
18
+ end
19
+
20
+ def id = '760faad0-3911-4dc5-bf8e-f8a6e697dc06'
21
+ def legal_name = 'Coast to Coast Transport LLC'
22
+ def name = 'Coast to Coast Transport'
23
+ def us_dot_number = 3_157_546
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CountrywideCarriers < Carrier
4
+ class << self
5
+ def id = '41fe9756-78bb-42a6-8f70-06df170b4a2e'
6
+ def name = 'Countrywide Carriers'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,35 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CPLExpress < Carrier
4
+ class << self
5
+ def contacts
6
+ [
7
+ Contact.new(
8
+ department: 'Dispatch',
9
+ email: 'dispatch@cplexpress.com',
10
+ id: 'ba43e014-2e59-43d6-8f39-acb80128b8c9'
11
+ ),
12
+ Contact.new(department: 'Main', id: 'a7daa1e5-4abb-48de-9893-493e91806a83', phone: '+13104189008')
13
+ ]
14
+ end
15
+
16
+ def headquarters
17
+ Address.new(
18
+ city: 'Santa Fe Springs',
19
+ country: Countries.find_by(iso31661_alpha2: 'US'),
20
+ id: '851dd7b4-b07a-46d2-af99-4cc76de0d15b',
21
+ postal_code: '90670',
22
+ region_abbreviation: 'CA',
23
+ street: '10715 Springdale Avenue #5'
24
+ )
25
+ end
26
+
27
+ def id = '5d814738-f7b8-4727-b44c-d899f5e116e0'
28
+ def legal_name = 'CPL Express Inc'
29
+ def name = 'CPL Express'
30
+ def us_dot_number = 1_376_496
31
+ def us_mc_number = 525_362
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ module FreightKit
2
+ module Carriers
3
+ class CrosbyTruckingService < Carrier
4
+ class << self
5
+ def contacts
6
+ [Contact.new(department: 'Main', id: '8f0e96f7-c0e8-409a-8773-e1886abaf296', phone: '+15402349268')]
7
+ end
8
+
9
+ def headquarters
10
+ Address.new(
11
+ city: 'Mt Sidney',
12
+ country: Countries.find_by(iso31661_alpha2: 'US'),
13
+ id: 'b6aa80c9-3fab-4097-ba56-be53c22916b6',
14
+ postal_code: '24467',
15
+ region_abbreviation: 'VA',
16
+ street: '270 Keezletown Road'
17
+ )
18
+ end
19
+
20
+ def id = '52ef5a35-0c6b-4a70-a3ac-4568f273d859'
21
+ def legal_name = 'Crosby Trucking Service Inc'
22
+ def name = 'Crosby Trucking Service'
23
+ def us_dot_number = 32_052
24
+ def us_mc_number = 142_823
25
+ def website_url = 'https://www.crosbytrucking.com'
26
+ end
27
+ end
28
+ end
29
+ end