easypost 4.7.1 → 4.8.1
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/.github/workflows/ci.yml +2 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +11 -0
- data/Makefile +5 -5
- data/VERSION +1 -1
- data/lib/easypost/address.rb +1 -9
- data/lib/easypost/beta/end_shipper.rb +4 -0
- data/lib/easypost/beta/referral.rb +61 -48
- data/lib/easypost/billing.rb +34 -30
- data/lib/easypost/connection.rb +1 -1
- data/lib/easypost/error.rb +2 -1
- data/lib/easypost/referral.rb +102 -0
- data/lib/easypost/resource.rb +1 -0
- data/lib/easypost/shipment.rb +11 -2
- data/lib/easypost.rb +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ad992fe480aa1a1c8b1fc7e85dd06c7af4478bca9bcc3a2f083daaeeedcc39e
|
4
|
+
data.tar.gz: f37a2a32dac1dcc1efa0121dce6b6edbf14e3aa690308d393815ecaabddedda4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f0e9c8cbfb299608c58c865a2193e163739ca3543fb5bbea44026930bbecf34ae8d772fc2377909492a89d8c7d3d1440c7a9f7ebf25935927db35bc6ba1b7c3
|
7
|
+
data.tar.gz: 8b02eee4c36c0c918e4a3f4884694c48d453bbf3aba7db653669618462d67bad30c0cf0ceec96ee44de0b335626e0992b493ad06e4457feeb5f661ebe55ceb70
|
data/.github/workflows/ci.yml
CHANGED
@@ -4,6 +4,7 @@ on:
|
|
4
4
|
push:
|
5
5
|
branches: [master]
|
6
6
|
pull_request: ~
|
7
|
+
workflow_dispatch: ~
|
7
8
|
|
8
9
|
jobs:
|
9
10
|
run-tests:
|
@@ -32,6 +33,7 @@ jobs:
|
|
32
33
|
uses: ruby/setup-ruby@v1
|
33
34
|
with:
|
34
35
|
ruby-version: "3.1"
|
36
|
+
bundler-cache: true
|
35
37
|
- name: Install Dependencies
|
36
38
|
run: make install
|
37
39
|
- name: Lint Project
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v4.8.1 (2022-10-24)
|
4
|
+
|
5
|
+
- Concatenates `error.message` if it incorrectly comes back from the API as an array
|
6
|
+
- Treats any HTTP status outside the `2xx` range as an error. Impact expected is minimal as this change only affects `1xx` and `3xx` HTTP status codes
|
7
|
+
|
8
|
+
## v4.8.0 (2022-09-21)
|
9
|
+
|
10
|
+
- Adds support to buy a shipment by passing in `end_shipper_id`
|
11
|
+
- `with_carbon_offset` can now alternatively be passed in the `params` parameter of the `shipment.buy` function
|
12
|
+
- Migrates Partner White Label (Referrals) to general library namespace and deprecates beta functions
|
13
|
+
|
3
14
|
## v4.7.1 (2022-09-06)
|
4
15
|
|
5
16
|
- Makes not implemented `all` calls match the `EasyPost::Resource` interface so that one can call `.to_json` on them and receive the proper error
|
data/Makefile
CHANGED
@@ -14,7 +14,7 @@ clean:
|
|
14
14
|
|
15
15
|
## fix - Fix Rubocop errors
|
16
16
|
fix:
|
17
|
-
rubocop -A
|
17
|
+
bundle exec rubocop -A
|
18
18
|
|
19
19
|
## install - Install globally from source
|
20
20
|
install:
|
@@ -24,7 +24,7 @@ install:
|
|
24
24
|
|
25
25
|
## lint - Lint the project
|
26
26
|
lint:
|
27
|
-
rubocop
|
27
|
+
bundle exec rubocop
|
28
28
|
|
29
29
|
## publish - Publishes the built gem to Rubygems
|
30
30
|
publish:
|
@@ -37,11 +37,11 @@ release:
|
|
37
37
|
|
38
38
|
## scan - Runs security analysis on the project with Brakeman
|
39
39
|
scan:
|
40
|
-
brakeman lib --force
|
40
|
+
bundle exec brakeman lib --force
|
41
41
|
|
42
|
-
## test - Test the project
|
42
|
+
## test - Test the project (and ignore warnings for test output)
|
43
43
|
test:
|
44
|
-
bundle exec rspec
|
44
|
+
RUBYOPT="-W0" bundle exec rspec
|
45
45
|
|
46
46
|
## update - Updates dependencies
|
47
47
|
update:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.
|
1
|
+
4.8.1
|
data/lib/easypost/address.rb
CHANGED
@@ -28,20 +28,12 @@ class EasyPost::Address < EasyPost::Resource
|
|
28
28
|
wrapped_params[class_name.to_sym] = params
|
29
29
|
response = EasyPost.make_request(:post, "#{url}/create_and_verify", api_key, wrapped_params)
|
30
30
|
|
31
|
-
raise EasyPost::Error.new('Unable to verify address.') unless response.key?('address')
|
32
|
-
|
33
31
|
EasyPost::Util.convert_to_easypost_object(response['address'], api_key)
|
34
32
|
end
|
35
33
|
|
36
34
|
# Verify an Address.
|
37
35
|
def verify
|
38
|
-
|
39
|
-
response = EasyPost.make_request(:get, "#{url}/verify", @api_key)
|
40
|
-
rescue StandardError
|
41
|
-
raise EasyPost::Error.new('Unable to verify address.')
|
42
|
-
end
|
43
|
-
|
44
|
-
raise EasyPost::Error.new('Unable to verify address.') unless response.key?('address')
|
36
|
+
response = EasyPost.make_request(:get, "#{url}/verify", @api_key)
|
45
37
|
|
46
38
|
EasyPost::Util.convert_to_easypost_object(response['address'], api_key)
|
47
39
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
# EndShipper objects are fully-qualified Address objects that require all parameters and get verified upon creation.
|
4
4
|
class EasyPost::Beta::EndShipper < EasyPost::Resource
|
5
|
+
# Create an EndShipper object.
|
5
6
|
# <b>DEPRECATED:</b> Please use <tt>EndShipper</tt> in the main namespace instead.
|
6
7
|
def self.create(params = {}, api_key = nil)
|
7
8
|
warn '[DEPRECATION] Please use `EndShipper.create` in the main namespace instead.'
|
@@ -10,6 +11,7 @@ class EasyPost::Beta::EndShipper < EasyPost::Resource
|
|
10
11
|
end
|
11
12
|
|
12
13
|
# Retrieves an EndShipper object.
|
14
|
+
# <b>DEPRECATED:</b> Please use <tt>EndShipper</tt> in the main namespace instead.
|
13
15
|
def self.retrieve(id, params = {}, api_key = nil)
|
14
16
|
warn '[DEPRECATION] Please use `EndShipper.retrieve` in the main namespace instead.'
|
15
17
|
response = EasyPost.make_request(:get, "/beta/end_shippers/#{id}", api_key, params)
|
@@ -17,6 +19,7 @@ class EasyPost::Beta::EndShipper < EasyPost::Resource
|
|
17
19
|
end
|
18
20
|
|
19
21
|
# Retrieves a list of EndShipper objects.
|
22
|
+
# <b>DEPRECATED:</b> Please use <tt>EndShipper</tt> in the main namespace instead.
|
20
23
|
def self.all(params = {}, api_key = nil)
|
21
24
|
warn '[DEPRECATION] Please use `EndShipper.all` in the main namespace instead.'
|
22
25
|
response = EasyPost.make_request(:get, '/beta/end_shippers', api_key, params)
|
@@ -24,6 +27,7 @@ class EasyPost::Beta::EndShipper < EasyPost::Resource
|
|
24
27
|
end
|
25
28
|
|
26
29
|
# Updates (saves) an EndShipper object. This requires all parameters to be set.
|
30
|
+
# <b>DEPRECATED:</b> Please use <tt>EndShipper</tt> in the main namespace instead.
|
27
31
|
def save
|
28
32
|
warn '[DEPRECATION] Please use `endShipper.save` in the main namespace instead.'
|
29
33
|
if @unsaved_values.length.positive?
|
@@ -2,14 +2,71 @@
|
|
2
2
|
|
3
3
|
# Referral objects are User objects created from a Partner user.
|
4
4
|
class EasyPost::Beta::Referral < EasyPost::Resource
|
5
|
+
class << self
|
6
|
+
protected
|
7
|
+
|
8
|
+
# Retrieve EasyPost's Stripe public API key.
|
9
|
+
def retrieve_easypost_stripe_api_key
|
10
|
+
response = EasyPost.make_request(:get, '/beta/partners/stripe_public_key', @api_key)
|
11
|
+
response['public_key']
|
12
|
+
end
|
13
|
+
|
14
|
+
# Get credit card token from Stripe.
|
15
|
+
def create_stripe_token(number, expiration_month, expiration_year,
|
16
|
+
cvc, easypost_stripe_token)
|
17
|
+
headers = {
|
18
|
+
# This Stripe endpoint only accepts URL form encoded bodies.
|
19
|
+
Authorization: "Bearer #{easypost_stripe_token}",
|
20
|
+
'Content-type': 'application/x-www-form-urlencoded',
|
21
|
+
}
|
22
|
+
|
23
|
+
credit_card_hash = {
|
24
|
+
card: {
|
25
|
+
number: number,
|
26
|
+
exp_month: expiration_month,
|
27
|
+
exp_year: expiration_year,
|
28
|
+
cvc: cvc,
|
29
|
+
},
|
30
|
+
}
|
31
|
+
|
32
|
+
form_encoded_params = EasyPost::Util.form_encode_params(credit_card_hash)
|
33
|
+
|
34
|
+
uri = URI.parse('https://api.stripe.com/v1/tokens')
|
35
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
36
|
+
http.use_ssl = true
|
37
|
+
request = Net::HTTP::Post.new(uri.request_uri, headers)
|
38
|
+
query = URI.encode_www_form(form_encoded_params)
|
39
|
+
|
40
|
+
response = http.request(request, query)
|
41
|
+
response_json = JSON.parse(response.body)
|
42
|
+
response_json['id']
|
43
|
+
end
|
44
|
+
|
45
|
+
# Submit Stripe credit card token to EasyPost.
|
46
|
+
def create_easypost_credit_card(referral_api_key, stripe_object_id, priority = 'primary')
|
47
|
+
wrapped_params = {
|
48
|
+
credit_card: {
|
49
|
+
stripe_object_id: stripe_object_id,
|
50
|
+
priority: priority,
|
51
|
+
},
|
52
|
+
}
|
53
|
+
response = EasyPost.make_request(:post, '/beta/credit_cards', referral_api_key, wrapped_params)
|
54
|
+
EasyPost::Util.convert_to_easypost_object(response, referral_api_key)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
5
58
|
# Create a referral user. This function requires the Partner User's API key.
|
59
|
+
# <b>DEPRECATED:</b> Please use <tt>Referral</tt> in the main namespace instead.
|
6
60
|
def self.create(params = {}, api_key = nil)
|
61
|
+
warn '[DEPRECATION] Please use `Referral.create` in the main namespace instead.'
|
7
62
|
response = EasyPost.make_request(:post, '/beta/referral_customers', api_key, { user: params })
|
8
63
|
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
9
64
|
end
|
10
65
|
|
11
66
|
# Update a referral user. This function requires the Partner User's API key.
|
67
|
+
# <b>DEPRECATED:</b> Please use <tt>Referral</tt> in the main namespace instead.
|
12
68
|
def self.update_email(email, user_id, api_key = nil)
|
69
|
+
warn '[DEPRECATION] Please use `Referral.update_email` in the main namespace instead.'
|
13
70
|
wrapped_params = {
|
14
71
|
user: {
|
15
72
|
email: email,
|
@@ -22,13 +79,17 @@ class EasyPost::Beta::Referral < EasyPost::Resource
|
|
22
79
|
end
|
23
80
|
|
24
81
|
# Retrieve a list of referral users. This function requires the Partner User's API key.
|
82
|
+
# <b>DEPRECATED:</b> Please use <tt>Referral</tt> in the main namespace instead.
|
25
83
|
def self.all(params = {}, api_key = nil)
|
84
|
+
warn '[DEPRECATION] Please use `Referral.all` in the main namespace instead.'
|
26
85
|
response = EasyPost.make_request(:get, '/beta/referral_customers', api_key, params)
|
27
86
|
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
28
87
|
end
|
29
88
|
|
30
89
|
# Add credit card to a referral user. This function requires the Referral User's API key.
|
90
|
+
# <b>DEPRECATED:</b> Please use <tt>Referral</tt> in the main namespace instead.
|
31
91
|
def self.add_credit_card(referral_api_key, number, expiration_month, expiration_year, cvc, priority = 'primary')
|
92
|
+
warn '[DEPRECATION] Please use `Referral.add_credit_card` in the main namespace instead.'
|
32
93
|
easypost_stripe_api_key = retrieve_easypost_stripe_api_key
|
33
94
|
|
34
95
|
begin
|
@@ -46,52 +107,4 @@ class EasyPost::Beta::Referral < EasyPost::Resource
|
|
46
107
|
response = create_easypost_credit_card(referral_api_key, stripe_credit_card_token, priority)
|
47
108
|
EasyPost::Util.convert_to_easypost_object(response, referral_api_key)
|
48
109
|
end
|
49
|
-
|
50
|
-
# Retrieve EasyPost's Stripe public API key.
|
51
|
-
def self.retrieve_easypost_stripe_api_key
|
52
|
-
response = EasyPost.make_request(:get, '/beta/partners/stripe_public_key', @api_key)
|
53
|
-
response['public_key']
|
54
|
-
end
|
55
|
-
|
56
|
-
# Get credit card token from Stripe.
|
57
|
-
def self.create_stripe_token(number, expiration_month, expiration_year, cvc, easypost_stripe_token)
|
58
|
-
headers = {
|
59
|
-
# This Stripe endpoint only accepts URL form encoded bodies.
|
60
|
-
Authorization: "Bearer #{easypost_stripe_token}",
|
61
|
-
'Content-type': 'application/x-www-form-urlencoded',
|
62
|
-
}
|
63
|
-
|
64
|
-
credit_card_hash = {
|
65
|
-
card: {
|
66
|
-
number: number,
|
67
|
-
exp_month: expiration_month,
|
68
|
-
exp_year: expiration_year,
|
69
|
-
cvc: cvc,
|
70
|
-
},
|
71
|
-
}
|
72
|
-
|
73
|
-
form_encoded_params = EasyPost::Util.form_encode_params(credit_card_hash)
|
74
|
-
|
75
|
-
uri = URI.parse('https://api.stripe.com/v1/tokens')
|
76
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
77
|
-
http.use_ssl = true
|
78
|
-
request = Net::HTTP::Post.new(uri.request_uri, headers)
|
79
|
-
query = URI.encode_www_form(form_encoded_params)
|
80
|
-
|
81
|
-
response = http.request(request, query)
|
82
|
-
response_json = JSON.parse(response.body)
|
83
|
-
response_json['id']
|
84
|
-
end
|
85
|
-
|
86
|
-
# Submit Stripe credit card token to EasyPost.
|
87
|
-
def self.create_easypost_credit_card(referral_api_key, stripe_object_id, priority = 'primary')
|
88
|
-
wrapped_params = {
|
89
|
-
credit_card: {
|
90
|
-
stripe_object_id: stripe_object_id,
|
91
|
-
priority: priority,
|
92
|
-
},
|
93
|
-
}
|
94
|
-
response = EasyPost.make_request(:post, '/beta/credit_cards', referral_api_key, wrapped_params)
|
95
|
-
EasyPost::Util.convert_to_easypost_object(response, referral_api_key)
|
96
|
-
end
|
97
110
|
end
|
data/lib/easypost/billing.rb
CHANGED
@@ -2,9 +2,41 @@
|
|
2
2
|
|
3
3
|
# Billing class that users can manage their payment and fund
|
4
4
|
class EasyPost::Billing < EasyPost::Resource
|
5
|
+
class << self
|
6
|
+
protected
|
7
|
+
|
8
|
+
# Get payment method info (type of the payment method and ID of the payment method)
|
9
|
+
def get_payment_method_info(primary_or_secondary)
|
10
|
+
payment_methods = EasyPost::Billing.retrieve_payment_methods
|
11
|
+
payment_method_map = {
|
12
|
+
'primary' => 'primary_payment_method',
|
13
|
+
'secondary' => 'secondary_payment_method',
|
14
|
+
}
|
15
|
+
|
16
|
+
payment_method_to_use = payment_method_map[primary_or_secondary]
|
17
|
+
|
18
|
+
error_string = 'The chosen payment method is not valid. Please try again.'
|
19
|
+
raise EasyPost::Error.new(error_string) if payment_methods[payment_method_to_use].nil?
|
20
|
+
|
21
|
+
payment_method_id = payment_methods[payment_method_to_use]['id']
|
22
|
+
|
23
|
+
unless payment_method_id.nil?
|
24
|
+
if payment_method_id.start_with?('card_')
|
25
|
+
endpoint = '/v2/credit_cards'
|
26
|
+
elsif payment_method_id.start_with?('bank_')
|
27
|
+
endpoint = '/v2/bank_accounts'
|
28
|
+
else
|
29
|
+
raise EasyPost::Error.new(error_string)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
[endpoint, payment_method_id]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
5
37
|
# Fund your EasyPost wallet by charging your primary or secondary card on file.
|
6
38
|
def self.fund_wallet(amount, primary_or_secondary = 'primary', api_key = nil)
|
7
|
-
payment_info =
|
39
|
+
payment_info = get_payment_method_info(primary_or_secondary.downcase)
|
8
40
|
endpoint = payment_info[0]
|
9
41
|
payment_id = payment_info[1]
|
10
42
|
|
@@ -17,7 +49,7 @@ class EasyPost::Billing < EasyPost::Resource
|
|
17
49
|
|
18
50
|
# Delete a payment method.
|
19
51
|
def self.delete_payment_method(primary_or_secondary, api_key = nil)
|
20
|
-
payment_info =
|
52
|
+
payment_info = get_payment_method_info(primary_or_secondary.downcase)
|
21
53
|
endpoint = payment_info[0]
|
22
54
|
payment_id = payment_info[1]
|
23
55
|
|
@@ -37,32 +69,4 @@ class EasyPost::Billing < EasyPost::Resource
|
|
37
69
|
|
38
70
|
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
39
71
|
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
72
|
end
|
data/lib/easypost/connection.rb
CHANGED
@@ -52,7 +52,7 @@ EasyPost::Connection = Struct.new(:uri, :config, keyword_init: true) do
|
|
52
52
|
request.body = JSON.dump(EasyPost::Util.objects_to_ids(body)) if body
|
53
53
|
|
54
54
|
EasyPost.default_headers.each_pair { |h, v| request[h] = v }
|
55
|
-
request['Authorization'] = EasyPost.authorization(api_key)
|
55
|
+
request['Authorization'] = EasyPost.authorization(api_key)
|
56
56
|
|
57
57
|
response = connection.request(request)
|
58
58
|
response_is_json = response['Content-Type'] ? response['Content-Type'].start_with?('application/json') : false
|
data/lib/easypost/error.rb
CHANGED
@@ -6,7 +6,8 @@ class EasyPost::Error < StandardError
|
|
6
6
|
|
7
7
|
# Initialize a new EasyPost Error
|
8
8
|
def initialize(message = nil, status = nil, code = nil, errors = nil, http_body = nil)
|
9
|
-
|
9
|
+
# message should be a string but can sometimes incorrectly come back as an array
|
10
|
+
@message = message.is_a?(Array) ? message.join(', ') : message
|
10
11
|
@status = status
|
11
12
|
@code = code
|
12
13
|
@errors = errors
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Referral objects are User objects created from a Partner user.
|
4
|
+
class EasyPost::Referral < EasyPost::Resource
|
5
|
+
class << self
|
6
|
+
protected
|
7
|
+
|
8
|
+
# Retrieve EasyPost's Stripe public API key.
|
9
|
+
def retrieve_easypost_stripe_api_key
|
10
|
+
response = EasyPost.make_request(:get, '/beta/partners/stripe_public_key', @api_key)
|
11
|
+
response['public_key']
|
12
|
+
end
|
13
|
+
|
14
|
+
# Get credit card token from Stripe.
|
15
|
+
def create_stripe_token(number, expiration_month, expiration_year,
|
16
|
+
cvc, easypost_stripe_token)
|
17
|
+
headers = {
|
18
|
+
# This Stripe endpoint only accepts URL form encoded bodies.
|
19
|
+
Authorization: "Bearer #{easypost_stripe_token}",
|
20
|
+
'Content-type': 'application/x-www-form-urlencoded',
|
21
|
+
}
|
22
|
+
|
23
|
+
credit_card_hash = {
|
24
|
+
card: {
|
25
|
+
number: number,
|
26
|
+
exp_month: expiration_month,
|
27
|
+
exp_year: expiration_year,
|
28
|
+
cvc: cvc,
|
29
|
+
},
|
30
|
+
}
|
31
|
+
|
32
|
+
form_encoded_params = EasyPost::Util.form_encode_params(credit_card_hash)
|
33
|
+
|
34
|
+
uri = URI.parse('https://api.stripe.com/v1/tokens')
|
35
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
36
|
+
http.use_ssl = true
|
37
|
+
request = Net::HTTP::Post.new(uri.request_uri, headers)
|
38
|
+
query = URI.encode_www_form(form_encoded_params)
|
39
|
+
|
40
|
+
response = http.request(request, query)
|
41
|
+
response_json = JSON.parse(response.body)
|
42
|
+
response_json['id']
|
43
|
+
end
|
44
|
+
|
45
|
+
# Submit Stripe credit card token to EasyPost.
|
46
|
+
def create_easypost_credit_card(referral_api_key, stripe_object_id, priority = 'primary')
|
47
|
+
wrapped_params = {
|
48
|
+
credit_card: {
|
49
|
+
stripe_object_id: stripe_object_id,
|
50
|
+
priority: priority,
|
51
|
+
},
|
52
|
+
}
|
53
|
+
response = EasyPost.make_request(:post, '/beta/credit_cards', referral_api_key, wrapped_params)
|
54
|
+
EasyPost::Util.convert_to_easypost_object(response, referral_api_key)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Create a referral user. This function requires the Partner User's API key.
|
59
|
+
def self.create(params = {}, api_key = nil)
|
60
|
+
response = EasyPost.make_request(:post, '/v2/referral_customers', api_key, { user: params })
|
61
|
+
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Update a referral user. This function requires the Partner User's API key.
|
65
|
+
def self.update_email(email, user_id, api_key = nil)
|
66
|
+
wrapped_params = {
|
67
|
+
user: {
|
68
|
+
email: email,
|
69
|
+
},
|
70
|
+
}
|
71
|
+
EasyPost.make_request(:put, "/v2/referral_customers/#{user_id}", api_key, wrapped_params)
|
72
|
+
|
73
|
+
# return true if API succeeds, else an error is throw if it fails.
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
# Retrieve a list of referral users. This function requires the Partner User's API key.
|
78
|
+
def self.all(params = {}, api_key = nil)
|
79
|
+
response = EasyPost.make_request(:get, '/v2/referral_customers', api_key, params)
|
80
|
+
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Add credit card to a referral user. This function requires the Referral User's API key.
|
84
|
+
def self.add_credit_card(referral_api_key, number, expiration_month, expiration_year, cvc, priority = 'primary')
|
85
|
+
easypost_stripe_api_key = retrieve_easypost_stripe_api_key
|
86
|
+
|
87
|
+
begin
|
88
|
+
stripe_credit_card_token = create_stripe_token(
|
89
|
+
number,
|
90
|
+
expiration_month,
|
91
|
+
expiration_year,
|
92
|
+
cvc,
|
93
|
+
easypost_stripe_api_key,
|
94
|
+
)
|
95
|
+
rescue StandardError
|
96
|
+
raise EasyPost::Error.new('Could not send card details to Stripe, please try again later.')
|
97
|
+
end
|
98
|
+
|
99
|
+
response = create_easypost_credit_card(referral_api_key, stripe_credit_card_token, priority)
|
100
|
+
EasyPost::Util.convert_to_easypost_object(response, referral_api_key)
|
101
|
+
end
|
102
|
+
end
|
data/lib/easypost/resource.rb
CHANGED
@@ -48,6 +48,7 @@ class EasyPost::Resource < EasyPost::EasyPostObject
|
|
48
48
|
EasyPost::Util.convert_to_easypost_object(response, api_key)
|
49
49
|
end
|
50
50
|
|
51
|
+
# Filter all results based on criteria.
|
51
52
|
def self.each(filters = {}, api_key = EasyPost.api_key, &block)
|
52
53
|
return to_enum(:each, filters, api_key) unless block_given?
|
53
54
|
|
data/lib/easypost/shipment.rb
CHANGED
@@ -35,14 +35,23 @@ class EasyPost::Shipment < EasyPost::Resource
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Buy a Shipment.
|
38
|
-
def buy(params = {}, with_carbon_offset = false)
|
38
|
+
def buy(params = {}, with_carbon_offset = false, end_shipper_id = nil)
|
39
39
|
if params.instance_of?(EasyPost::Rate)
|
40
40
|
temp = params.clone
|
41
41
|
params = {}
|
42
42
|
params[:rate] = temp
|
43
43
|
end
|
44
44
|
|
45
|
-
params[:
|
45
|
+
if params[:with_carbon_offset]
|
46
|
+
params[:carbon_offset] = params[:with_carbon_offset]
|
47
|
+
params.delete(:with_carbon_offset)
|
48
|
+
else
|
49
|
+
params[:carbon_offset] = with_carbon_offset
|
50
|
+
end
|
51
|
+
|
52
|
+
if end_shipper_id
|
53
|
+
params[:end_shipper_id] = end_shipper_id
|
54
|
+
end
|
46
55
|
|
47
56
|
response = EasyPost.make_request(:post, "#{url}/buy", @api_key, params)
|
48
57
|
refresh_from(response, @api_key)
|
data/lib/easypost.rb
CHANGED
@@ -26,10 +26,12 @@ require 'easypost/event'
|
|
26
26
|
require 'easypost/insurance'
|
27
27
|
require 'easypost/order'
|
28
28
|
require 'easypost/parcel'
|
29
|
+
require 'easypost/payment_method' # deprecated
|
29
30
|
require 'easypost/pickup_rate'
|
30
31
|
require 'easypost/pickup'
|
31
32
|
require 'easypost/postage_label'
|
32
33
|
require 'easypost/rate'
|
34
|
+
require 'easypost/referral'
|
33
35
|
require 'easypost/refund'
|
34
36
|
require 'easypost/report'
|
35
37
|
require 'easypost/scan_form'
|
@@ -132,7 +134,7 @@ module EasyPost
|
|
132
134
|
end
|
133
135
|
|
134
136
|
def self.parse_response(status:, body:, json:)
|
135
|
-
if status >=
|
137
|
+
if status < 200 || status >= 300
|
136
138
|
error = JSON.parse(body)['error']
|
137
139
|
|
138
140
|
raise EasyPost::Error.new(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easypost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.8.1
|
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-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: brakeman
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- lib/easypost/pickup_rate.rb
|
209
209
|
- lib/easypost/postage_label.rb
|
210
210
|
- lib/easypost/rate.rb
|
211
|
+
- lib/easypost/referral.rb
|
211
212
|
- lib/easypost/refund.rb
|
212
213
|
- lib/easypost/report.rb
|
213
214
|
- lib/easypost/resource.rb
|