easypost 4.7.1 → 4.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|