usps-ruby-client 0.1.0 → 0.1.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +113 -0
- data/README.md +11 -6
- data/lib/tasks/api.rake +1 -1
- data/lib/usps/api/endpoints/carrier_pickup_schedule.rb +22 -47
- data/lib/usps/api/endpoints/city_state_lookup.rb +5 -12
- data/lib/usps/api/endpoints/e_vs_express_mail_intl.rb +108 -217
- data/lib/usps/api/endpoints/e_vs_first_class_mail_intl.rb +95 -191
- data/lib/usps/api/endpoints/e_vs_priority_mail_intl.rb +109 -221
- data/lib/usps/api/endpoints/e_vsgxg_get_label.rb +103 -208
- data/lib/usps/api/endpoints/e_vsi_cancel.rb +5 -12
- data/lib/usps/api/endpoints/hfp_facility_info.rb +8 -20
- data/lib/usps/api/endpoints/intl_rate_v2.rb +31 -66
- data/lib/usps/api/endpoints/pts_email.rb +14 -20
- data/lib/usps/api/endpoints/pts_pod.rb +23 -29
- data/lib/usps/api/endpoints/pts_rre.rb +15 -21
- data/lib/usps/api/endpoints/ptst_pod.rb +16 -22
- data/lib/usps/api/endpoints/rate_v4.rb +34 -72
- data/lib/usps/api/endpoints/scan.rb +27 -58
- data/lib/usps/api/endpoints/track_v2.rb +9 -15
- data/lib/usps/api/endpoints/usps_returns_label.rb +33 -70
- data/lib/usps/api/endpoints/verify.rb +13 -30
- data/lib/usps/api/endpoints/zip_code_lookup.rb +11 -25
- data/lib/usps/api/templates/_options.erb +1 -4
- data/lib/usps/api/templates/method.erb +4 -8
- data/lib/usps/version.rb +2 -1
- data/usps-ruby-client-0.1.0.gem +0 -0
- data/usps-ruby-client-0.1.2.gem +0 -0
- data/usps-ruby-client.gemspec +2 -1
- metadata +25 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d043c38b987945e397288c72d37999ec2cd48feafcfa2ad36e5bf8384f4f3b3f
|
4
|
+
data.tar.gz: efdd9aadfd5e17502a72ceed2c5dee89d2c395cb0e784bb77ec6f230a6b5eb5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28240a6e23dc9d489e8d8dcf93925e1a71bba85b6e4e78eae4962705aca039abcdbaf3797bcc832c3618646ff47700dad9c71da97e90df54cf3812d08a714a14
|
7
|
+
data.tar.gz: bf52634627bd132fffae3c5c493f9c1e29366ebe9e576905ac4c69710cb005f0021ea33ed85113e22e0ce6e23877166efe1abc6e15d85bfcc79c58d7dae7112c
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
usps-ruby-client (0.1.3)
|
5
|
+
activesupport (~> 7.0)
|
6
|
+
builder (~> 3.2)
|
7
|
+
faraday (~> 0.17)
|
8
|
+
faraday_middleware (~> 0.14)
|
9
|
+
multi_xml (~> 0.6)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
activesupport (7.0.2.3)
|
15
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
|
+
i18n (>= 1.6, < 2)
|
17
|
+
minitest (>= 5.1)
|
18
|
+
tzinfo (~> 2.0)
|
19
|
+
amazing_print (1.4.0)
|
20
|
+
ast (2.4.2)
|
21
|
+
builder (3.2.4)
|
22
|
+
coderay (1.1.3)
|
23
|
+
concurrent-ruby (1.1.10)
|
24
|
+
diff-lcs (1.5.0)
|
25
|
+
docile (1.4.0)
|
26
|
+
erubis (2.7.0)
|
27
|
+
faraday (0.17.5)
|
28
|
+
multipart-post (>= 1.2, < 3)
|
29
|
+
faraday_middleware (0.14.0)
|
30
|
+
faraday (>= 0.7.4, < 1.0)
|
31
|
+
i18n (1.10.0)
|
32
|
+
concurrent-ruby (~> 1.0)
|
33
|
+
method_source (1.0.0)
|
34
|
+
mini_portile2 (2.8.0)
|
35
|
+
minitest (5.15.0)
|
36
|
+
multi_xml (0.6.0)
|
37
|
+
multipart-post (2.1.1)
|
38
|
+
nokogiri (1.13.3)
|
39
|
+
mini_portile2 (~> 2.8.0)
|
40
|
+
racc (~> 1.4)
|
41
|
+
parallel (1.22.1)
|
42
|
+
parser (3.1.1.0)
|
43
|
+
ast (~> 2.4.1)
|
44
|
+
pry (0.14.1)
|
45
|
+
coderay (~> 1.1)
|
46
|
+
method_source (~> 1.0)
|
47
|
+
racc (1.6.0)
|
48
|
+
rainbow (3.1.1)
|
49
|
+
rake (12.3.3)
|
50
|
+
regexp_parser (2.2.1)
|
51
|
+
rexml (3.2.5)
|
52
|
+
rspec (3.11.0)
|
53
|
+
rspec-core (~> 3.11.0)
|
54
|
+
rspec-expectations (~> 3.11.0)
|
55
|
+
rspec-mocks (~> 3.11.0)
|
56
|
+
rspec-core (3.11.0)
|
57
|
+
rspec-support (~> 3.11.0)
|
58
|
+
rspec-expectations (3.11.0)
|
59
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
+
rspec-support (~> 3.11.0)
|
61
|
+
rspec-mocks (3.11.0)
|
62
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
63
|
+
rspec-support (~> 3.11.0)
|
64
|
+
rspec-support (3.11.0)
|
65
|
+
rubocop (1.26.1)
|
66
|
+
parallel (~> 1.10)
|
67
|
+
parser (>= 3.1.0.0)
|
68
|
+
rainbow (>= 2.2.2, < 4.0)
|
69
|
+
regexp_parser (>= 1.8, < 3.0)
|
70
|
+
rexml
|
71
|
+
rubocop-ast (>= 1.16.0, < 2.0)
|
72
|
+
ruby-progressbar (~> 1.7)
|
73
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
74
|
+
rubocop-ast (1.16.0)
|
75
|
+
parser (>= 3.1.1.0)
|
76
|
+
rubocop-performance (1.13.3)
|
77
|
+
rubocop (>= 1.7.0, < 2.0)
|
78
|
+
rubocop-ast (>= 0.4.0)
|
79
|
+
rubocop-rspec (2.9.0)
|
80
|
+
rubocop (~> 1.19)
|
81
|
+
ruby-progressbar (1.11.0)
|
82
|
+
simplecov (0.21.2)
|
83
|
+
docile (~> 1.1)
|
84
|
+
simplecov-html (~> 0.11)
|
85
|
+
simplecov_json_formatter (~> 0.1)
|
86
|
+
simplecov-html (0.12.3)
|
87
|
+
simplecov_json_formatter (0.1.4)
|
88
|
+
tzinfo (2.0.4)
|
89
|
+
concurrent-ruby (~> 1.0)
|
90
|
+
unicode-display_width (2.1.0)
|
91
|
+
webrick (1.7.0)
|
92
|
+
yard (0.9.27)
|
93
|
+
webrick (~> 1.7.0)
|
94
|
+
|
95
|
+
PLATFORMS
|
96
|
+
ruby
|
97
|
+
|
98
|
+
DEPENDENCIES
|
99
|
+
amazing_print (~> 1.2)
|
100
|
+
erubis (~> 2.7)
|
101
|
+
nokogiri (~> 1.10)
|
102
|
+
pry (~> 0.13)
|
103
|
+
rake (~> 12.0)
|
104
|
+
rspec (~> 3.0)
|
105
|
+
rubocop (~> 1.7)
|
106
|
+
rubocop-performance (~> 1.9)
|
107
|
+
rubocop-rspec (~> 2.1)
|
108
|
+
simplecov (~> 0.21)
|
109
|
+
usps-ruby-client!
|
110
|
+
yard (~> 0.9)
|
111
|
+
|
112
|
+
BUNDLED WITH
|
113
|
+
2.3.5
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ USPS Ruby Client
|
|
6
6
|
|
7
7
|
An unofficial Ruby client for The United Sates Postal Service Web Tools API.
|
8
8
|
|
9
|
-
**Disclaimer** This gem is mostly auto-generated from the [USPS API User Guides](https://www.usps.com/business/web-tools-apis/documentation-updates.htm). Because of inconsistencies and
|
9
|
+
**Disclaimer** This gem is mostly auto-generated from the [USPS API User Guides](https://www.usps.com/business/web-tools-apis/documentation-updates.htm). Because of inconsistencies and inaccuracies in the user guides, some endpoints may not work as expected or may not be consistent with other methods in this gem.
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -52,26 +52,31 @@ client.city_state_lookup({
|
|
52
52
|
}
|
53
53
|
```
|
54
54
|
|
55
|
+
## RubyDoc Automatic Documentation
|
56
|
+
The generator also creates [documentation](https://rubydoc.info/gems/usps-ruby-client) to help you navigate the available methods. It has the same issues presented in the disclaimer above.
|
57
|
+
|
55
58
|
## Development
|
56
59
|
|
57
60
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
58
61
|
|
59
62
|
### Updating the auto-generated methods
|
60
63
|
|
61
|
-
Because the USPS website does not allow scripts to make requests against their website you must [download the API User Guide HTML files manually](https://www.usps.com/business/web-tools-apis/documentation-updates.htm). I recommend right-clicking the **HTM** and selecting *Save Link As...* to prevent any browser extensions from injecting their code and breaking the parsing.
|
64
|
+
Because the USPS website does not allow scripts to make requests against their website, you must [download the API User Guide HTML files manually](https://www.usps.com/business/web-tools-apis/documentation-updates.htm). I recommend right-clicking the **HTM** and selecting *Save Link As...* to prevent any browser extensions from injecting their code and breaking the parsing.
|
65
|
+
|
66
|
+
Place just the `.htm` files in `lib/data/api` (and remove any that may no longer be active) and run `rake usps:api:update`. This task will recreate all the appropriate methods and some basic spec tests.
|
62
67
|
|
63
|
-
|
68
|
+
We might be able to automate this with a headless browser tool like Watir, but only if we can do that in a way that doesn't bloat the gem as a whole.
|
64
69
|
|
65
70
|
## Contributing
|
66
71
|
|
67
72
|
Bug reports and pull requests are welcome on GitHub at https://github.com/joeyparis/usps-ruby-client. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/joeyparis/usps-ruby-client/blob/master/CODE_OF_CONDUCT.md).
|
68
73
|
|
69
|
-
This is still an early work-in-progress so any additional help is
|
74
|
+
This project is still an early work-in-progress, so any additional help is greatly appreciated!
|
70
75
|
|
71
76
|
## License
|
72
77
|
|
73
|
-
The gem is available as open
|
78
|
+
The gem is available as open-source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
74
79
|
|
75
80
|
## Code of Conduct
|
76
81
|
|
77
|
-
Everyone interacting in the Usps project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/joeyparis/usps-ruby-client/blob/master/CODE_OF_CONDUCT.md).
|
82
|
+
Everyone interacting in the Usps project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [code of conduct](https://github.com/joeyparis/usps-ruby-client/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/tasks/api.rake
CHANGED
@@ -25,7 +25,7 @@ namespace :usps do
|
|
25
25
|
row_data = {}
|
26
26
|
columns.each_with_index do |k, i|
|
27
27
|
row_data[k.to_s.gsub(/[[:space:]]+/, ' ').strip] =
|
28
|
-
row[i].is_a?
|
28
|
+
row[i].is_a?(String) ? row[i].to_s.gsub(/[[:space:]]+/, ' ').strip : row[i]
|
29
29
|
end
|
30
30
|
row_data
|
31
31
|
end
|
@@ -6,57 +6,32 @@ module Usps
|
|
6
6
|
module Api
|
7
7
|
module Endpoints
|
8
8
|
module CarrierPickupSchedule
|
9
|
-
#
|
10
|
-
# Package Pickup Schedule API
|
11
|
-
#
|
12
9
|
# The Package Pickup Schedule API schedules a
|
13
10
|
# Package Pickup and provides the user a confirmation number for the scheduled
|
14
11
|
# pickup. Prior to making a Pickup Schedule call, it is recommended to use
|
15
12
|
# the Pickup Availability API to confirm that service is available.
|
16
|
-
#
|
17
|
-
# @option
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
|
38
|
-
# @option option [String] :Phone (Required)
|
39
|
-
# - Two formats are allowed: (###) 123-4567 or ###-123-4567. For example: <Phone>5555551234</Phone> or <Phone>555-555-1234</Phone>
|
40
|
-
# @option option [String] :Extension (Optional)
|
41
|
-
# - Optional value for Phone Extension. For example: <Extension>201</Extension>
|
42
|
-
# @option option [(Group)] :Package (Required)
|
43
|
-
# - No values entered with this tag. <ServiceType> and <Count> tags are embedded under this. Refer to the XML request example section, below, to see how these embedded tags are formatted. If the <Count> for a service type is zero, you do not need to encode a <Package> but you must have at least one <Package> with embedded <ServiceType> and <Count> tags.
|
44
|
-
# @option option [String] :ServiceType (Required)
|
45
|
-
# - This tag is embedded under the <Package> tag. If your pickup contains more than one Service Type, use additional <Package> tags for each service type with the accompanying <ServiceType> and <Count> tags. Refer to the XML Request Example below to see how these embedded tags are formatted. For example: <ServiceType>PriorityMailExpress</ServiceType>
|
46
|
-
# @option option [String] :Count (Required)
|
47
|
-
# - This tag is embedded under the <Package> tag. Enter the number of packages for the accompanying <ServiceType> tag. Maximum characters allowed: 3 or 999 packages. If your pickup contains more than one Service Type, use additional <Package> tags for each service type with the accompanying <ServiceType> and <Count> tags. Refer to the XML request example section, below, to see how these embedded tags are formatted. For example: <Count>2</Count>
|
48
|
-
# @option option [String] :EstimatedWeight (Required)
|
49
|
-
# - Enter the estimated aggregate weight (in pounds) of all packages being picked up. For example: <EstimatedWeight>14</EstimatedWeight>
|
50
|
-
# @option option [String] :PackageLocation (Required)
|
51
|
-
# - Enter one of the following values: Note: "Other" requires information in the value for the <SpecialInstructions> tag. For example: <PackageLocation>Front Door</PackageLocation>
|
52
|
-
# @option option [String] :SpecialInstructions (Optional)
|
53
|
-
# - Value Required when PackageLocation is “Other”. Only alpha, numeric, commas, periods, apostrophes, _, &, -, ( ), ?, #, / +, @ and space characters may be used. For example: <SpecialInstructions>Packages are behind the screen door.</SpecialInstructions>
|
54
|
-
# @option option [String] :EmailAddress (Optional)
|
55
|
-
# - If provided, email notifications will be sent confirming package pickup, or request changes and cancellations. Maximum characters allowed: 50. For example: <EmailAddress>cpapple@email.com</EmailAddress>
|
56
|
-
|
57
|
-
#
|
58
|
-
# @see
|
59
|
-
def carrier_pickup_schedule(options = {})
|
13
|
+
# @param [Hash] options
|
14
|
+
# @option options [required, Hash] carrier_pickup_schedule_request
|
15
|
+
# * *:first_name* (required, String) — Only alpha characters, apostrophes, spaces, periods, and hyphens "-" may be used. For example: <FirstName>John</FirstName>
|
16
|
+
# * *:last_name* (required, String) — Only alpha characters, apostrophes, spaces, periods and hyphens "-" may be used. For example: <LastName>Doe</LastName>
|
17
|
+
# * *:firm_name* (String) — Only alpha and numeric characters, apostrophes, spaces, hyphens "-" and ampersands "&" may be used. Use this tag for a firm or company name. Some firms/companies that have their own ZIP codes require the use of firm name to properly identify their address. Note: FirmName is Optional except if the First Name and Last Name tags are null. For example: <FirmName>ABC Company</FirmName>
|
18
|
+
# * *:suite_or_apt* (required, String) — Apartment or suite number. Optional except if needed to uniquely identify an address at a multiple dwelling address, for example, an apartment building. For example: <SuiteOrApt>Suite 777</SuiteOrApt>
|
19
|
+
# * *:address2* (required, String) — Street address. For example: <Address2>1390 Market Street</Address2>
|
20
|
+
# * *:urbanization* (required, String) — Use this tag for Urbanization (for Puerto Rico only). ZIP Code prefixes 006 to 009, if area is so designated.
|
21
|
+
# * *:city* (required, String) — City name. Either ZIP5 or City and State are required. For example: <City>Houston</City>
|
22
|
+
# * *:state* (required, String) — State abbreviation. Either ZIP5 or City and State are required. For example: <State>TX</State>
|
23
|
+
# * *:zip5* (required, String) — 5-digit ZIP Code. Either ZIP5 or City and State are required. For example: <ZIP5>77058</ZIP5>
|
24
|
+
# * *:zip4* (required, String) — Use this tag for a 4 digit ZIP Code. For example: <ZIP4>1234</ZIP4>
|
25
|
+
# * *:phone* (required, String) — Two formats are allowed: (###) 123-4567 or ###-123-4567. For example: <Phone>5555551234</Phone> or <Phone>555-555-1234</Phone>
|
26
|
+
# * *:extension* (String) — Optional value for Phone Extension. For example: <Extension>201</Extension>
|
27
|
+
# * *:package* (required, Hash) — No values entered with this tag. <ServiceType> and <Count> tags are embedded under this. Refer to the XML request example section, below, to see how these embedded tags are formatted. If the <Count> for a service type is zero, you do not need to encode a <Package> but you must have at least one <Package> with embedded <ServiceType> and <Count> tags.
|
28
|
+
# * *:service_type* (required, String) — This tag is embedded under the <Package> tag. If your pickup contains more than one Service Type, use additional <Package> tags for each service type with the accompanying <ServiceType> and <Count> tags. Refer to the XML Request Example below to see how these embedded tags are formatted. For example: <ServiceType>PriorityMailExpress</ServiceType>
|
29
|
+
# * *:count* (required, String) — This tag is embedded under the <Package> tag. Enter the number of packages for the accompanying <ServiceType> tag. Maximum characters allowed: 3 or 999 packages. If your pickup contains more than one Service Type, use additional <Package> tags for each service type with the accompanying <ServiceType> and <Count> tags. Refer to the XML request example section, below, to see how these embedded tags are formatted. For example: <Count>2</Count>
|
30
|
+
# * *:estimated_weight* (required, String) — Enter the estimated aggregate weight (in pounds) of all packages being picked up. For example: <EstimatedWeight>14</EstimatedWeight>
|
31
|
+
# * *:package_location* (required, String) — Enter one of the following values: Note: "Other" requires information in the value for the <SpecialInstructions> tag. For example: <PackageLocation>Front Door</PackageLocation>
|
32
|
+
# * *:special_instructions* (String) — Value Required when PackageLocation is “Other”. Only alpha, numeric, commas, periods, apostrophes, _, &, -, ( ), ?, #, / +, @ and space characters may be used. For example: <SpecialInstructions>Packages are behind the screen door.</SpecialInstructions>
|
33
|
+
# * *:email_address* (String) — If provided, email notifications will be sent confirming package pickup, or request changes and cancellations. Maximum characters allowed: 50. For example: <EmailAddress>cpapple@email.com</EmailAddress>
|
34
|
+
def carrier_pickup_schedule(options = {})
|
60
35
|
throw ArgumentError.new('Required arguments :carrier_pickup_schedule_request missing') if options[:carrier_pickup_schedule_request].nil?
|
61
36
|
throw ArgumentError.new('Required arguments :carrier_pickup_schedule_request, :first_name missing') if options[:carrier_pickup_schedule_request][:first_name].nil?
|
62
37
|
throw ArgumentError.new('Required arguments :carrier_pickup_schedule_request, :last_name missing') if options[:carrier_pickup_schedule_request][:last_name].nil?
|
@@ -6,20 +6,13 @@ module Usps
|
|
6
6
|
module Api
|
7
7
|
module Endpoints
|
8
8
|
module CityStateLookup
|
9
|
-
#
|
10
|
-
# CityStateLookup API
|
11
|
-
#
|
12
9
|
# City/State Lookup API
|
13
10
|
# returns the city and state corresponding to the given ZIP Code. The CityStateLookup API processes up to five lookups per request.
|
14
|
-
#
|
15
|
-
# @option
|
16
|
-
#
|
17
|
-
#
|
18
|
-
|
19
|
-
|
20
|
-
#
|
21
|
-
# @see
|
22
|
-
def city_state_lookup(options = {})
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option options [required, Hash] city_state_lookup_request API= CityStateLookupRequest
|
13
|
+
# * *:zip_code* (required, Hash) —
|
14
|
+
# * *:zip5* (required, Integer) —
|
15
|
+
def city_state_lookup(options = {})
|
23
16
|
throw ArgumentError.new('Required arguments :city_state_lookup_request missing') if options[:city_state_lookup_request].nil?
|
24
17
|
throw ArgumentError.new('Required arguments :city_state_lookup_request, :zip_code missing') if options[:city_state_lookup_request][:zip_code].nil?
|
25
18
|
throw ArgumentError.new('Required arguments :city_state_lookup_request, :zip_code, :zip5 missing') if options[:city_state_lookup_request][:zip_code][:zip5].nil?
|