friendly_shipping 0.10.0 → 0.10.2

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/README.md +16 -16
  4. data/lib/friendly_shipping/services/rl/parse_rate_quote_response.rb +3 -3
  5. data/lib/friendly_shipping/services/ups_json/parse_money_hash.rb +1 -0
  6. data/lib/friendly_shipping/services/usps_international/parse_rate_response.rb +3 -3
  7. data/lib/friendly_shipping/services/{usps → usps_international}/parse_xml_response.rb +1 -1
  8. data/lib/friendly_shipping/services/usps_international/serialize_rate_request.rb +1 -1
  9. data/lib/friendly_shipping/services/usps_ship/parse_rate_estimates_response.rb +1 -1
  10. data/lib/friendly_shipping/version.rb +1 -1
  11. metadata +3 -52
  12. data/lib/friendly_shipping/inflections.rb +0 -10
  13. data/lib/friendly_shipping/services/ups/label.rb +0 -20
  14. data/lib/friendly_shipping/services/ups/label_billing_options.rb +0 -41
  15. data/lib/friendly_shipping/services/ups/label_item_options.rb +0 -75
  16. data/lib/friendly_shipping/services/ups/label_options.rb +0 -174
  17. data/lib/friendly_shipping/services/ups/label_package_options.rb +0 -49
  18. data/lib/friendly_shipping/services/ups/parse_address_classification_response.rb +0 -29
  19. data/lib/friendly_shipping/services/ups/parse_address_validation_response.rb +0 -53
  20. data/lib/friendly_shipping/services/ups/parse_city_state_lookup_response.rb +0 -33
  21. data/lib/friendly_shipping/services/ups/parse_modifier_element.rb +0 -29
  22. data/lib/friendly_shipping/services/ups/parse_money_element.rb +0 -128
  23. data/lib/friendly_shipping/services/ups/parse_rate_response.rb +0 -101
  24. data/lib/friendly_shipping/services/ups/parse_shipment_accept_response.rb +0 -77
  25. data/lib/friendly_shipping/services/ups/parse_shipment_confirm_response.rb +0 -24
  26. data/lib/friendly_shipping/services/ups/parse_time_in_transit_response.rb +0 -56
  27. data/lib/friendly_shipping/services/ups/parse_void_shipment_response.rb +0 -24
  28. data/lib/friendly_shipping/services/ups/parse_xml_response.rb +0 -50
  29. data/lib/friendly_shipping/services/ups/rate_estimate_options.rb +0 -111
  30. data/lib/friendly_shipping/services/ups/rate_estimate_package_options.rb +0 -22
  31. data/lib/friendly_shipping/services/ups/serialize_access_request.rb +0 -20
  32. data/lib/friendly_shipping/services/ups/serialize_address_snippet.rb +0 -60
  33. data/lib/friendly_shipping/services/ups/serialize_address_validation_request.rb +0 -40
  34. data/lib/friendly_shipping/services/ups/serialize_city_state_lookup_request.rb +0 -26
  35. data/lib/friendly_shipping/services/ups/serialize_package_node.rb +0 -75
  36. data/lib/friendly_shipping/services/ups/serialize_rating_service_selection_request.rb +0 -98
  37. data/lib/friendly_shipping/services/ups/serialize_shipment_accept_request.rb +0 -27
  38. data/lib/friendly_shipping/services/ups/serialize_shipment_address_snippet.rb +0 -21
  39. data/lib/friendly_shipping/services/ups/serialize_shipment_confirm_request.rb +0 -285
  40. data/lib/friendly_shipping/services/ups/serialize_time_in_transit_request.rb +0 -56
  41. data/lib/friendly_shipping/services/ups/serialize_void_shipment_request.rb +0 -21
  42. data/lib/friendly_shipping/services/ups/shipping_methods.rb +0 -111
  43. data/lib/friendly_shipping/services/ups/timing_options.rb +0 -33
  44. data/lib/friendly_shipping/services/ups.rb +0 -218
  45. data/lib/friendly_shipping/services/usps/choose_package_rate.rb +0 -40
  46. data/lib/friendly_shipping/services/usps/machinable_package.rb +0 -50
  47. data/lib/friendly_shipping/services/usps/parse_address_validation_response.rb +0 -43
  48. data/lib/friendly_shipping/services/usps/parse_city_state_lookup_response.rb +0 -41
  49. data/lib/friendly_shipping/services/usps/parse_package_rate.rb +0 -159
  50. data/lib/friendly_shipping/services/usps/parse_rate_response.rb +0 -86
  51. data/lib/friendly_shipping/services/usps/parse_time_in_transit_response.rb +0 -240
  52. data/lib/friendly_shipping/services/usps/rate_estimate_options.rb +0 -26
  53. data/lib/friendly_shipping/services/usps/rate_estimate_package_options.rb +0 -66
  54. data/lib/friendly_shipping/services/usps/serialize_address_validation_request.rb +0 -25
  55. data/lib/friendly_shipping/services/usps/serialize_city_state_lookup_request.rb +0 -20
  56. data/lib/friendly_shipping/services/usps/serialize_rate_request.rb +0 -83
  57. data/lib/friendly_shipping/services/usps/serialize_time_in_transit_request.rb +0 -22
  58. data/lib/friendly_shipping/services/usps/shipping_methods.rb +0 -66
  59. data/lib/friendly_shipping/services/usps/timing_options.rb +0 -19
  60. data/lib/friendly_shipping/services/usps.rb +0 -115
