easypost 4.3.0 → 4.4.0
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/.gitattributes +4 -0
- data/.github/workflows/ci.yml +5 -3
- data/CHANGELOG.md +6 -0
- data/Makefile +37 -0
- data/README.md +5 -2
- data/VERSION +1 -1
- data/easypost.gemspec +1 -0
- data/lib/easypost/billing.rb +68 -0
- data/lib/easypost/payment_method.rb +15 -0
- data/lib/easypost/resource.rb +1 -1
- data/lib/easypost/user.rb +1 -1
- data/lib/easypost/util.rb +87 -64
- data/lib/easypost/webhook.rb +1 -1
- data/lib/easypost.rb +11 -3
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c07c842f7ff2eb209a6f447259afce469b6e1f0f481ea2bf68585869167ea8f9
|
4
|
+
data.tar.gz: 0ffb89bcb615cd1835f12e70d3c23ffa9ca9033daddddaad9db20a363f483212
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f03686d79b7d2023c26dc3c69362955465f3f99efc9b666d101a3499697ed155061afa2e8a47767bd83ae78bdd265d5363339ad4fb7686f47e5cff472483fa6a
|
7
|
+
data.tar.gz: 25f79bcc1b8c745ae9556c675d3aad56a06518853b4389081325170d2c1c1e425906bb8ded8925d40805ef961c5ccea3394da7bfe1f845117a8701f80526d526
|
data/.gitattributes
ADDED
data/.github/workflows/ci.yml
CHANGED
@@ -20,7 +20,7 @@ jobs:
|
|
20
20
|
ruby-version: ${{ matrix.rubyversion }}
|
21
21
|
bundler-cache: true
|
22
22
|
- name: run tests
|
23
|
-
run: EASYPOST_TEST_API_KEY=123 EASYPOST_PROD_API_KEY=123
|
23
|
+
run: EASYPOST_TEST_API_KEY=123 EASYPOST_PROD_API_KEY=123 make test
|
24
24
|
lint:
|
25
25
|
runs-on: ubuntu-latest
|
26
26
|
steps:
|
@@ -31,6 +31,8 @@ jobs:
|
|
31
31
|
with:
|
32
32
|
ruby-version: "3.1"
|
33
33
|
- name: Install Dependencies
|
34
|
-
run:
|
34
|
+
run: make install
|
35
35
|
- name: Lint Project
|
36
|
-
run:
|
36
|
+
run: make lint
|
37
|
+
- name: Run security analysis
|
38
|
+
run: make brakeman
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v4.4.0 (2022-07-11)
|
4
|
+
|
5
|
+
- Adds `Billing.retrieve_payment_methods()`, `Billing.fund_wallet()`, and `Billing.delete_payment_method()` functions
|
6
|
+
- Captures OS information in the user-agent header for easier debugging
|
7
|
+
- Update functions now use `patch` instead of `put` under the hood to better match API behavior and documentation. The behavior of these functions should remain the same
|
8
|
+
|
3
9
|
## v4.3.0 (2022-05-19)
|
4
10
|
|
5
11
|
- Adds the `EndShipper` Beta class with `create`, `retrieve`, `all`, and `save` functions
|
data/Makefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
## help - Display help about make targets for this Makefile
|
2
|
+
help:
|
3
|
+
@cat Makefile | grep '^## ' --color=never | cut -c4- | sed -e "`printf 's/ - /\t- /;'`" | column -s "`printf '\t'`" -t
|
4
|
+
|
5
|
+
## brakeman - Runs security analysis on the project with Brakeman
|
6
|
+
brakeman:
|
7
|
+
brakeman lib --force
|
8
|
+
|
9
|
+
## build - Builds the project
|
10
|
+
build:
|
11
|
+
gem build easypost.gemspec
|
12
|
+
|
13
|
+
## clean - Cleans the project
|
14
|
+
clean:
|
15
|
+
rm -rf coverage doc *.gem
|
16
|
+
|
17
|
+
## fix - Fix Rubocop errors
|
18
|
+
fix:
|
19
|
+
rubocop -A
|
20
|
+
|
21
|
+
## install - Install globally from source
|
22
|
+
install:
|
23
|
+
bundle install
|
24
|
+
|
25
|
+
## lint - Lint the project
|
26
|
+
lint:
|
27
|
+
rubocop
|
28
|
+
|
29
|
+
## push - Pushes the built gem to Rubygems
|
30
|
+
push:
|
31
|
+
gem push *.gem
|
32
|
+
|
33
|
+
## test - Test the project
|
34
|
+
test:
|
35
|
+
bundle exec rspec
|
36
|
+
|
37
|
+
.PHONY: help build clean fix install lint push test
|
data/README.md
CHANGED
@@ -116,10 +116,13 @@ API Documentation can be found at: <https://easypost.com/docs/api>.
|
|
116
116
|
|
117
117
|
```bash
|
118
118
|
# Install dependencies
|
119
|
-
|
119
|
+
make install
|
120
|
+
|
121
|
+
# Lint project
|
122
|
+
make lint
|
120
123
|
|
121
124
|
# Run tests (coverage is generated on a successful test suite run)
|
122
|
-
EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123...
|
125
|
+
EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... make test
|
123
126
|
```
|
124
127
|
|
125
128
|
### Testing
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.
|
1
|
+
4.4.0
|
data/easypost.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
spec.required_ruby_version = '>= 2.5'
|
23
23
|
|
24
|
+
spec.add_development_dependency 'brakeman', '~> 5.2'
|
24
25
|
spec.add_development_dependency 'pry', '~> 0.14'
|
25
26
|
spec.add_development_dependency 'rake', '~> 13.0'
|
26
27
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Billing class that users can manage their payment and fund
|
4
|
+
class EasyPost::Billing < EasyPost::Resource
|
5
|
+
# Fund your EasyPost wallet by charging your primary or secondary card on file.
|
6
|
+
def self.fund_wallet(amount, primary_or_secondary = 'primary', api_key = nil)
|
7
|
+
payment_info = EasyPost::Billing.get_payment_method_info(primary_or_secondary.downcase)
|
8
|
+
endpoint = payment_info[0]
|
9
|
+
payment_id = payment_info[1]
|
10
|
+
|
11
|
+
wrapped_params = { amount: amount }
|
12
|
+
EasyPost.make_request(:post, "#{endpoint}/#{payment_id}/charges", api_key, wrapped_params)
|
13
|
+
|
14
|
+
# Return true if succeeds, an error will be thrown if it fails
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
# Delete a payment method.
|
19
|
+
def self.delete_payment_method(primary_or_secondary, api_key = nil)
|
20
|
+
payment_info = EasyPost::Billing.get_payment_method_info(primary_or_secondary.downcase)
|
21
|
+
endpoint = payment_info[0]
|
22
|
+
payment_id = payment_info[1]
|
23
|
+
|
24
|
+
EasyPost.make_request(:delete, "#{endpoint}/#{payment_id}", api_key)
|
25
|
+
|
26
|
+
# Return true if succeeds, an error will be thrown if it fails
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
# Retrieve all payment methods.
|
31
|
+
def self.retrieve_payment_methods(api_key = nil)
|
32
|
+
response = EasyPost.make_request(:get, '/v2/payment_methods', api_key)
|
33
|
+
|
34
|
+
if response['id'].nil?
|
35
|
+
raise EasyPost::Error.new('Billing has not been setup for this user. Please add a payment method.')
|
36
|
+
end
|
37
|
+
|
38
|
+
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get payment method info (type of the payment method and ID of the payment method)
|
42
|
+
private_class_method def self.get_payment_method_info(primary_or_secondary)
|
43
|
+
payment_methods = EasyPost::Billing.retrieve_payment_methods
|
44
|
+
payment_method_map = {
|
45
|
+
'primary' => 'primary_payment_method',
|
46
|
+
'secondary' => 'secondary_payment_method',
|
47
|
+
}
|
48
|
+
|
49
|
+
payment_method_to_use = payment_method_map[primary_or_secondary]
|
50
|
+
|
51
|
+
error_string = 'The chosen payment method is not valid. Please try again.'
|
52
|
+
raise EasyPost::Error.new(error_string) if payment_methods[payment_method_to_use].nil?
|
53
|
+
|
54
|
+
payment_method_id = payment_methods[payment_method_to_use]['id']
|
55
|
+
|
56
|
+
unless payment_method_id.nil?
|
57
|
+
if payment_method_id.start_with?('card_')
|
58
|
+
endpoint = '/v2/credit_cards'
|
59
|
+
elsif payment_method_id.start_with?('bank_')
|
60
|
+
endpoint = '/v2/bank_accounts'
|
61
|
+
else
|
62
|
+
raise EasyPost::Error.new(error_string)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
[endpoint, payment_method_id]
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# PaymentMethod objects represent a payment method of a user.
|
4
|
+
class EasyPost::PaymentMethod < EasyPost::Resource
|
5
|
+
# Retrieve all payment methods.
|
6
|
+
def self.all(api_key = nil)
|
7
|
+
response = EasyPost.make_request(:get, url, api_key)
|
8
|
+
|
9
|
+
if response['id'].nil?
|
10
|
+
raise EasyPost::Error.new('Billing has not been setup for this user. Please add a payment method.')
|
11
|
+
end
|
12
|
+
|
13
|
+
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
14
|
+
end
|
15
|
+
end
|
data/lib/easypost/resource.rb
CHANGED
@@ -97,7 +97,7 @@ class EasyPost::Resource < EasyPost::EasyPostObject
|
|
97
97
|
|
98
98
|
wrapped_params = { self.class.class_name => values }
|
99
99
|
|
100
|
-
response = EasyPost.make_request(:
|
100
|
+
response = EasyPost.make_request(:patch, url, @api_key, wrapped_params)
|
101
101
|
refresh_from(response, api_key)
|
102
102
|
end
|
103
103
|
self
|
data/lib/easypost/user.rb
CHANGED
@@ -16,7 +16,7 @@ class EasyPost::User < EasyPost::Resource
|
|
16
16
|
|
17
17
|
wrapped_params = { user: values }
|
18
18
|
|
19
|
-
response = EasyPost.make_request(:
|
19
|
+
response = EasyPost.make_request(:patch, url, @api_key, wrapped_params)
|
20
20
|
refresh_from(response, api_key)
|
21
21
|
end
|
22
22
|
self
|
data/lib/easypost/util.rb
CHANGED
@@ -2,6 +2,90 @@
|
|
2
2
|
|
3
3
|
# Internal utilities helpful for this libraries operation.
|
4
4
|
module EasyPost::Util
|
5
|
+
attr_accessor :os_name, :os_version, :os_arch
|
6
|
+
|
7
|
+
BY_PREFIX = {
|
8
|
+
'adr' => EasyPost::Address,
|
9
|
+
'batch' => EasyPost::Batch,
|
10
|
+
'brd' => EasyPost::Brand,
|
11
|
+
'ca' => EasyPost::CarrierAccount,
|
12
|
+
'cstinfo' => EasyPost::CustomsInfo,
|
13
|
+
'cstitem' => EasyPost::CustomsItem,
|
14
|
+
'es' => EasyPost::Beta::EndShipper,
|
15
|
+
'evt' => EasyPost::Event,
|
16
|
+
'hook' => EasyPost::Webhook,
|
17
|
+
'ins' => EasyPost::Insurance,
|
18
|
+
'order' => EasyPost::Order,
|
19
|
+
'pickup' => EasyPost::Pickup,
|
20
|
+
'pickuprate' => EasyPost::PickupRate,
|
21
|
+
'pl' => EasyPost::PostageLabel,
|
22
|
+
'plrep' => EasyPost::Report,
|
23
|
+
'prcl' => EasyPost::Parcel,
|
24
|
+
'rate' => EasyPost::Rate,
|
25
|
+
'refrep' => EasyPost::Report,
|
26
|
+
'rfnd' => EasyPost::Refund,
|
27
|
+
'sf' => EasyPost::ScanForm,
|
28
|
+
'shp' => EasyPost::Shipment,
|
29
|
+
'shpinvrep' => EasyPost::Report,
|
30
|
+
'shprep' => EasyPost::Report,
|
31
|
+
'trk' => EasyPost::Tracker,
|
32
|
+
'trkrep' => EasyPost::Report,
|
33
|
+
'user' => EasyPost::User,
|
34
|
+
}.freeze
|
35
|
+
|
36
|
+
BY_TYPE = {
|
37
|
+
'Address' => EasyPost::Address,
|
38
|
+
'Batch' => EasyPost::Batch,
|
39
|
+
'Brand' => EasyPost::Brand,
|
40
|
+
'CarrierAccount' => EasyPost::CarrierAccount,
|
41
|
+
'CustomsInfo' => EasyPost::CustomsInfo,
|
42
|
+
'CustomsItem' => EasyPost::CustomsItem,
|
43
|
+
'EndShipper' => EasyPost::Beta::EndShipper,
|
44
|
+
'Event' => EasyPost::Event,
|
45
|
+
'Insurance' => EasyPost::Insurance,
|
46
|
+
'Order' => EasyPost::Order,
|
47
|
+
'Parcel' => EasyPost::Parcel,
|
48
|
+
'PaymentLogReport' => EasyPost::Report,
|
49
|
+
'Pickup' => EasyPost::Pickup,
|
50
|
+
'PickupRate' => EasyPost::PickupRate,
|
51
|
+
'PostageLabel' => EasyPost::PostageLabel,
|
52
|
+
'Rate' => EasyPost::Rate,
|
53
|
+
'Referral' => EasyPost::Beta::Referral,
|
54
|
+
'Refund' => EasyPost::Refund,
|
55
|
+
'RefundReport' => EasyPost::Report,
|
56
|
+
'Report' => EasyPost::Report,
|
57
|
+
'ScanForm' => EasyPost::ScanForm,
|
58
|
+
'Shipment' => EasyPost::Shipment,
|
59
|
+
'ShipmentInvoiceReport' => EasyPost::Report,
|
60
|
+
'ShipmentReport' => EasyPost::Report,
|
61
|
+
'TaxIdentifier' => EasyPost::TaxIdentifier,
|
62
|
+
'Tracker' => EasyPost::Tracker,
|
63
|
+
'TrackerReport' => EasyPost::Report,
|
64
|
+
'User' => EasyPost::User,
|
65
|
+
'Webhook' => EasyPost::Webhook,
|
66
|
+
}.freeze
|
67
|
+
|
68
|
+
def self.os_name
|
69
|
+
case RUBY_PLATFORM
|
70
|
+
when /linux/i
|
71
|
+
'Linux'
|
72
|
+
when /darwin/i
|
73
|
+
'Darwin'
|
74
|
+
when /cygwin|mswin|mingw|bccwin|wince|emx/i
|
75
|
+
'Windows'
|
76
|
+
else
|
77
|
+
'Unknown'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.os_version
|
82
|
+
Gem::Platform.local.version
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.os_arch
|
86
|
+
Gem::Platform.local.cpu
|
87
|
+
end
|
88
|
+
|
5
89
|
# Form-encode a multi-layer dictionary to a one-layer dictionary.
|
6
90
|
def self.form_encode_params(hash, parent_keys = [], parent_dict = {})
|
7
91
|
result = parent_dict or {}
|
@@ -55,84 +139,23 @@ module EasyPost::Util
|
|
55
139
|
|
56
140
|
# Convert data to an EasyPost Object.
|
57
141
|
def self.convert_to_easypost_object(response, api_key, parent = nil, name = nil)
|
58
|
-
types = {
|
59
|
-
'Address' => EasyPost::Address,
|
60
|
-
'Batch' => EasyPost::Batch,
|
61
|
-
'Brand' => EasyPost::Brand,
|
62
|
-
'CarrierAccount' => EasyPost::CarrierAccount,
|
63
|
-
'CustomsInfo' => EasyPost::CustomsInfo,
|
64
|
-
'CustomsItem' => EasyPost::CustomsItem,
|
65
|
-
'EndShipper' => EasyPost::Beta::EndShipper,
|
66
|
-
'Event' => EasyPost::Event,
|
67
|
-
'Insurance' => EasyPost::Insurance,
|
68
|
-
'Order' => EasyPost::Order,
|
69
|
-
'Parcel' => EasyPost::Parcel,
|
70
|
-
'PaymentLogReport' => EasyPost::Report,
|
71
|
-
'Pickup' => EasyPost::Pickup,
|
72
|
-
'PickupRate' => EasyPost::PickupRate,
|
73
|
-
'PostageLabel' => EasyPost::PostageLabel,
|
74
|
-
'Rate' => EasyPost::Rate,
|
75
|
-
'Referral' => EasyPost::Beta::Referral,
|
76
|
-
'Refund' => EasyPost::Refund,
|
77
|
-
'RefundReport' => EasyPost::Report,
|
78
|
-
'Report' => EasyPost::Report,
|
79
|
-
'ScanForm' => EasyPost::ScanForm,
|
80
|
-
'Shipment' => EasyPost::Shipment,
|
81
|
-
'ShipmentInvoiceReport' => EasyPost::Report,
|
82
|
-
'ShipmentReport' => EasyPost::Report,
|
83
|
-
'TaxIdentifier' => EasyPost::TaxIdentifier,
|
84
|
-
'Tracker' => EasyPost::Tracker,
|
85
|
-
'TrackerReport' => EasyPost::Report,
|
86
|
-
'User' => EasyPost::User,
|
87
|
-
'Webhook' => EasyPost::Webhook,
|
88
|
-
}
|
89
|
-
|
90
|
-
prefixes = {
|
91
|
-
'adr' => EasyPost::Address,
|
92
|
-
'batch' => EasyPost::Batch,
|
93
|
-
'brd' => EasyPost::Brand,
|
94
|
-
'ca' => EasyPost::CarrierAccount,
|
95
|
-
'cstinfo' => EasyPost::CustomsInfo,
|
96
|
-
'cstitem' => EasyPost::CustomsItem,
|
97
|
-
'es' => EasyPost::Beta::EndShipper,
|
98
|
-
'evt' => EasyPost::Event,
|
99
|
-
'hook' => EasyPost::Webhook,
|
100
|
-
'ins' => EasyPost::Insurance,
|
101
|
-
'order' => EasyPost::Order,
|
102
|
-
'pickup' => EasyPost::Pickup,
|
103
|
-
'pickuprate' => EasyPost::PickupRate,
|
104
|
-
'pl' => EasyPost::PostageLabel,
|
105
|
-
'plrep' => EasyPost::Report,
|
106
|
-
'prcl' => EasyPost::Parcel,
|
107
|
-
'rate' => EasyPost::Rate,
|
108
|
-
'refrep' => EasyPost::Report,
|
109
|
-
'rfnd' => EasyPost::Refund,
|
110
|
-
'sf' => EasyPost::ScanForm,
|
111
|
-
'shp' => EasyPost::Shipment,
|
112
|
-
'shpinvrep' => EasyPost::Report,
|
113
|
-
'shprep' => EasyPost::Report,
|
114
|
-
'trk' => EasyPost::Tracker,
|
115
|
-
'trkrep' => EasyPost::Report,
|
116
|
-
'user' => EasyPost::User,
|
117
|
-
}
|
118
|
-
|
119
142
|
case response
|
120
143
|
when Array
|
121
144
|
response.map { |i| convert_to_easypost_object(i, api_key, parent) }
|
122
145
|
when Hash
|
123
146
|
if (cls_name = response[:object])
|
124
|
-
cls =
|
147
|
+
cls = BY_TYPE[cls_name]
|
125
148
|
elsif response[:id]
|
126
149
|
if response[:id].index('_').nil?
|
127
150
|
cls = EasyPost::EasyPostObject
|
128
151
|
elsif (cls_prefix = response[:id][0..response[:id].index('_')])
|
129
|
-
cls =
|
152
|
+
cls = BY_PREFIX[cls_prefix[0..-2]]
|
130
153
|
end
|
131
154
|
elsif response['id']
|
132
155
|
if response['id'].index('_').nil?
|
133
156
|
cls = EasyPost::EasyPostObject
|
134
157
|
elsif (cls_prefix = response['id'][0..response['id'].index('_')])
|
135
|
-
cls =
|
158
|
+
cls = BY_PREFIX[cls_prefix[0..-2]]
|
136
159
|
end
|
137
160
|
end
|
138
161
|
|
data/lib/easypost/webhook.rb
CHANGED
@@ -12,7 +12,7 @@ class EasyPost::Webhook < EasyPost::Resource
|
|
12
12
|
|
13
13
|
instance_url = "#{self.class.url}/#{CGI.escape(id)}"
|
14
14
|
|
15
|
-
response = EasyPost.make_request(:
|
15
|
+
response = EasyPost.make_request(:patch, instance_url, @api_key, params)
|
16
16
|
refresh_from(response, api_key)
|
17
17
|
|
18
18
|
self
|
data/lib/easypost.rb
CHANGED
@@ -5,7 +5,6 @@ require 'cgi'
|
|
5
5
|
require 'net/http'
|
6
6
|
|
7
7
|
require 'easypost/version'
|
8
|
-
require 'easypost/util'
|
9
8
|
require 'easypost/object'
|
10
9
|
require 'easypost/resource'
|
11
10
|
require 'easypost/error'
|
@@ -15,6 +14,7 @@ require 'easypost/connection'
|
|
15
14
|
require 'easypost/address'
|
16
15
|
require 'easypost/api_key'
|
17
16
|
require 'easypost/batch'
|
17
|
+
require 'easypost/billing'
|
18
18
|
require 'easypost/brand'
|
19
19
|
require 'easypost/carrier_account'
|
20
20
|
require 'easypost/carrier_type'
|
@@ -38,9 +38,10 @@ require 'easypost/user'
|
|
38
38
|
require 'easypost/webhook'
|
39
39
|
require 'easypost/beta'
|
40
40
|
|
41
|
+
require 'easypost/util'
|
42
|
+
|
41
43
|
module EasyPost
|
42
44
|
DEFAULT_API_BASE = 'https://api.easypost.com'
|
43
|
-
DEFAULT_USER_AGENT = "EasyPost/v2 RubyClient/#{EasyPost::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
44
45
|
|
45
46
|
class << self
|
46
47
|
attr_accessor :api_key, :api_base
|
@@ -49,10 +50,17 @@ module EasyPost
|
|
49
50
|
|
50
51
|
self.api_base = DEFAULT_API_BASE
|
51
52
|
|
53
|
+
def self.user_agent
|
54
|
+
@user_agent ||=
|
55
|
+
"EasyPost/v2 RubyClient/#{EasyPost::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} " \
|
56
|
+
"OS/#{EasyPost::Util.os_name} OSVersion/#{EasyPost::Util.os_version} " \
|
57
|
+
"OSArch/#{EasyPost::Util.os_arch}"
|
58
|
+
end
|
59
|
+
|
52
60
|
def self.default_headers
|
53
61
|
@default_headers ||= {
|
54
62
|
'Content-Type' => 'application/json',
|
55
|
-
'User-Agent' =>
|
63
|
+
'User-Agent' => user_agent,
|
56
64
|
}
|
57
65
|
end
|
58
66
|
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easypost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- EasyPost Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: brakeman
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.2'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.2'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: pry
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -143,6 +157,7 @@ executables:
|
|
143
157
|
extensions: []
|
144
158
|
extra_rdoc_files: []
|
145
159
|
files:
|
160
|
+
- ".gitattributes"
|
146
161
|
- ".github/ISSUE_TEMPLATE/bug_report.yml"
|
147
162
|
- ".github/ISSUE_TEMPLATE/feature_request.yml"
|
148
163
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
@@ -154,6 +169,7 @@ files:
|
|
154
169
|
- CONTRIBUTING.md
|
155
170
|
- Gemfile
|
156
171
|
- LICENSE
|
172
|
+
- Makefile
|
157
173
|
- README.md
|
158
174
|
- Rakefile
|
159
175
|
- SECURITY.md
|
@@ -170,6 +186,7 @@ files:
|
|
170
186
|
- lib/easypost/beta.rb
|
171
187
|
- lib/easypost/beta/end_shipper.rb
|
172
188
|
- lib/easypost/beta/referral.rb
|
189
|
+
- lib/easypost/billing.rb
|
173
190
|
- lib/easypost/brand.rb
|
174
191
|
- lib/easypost/carrier_account.rb
|
175
192
|
- lib/easypost/carrier_type.rb
|
@@ -182,6 +199,7 @@ files:
|
|
182
199
|
- lib/easypost/object.rb
|
183
200
|
- lib/easypost/order.rb
|
184
201
|
- lib/easypost/parcel.rb
|
202
|
+
- lib/easypost/payment_method.rb
|
185
203
|
- lib/easypost/pickup.rb
|
186
204
|
- lib/easypost/pickup_rate.rb
|
187
205
|
- lib/easypost/postage_label.rb
|
@@ -216,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
234
|
- !ruby/object:Gem::Version
|
217
235
|
version: '0'
|
218
236
|
requirements: []
|
219
|
-
rubygems_version: 3.3.
|
237
|
+
rubygems_version: 3.3.11
|
220
238
|
signing_key:
|
221
239
|
specification_version: 4
|
222
240
|
summary: EasyPost Ruby Client Library
|