@@ -1,115 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nokogiri'
4
-
5
- module FriendlyShipping
6
- module Services
7
- class Usps
8
- include Dry::Monads::Result::Mixin
9
-
10
- attr_reader :test, :login, :client
11
-
12
- CARRIER = FriendlyShipping::Carrier.new(
13
- id: 'usps',
14
- name: 'United States Postal Service',
15
- code: 'usps',
16
- shipping_methods: SHIPPING_METHODS
17
- )
18
-
19
- TEST_URL = 'https://stg-secure.shippingapis.com/ShippingAPI.dll'
20
- LIVE_URL = 'https://secure.shippingapis.com/ShippingAPI.dll'
21
-
22
- RESOURCES = {
23
- address_validation: 'Verify',
24
- city_state_lookup: 'CityStateLookup',
25
- rates: 'RateV4',
26
- timings: 'SDCGetLocations'
27
- }.freeze
28
-
29
- def initialize(login:, test: true, client: HttpClient.new)
30
- @login = login
31
- @test = test
32
- @client = client
33
- end
34
-
35
- def carriers
36
- Success([CARRIER])
37
- end
38
-
39
- # Get rate estimates from USPS
40
- #
41
- # @param [Physical::Shipment] shipment
42
- # @param [FriendlyShipping::Services::Usps::RateEstimateOptions] options What options
43
- # to use for this rate estimate call
44
- #
45
- # @return [Result<Array<FriendlyShipping::Rate>>] When successfully parsing, an array of rates in a Success Monad.
46
- # When the parsing is not successful or USPS can't give us rates, a Failure monad containing something that
47
- # can be serialized into an error message using `to_s`.
48
- def rate_estimates(shipment, options: RateEstimateOptions.new, debug: false)
49
- rate_request_xml = SerializeRateRequest.call(shipment: shipment, login: login, options: options)
50
- request = build_request(api: :rates, xml: rate_request_xml, debug: debug)
51
-
52
- client.post(request).bind do |response|
53
- ParseRateResponse.call(response: response, request: request, shipment: shipment, options: options)
54
- end
55
- end
56
-
57
- # Get timing estimates from USPS
58
- #
59
- # @param [Physical::Shipment] shipment The shipment we want to estimate. Only destination zip and origin zip are used.
60
- # @param [FriendlyShipping::Services::Usps::TimingOptions] options Options for the timing estimate call
61
- def timings(shipment, options:, debug: false)
62
- timings_request_xml = SerializeTimeInTransitRequest.call(shipment: shipment, options: options, login: login)
63
- request = build_request(api: :timings, xml: timings_request_xml, debug: debug)
64
-
65
- client.post(request).bind do |response|
66
- ParseTimeInTransitResponse.call(response: response, request: request)
67
- end
68
- end
69
-
70
- # Validate an address.
71
- # @param [Physical::Location] location The address we want to verify
72
- # @return [Result<ApiResult<Array<Physical::Location>>>] The response data from UPS encoded in a
73
- # `Physical::Location` object. Name and Company name are always nil, the
74
- # address lines will be made conformant to what USPS considers right. The returned location will
75
- # have the address_type set if possible.
76
- def address_validation(location, debug: false)
77
- address_validation_request_xml = SerializeAddressValidationRequest.call(location: location, login: login)
78
- request = build_request(api: :address_validation, xml: address_validation_request_xml, debug: debug)
79
-
80
- client.post(request).bind do |response|
81
- ParseAddressValidationResponse.call(response: response, request: request)
82
- end
83
- end
84
-
85
- # Find city and state for a given ZIP code
86
- # @param [Physical::Location] location A location object with country and ZIP code set
87
- # @return [Result<ApiResult<Array<Physical::Location>>>] The response data from USPS encoded in a
88
- # `Physical::Location` object. Country, City and ZIP code will be set, everything else nil.
89
- def city_state_lookup(location, debug: false)
90
- city_state_lookup_request_xml = SerializeCityStateLookupRequest.call(location: location, login: login)
91
- request = build_request(api: :city_state_lookup, xml: city_state_lookup_request_xml, debug: debug)
92
-
93
- client.post(request).bind do |response|
94
- ParseCityStateLookupResponse.call(response: response, request: request)
95
- end
96
- end
97
-
98
- private
99
-
100
- def build_request(api:, xml:, debug:)
101
- FriendlyShipping::Request.new(
102
- url: base_url,
103
- http_method: "POST",
104
- body: "API=#{RESOURCES[api]}&XML=#{CGI.escape xml}",
105
- readable_body: xml,
106
- debug: debug
107
- )
108
- end
109
-
110
- def base_url
111
- test ? TEST_URL : LIVE_URL
112
- end
113
- end
114
- end
115
- end