paddle_pay 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -2
- data/lib/paddle_pay.rb +23 -23
- data/lib/paddle_pay/configuration.rb +19 -6
- data/lib/paddle_pay/connection.rb +11 -11
- data/lib/paddle_pay/errors/paddle_pay_error.rb +4 -1
- data/lib/paddle_pay/models/alert/webhook.rb +2 -2
- data/lib/paddle_pay/models/product/coupon.rb +12 -12
- data/lib/paddle_pay/models/product/license.rb +2 -2
- data/lib/paddle_pay/models/product/pay_link.rb +2 -2
- data/lib/paddle_pay/models/product/payment.rb +4 -4
- data/lib/paddle_pay/models/product/product.rb +2 -2
- data/lib/paddle_pay/models/subscription/charge.rb +1 -1
- data/lib/paddle_pay/models/subscription/modifier.rb +6 -6
- data/lib/paddle_pay/models/subscription/payment.rb +7 -7
- data/lib/paddle_pay/models/subscription/plan.rb +4 -4
- data/lib/paddle_pay/models/subscription/user.rb +10 -10
- data/lib/paddle_pay/util.rb +6 -6
- data/lib/paddle_pay/version.rb +1 -1
- data/test/spec/paddle_pay/configuration_spec.rb +35 -7
- data/test/spec/paddle_pay/connection_spec.rb +38 -38
- data/test/spec/paddle_pay/models/alert/webhook_spec.rb +9 -13
- data/test/spec/paddle_pay/models/product/coupon_spec.rb +29 -33
- data/test/spec/paddle_pay/models/product/license_spec.rb +8 -8
- data/test/spec/paddle_pay/models/product/pay_link_spec.rb +8 -8
- data/test/spec/paddle_pay/models/product/payment_spec.rb +7 -7
- data/test/spec/paddle_pay/models/product/product_spec.rb +9 -13
- data/test/spec/paddle_pay/models/subscription/charge_spec.rb +8 -8
- data/test/spec/paddle_pay/models/subscription/modifier_spec.rb +17 -21
- data/test/spec/paddle_pay/models/subscription/payment_spec.rb +17 -21
- data/test/spec/paddle_pay/models/subscription/plan_spec.rb +14 -18
- data/test/spec/paddle_pay/models/subscription/user_spec.rb +20 -24
- data/test/spec/paddle_pay/models/transaction/checkout_spec.rb +10 -14
- data/test/spec/paddle_pay/models/transaction/order_spec.rb +10 -14
- data/test/spec/paddle_pay/models/transaction/product_spec.rb +9 -13
- data/test/spec/paddle_pay/models/transaction/subscription_spec.rb +9 -13
- data/test/spec/paddle_pay/models/transaction/user_spec.rb +9 -13
- data/test/spec/paddle_pay/util_spec.rb +19 -19
- data/test/spec/paddle_pay/version_spec.rb +2 -2
- data/test/test_helper.rb +10 -10
- metadata +35 -7
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Product::Payment do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@payment = PaddlePay::Product::Payment
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@payment.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,17 +15,17 @@ describe PaddlePay::Product::Payment do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when the refund of a payment is requested" do
|
19
|
+
it "should raise an error if the payment refund is invalid" do
|
20
20
|
assert_raises PaddlePay::PaddlePayError do
|
21
21
|
@payment.refund(1234567)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it "should return success if the payment refund is valid" do
|
26
26
|
response = @payment.refund(10710436)
|
27
27
|
assert_instance_of Hash, response
|
28
28
|
refute_nil response[:refund_request_id]
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Product do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@product = PaddlePay::Product
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@product.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,27 +15,23 @@ describe PaddlePay::Product do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when products are requested" do
|
19
|
+
it "should list all products" do
|
20
20
|
list = @product.list
|
21
21
|
assert_instance_of Hash, list
|
22
22
|
assert_instance_of Array, list[:products]
|
23
23
|
refute_nil list[:products].first[:id] if list[:products].count > 0
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it "should raise an error if no vendor id is present" do
|
27
27
|
PaddlePay.config.vendor_id = nil
|
28
|
-
exception = assert_raises
|
29
|
-
@product.list
|
30
|
-
end
|
28
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @product.list }
|
31
29
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
32
30
|
end
|
33
31
|
|
34
|
-
it
|
32
|
+
it "should raise an error if no vendor auth code is present" do
|
35
33
|
PaddlePay.config.vendor_auth_code = nil
|
36
|
-
exception = assert_raises
|
37
|
-
@product.list
|
38
|
-
end
|
34
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @product.list }
|
39
35
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
40
36
|
end
|
41
37
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Subscription::Charge do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@charge = PaddlePay::Subscription::Charge
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@charge.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,15 +15,15 @@ describe PaddlePay::Subscription::Charge do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when a charge is created" do
|
19
|
+
it "should raise an error if the charge is invalid" do
|
20
20
|
assert_raises PaddlePay::PaddlePayError do
|
21
|
-
@charge.create(12345678,
|
21
|
+
@charge.create(12345678, "0.00", "Test")
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
26
|
-
response = @charge.create(3484448,
|
25
|
+
it "should return invoice id if the charge is valid" do
|
26
|
+
response = @charge.create(3484448, "0.00", "Test")
|
27
27
|
assert_instance_of Hash, response
|
28
28
|
refute_nil response[:invoice_id]
|
29
29
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Subscription::Modifier do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@modifier = PaddlePay::Subscription::Modifier
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@modifier.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,54 +15,50 @@ describe PaddlePay::Subscription::Modifier do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when modifiers are requested" do
|
19
|
+
it "should list all modifiers" do
|
20
20
|
list = @modifier.list
|
21
21
|
assert_instance_of Array, list
|
22
22
|
refute_nil list.first[:modifier_id] if list.count > 0
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it "should raise an error if no vendor id is present" do
|
26
26
|
PaddlePay.config.vendor_id = nil
|
27
|
-
exception = assert_raises
|
28
|
-
@modifier.list
|
29
|
-
end
|
27
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @modifier.list }
|
30
28
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
29
|
end
|
32
30
|
|
33
|
-
it
|
31
|
+
it "should raise an error if no vendor auth code is present" do
|
34
32
|
PaddlePay.config.vendor_auth_code = nil
|
35
|
-
exception = assert_raises
|
36
|
-
@modifier.list
|
37
|
-
end
|
33
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @modifier.list }
|
38
34
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
35
|
end
|
40
36
|
end
|
41
37
|
|
42
|
-
describe
|
43
|
-
it
|
44
|
-
modifier = {
|
38
|
+
describe "when the creation of a modifier is requested" do
|
39
|
+
it "should raise an error if the modifier is invalid" do
|
40
|
+
modifier = {subscription_id: 1234567, modifier_amount: "1.00", modifier_description: "Test"}
|
45
41
|
assert_raises PaddlePay::PaddlePayError do
|
46
42
|
@modifier.create(modifier)
|
47
43
|
end
|
48
44
|
end
|
49
45
|
|
50
|
-
it
|
51
|
-
modifier = {
|
46
|
+
it "should return a modifier id if the modifier is valid" do
|
47
|
+
modifier = {subscription_id: 3484448, modifier_amount: "1.00", modifier_description: "Test"}
|
52
48
|
response = @modifier.create(modifier)
|
53
49
|
assert_instance_of Hash, response
|
54
50
|
refute_nil response[:modifier_id]
|
55
51
|
end
|
56
52
|
end
|
57
53
|
|
58
|
-
describe
|
59
|
-
it
|
54
|
+
describe "when the deletion of a modifier is requested" do
|
55
|
+
it "should raise an error if the modifier deletion is invalid" do
|
60
56
|
assert_raises PaddlePay::PaddlePayError do
|
61
57
|
@modifier.delete(1234567)
|
62
58
|
end
|
63
59
|
end
|
64
60
|
|
65
|
-
it
|
61
|
+
it "should return a product id if the modifier deletion is valid" do
|
66
62
|
response = @modifier.delete(143433)
|
67
63
|
assert_nil response # no response when request is successful
|
68
64
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Subscription::Payment do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@payment = PaddlePay::Subscription::Payment
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@payment.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,51 +15,47 @@ describe PaddlePay::Subscription::Payment do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when payments are requested" do
|
19
|
+
it "should list all payments" do
|
20
20
|
list = @payment.list
|
21
21
|
assert_instance_of Array, list
|
22
22
|
refute_nil list.first[:id] if list.count > 0
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it "should raise an error if no vendor id is present" do
|
26
26
|
PaddlePay.config.vendor_id = nil
|
27
|
-
exception = assert_raises
|
28
|
-
@payment.list
|
29
|
-
end
|
27
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @payment.list }
|
30
28
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
29
|
end
|
32
30
|
|
33
|
-
it
|
31
|
+
it "should raise an error if no vendor auth code is present" do
|
34
32
|
PaddlePay.config.vendor_auth_code = nil
|
35
|
-
exception = assert_raises
|
36
|
-
@payment.list
|
37
|
-
end
|
33
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @payment.list }
|
38
34
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
35
|
end
|
40
36
|
end
|
41
37
|
|
42
|
-
describe
|
43
|
-
it
|
38
|
+
describe "when the reschedule of a payment is requested" do
|
39
|
+
it "should raise an error if the payment reschedule is invalid" do
|
44
40
|
assert_raises PaddlePay::PaddlePayError do
|
45
|
-
@payment.reschedule(10710436,
|
41
|
+
@payment.reschedule(10710436, "wrong date")
|
46
42
|
end
|
47
43
|
end
|
48
44
|
|
49
|
-
it
|
50
|
-
response = @payment.reschedule(10710436,
|
45
|
+
it "should return success if the payment reschedule is valid" do
|
46
|
+
response = @payment.reschedule(10710436, "2020-12-31")
|
51
47
|
assert_nil response # no response when request is successful
|
52
48
|
end
|
53
49
|
end
|
54
50
|
|
55
|
-
describe
|
56
|
-
it
|
51
|
+
describe "when the refund of a payment is requested" do
|
52
|
+
it "should raise an error if the payment refund is invalid" do
|
57
53
|
assert_raises PaddlePay::PaddlePayError do
|
58
54
|
@payment.refund(1234567)
|
59
55
|
end
|
60
56
|
end
|
61
57
|
|
62
|
-
it
|
58
|
+
it "should return success if the payment refund is valid" do
|
63
59
|
response = @payment.refund(10710436)
|
64
60
|
assert_instance_of Hash, response
|
65
61
|
refute_nil response[:refund_request_id]
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Subscription::Plan do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@plan = PaddlePay::Subscription::Plan
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@plan.name) + "/#{name}"
|
11
11
|
VCR.insert_cassette(path)
|
@@ -15,40 +15,36 @@ describe PaddlePay::Subscription::Plan do
|
|
15
15
|
VCR.eject_cassette
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
18
|
+
describe "when plans are requested" do
|
19
|
+
it "should list all plans" do
|
20
20
|
list = @plan.list
|
21
21
|
assert_instance_of Array, list
|
22
22
|
refute_nil list.first[:id] if list.count > 0
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it "should raise an error if no vendor id is present" do
|
26
26
|
PaddlePay.config.vendor_id = nil
|
27
|
-
exception = assert_raises
|
28
|
-
@plan.list
|
29
|
-
end
|
27
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @plan.list }
|
30
28
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
29
|
end
|
32
30
|
|
33
|
-
it
|
31
|
+
it "should raise an error if no vendor auth code is present" do
|
34
32
|
PaddlePay.config.vendor_auth_code = nil
|
35
|
-
exception = assert_raises
|
36
|
-
@plan.list
|
37
|
-
end
|
33
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @plan.list }
|
38
34
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
35
|
end
|
40
36
|
end
|
41
37
|
|
42
|
-
describe
|
43
|
-
it
|
44
|
-
plan = {
|
38
|
+
describe "when the creation of a plan is requested" do
|
39
|
+
it "should raise an error if the plan is invalid" do
|
40
|
+
plan = {plan_name: "Test", plan_trial_days: 30, plan_length: 1, plan_type: "month"}
|
45
41
|
assert_raises PaddlePay::PaddlePayError do
|
46
42
|
@plan.create(plan)
|
47
43
|
end
|
48
44
|
end
|
49
45
|
|
50
|
-
it
|
51
|
-
plan = {
|
46
|
+
it "should return a product id if the plan is valid" do
|
47
|
+
plan = {plan_name: "Test", plan_trial_days: 30, plan_length: 1, plan_type: "month", main_currency_code: "USD", recurring_price_usd: "5.00"}
|
52
48
|
response = @plan.create(plan)
|
53
49
|
assert_instance_of Hash, response
|
54
50
|
refute_nil response[:product_id]
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "test_helper"
|
4
4
|
|
5
5
|
describe PaddlePay::Subscription::User do
|
6
6
|
before do
|
7
|
-
PaddlePay.config.vendor_id = ENV[
|
8
|
-
PaddlePay.config.vendor_auth_code = ENV[
|
7
|
+
PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
|
9
9
|
@user = PaddlePay::Subscription::User
|
10
10
|
path = PaddlePay::Util.convert_class_to_path(@user.name) + "/#{name}"
|
11
11
|
puts path
|
@@ -16,70 +16,66 @@ describe PaddlePay::Subscription::User do
|
|
16
16
|
VCR.eject_cassette
|
17
17
|
end
|
18
18
|
|
19
|
-
describe
|
20
|
-
it
|
19
|
+
describe "when users are requested" do
|
20
|
+
it "should list all users" do
|
21
21
|
list = @user.list
|
22
22
|
assert_instance_of Array, list
|
23
23
|
refute_nil list.first[:user_id] if list.count > 0
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it "should raise an error if no vendor id is present" do
|
27
27
|
PaddlePay.config.vendor_id = nil
|
28
|
-
exception = assert_raises
|
29
|
-
@user.list
|
30
|
-
end
|
28
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @user.list }
|
31
29
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
32
30
|
end
|
33
31
|
|
34
|
-
it
|
32
|
+
it "should raise an error if no vendor auth code is present" do
|
35
33
|
PaddlePay.config.vendor_auth_code = nil
|
36
|
-
exception = assert_raises
|
37
|
-
@user.list
|
38
|
-
end
|
34
|
+
exception = assert_raises(PaddlePay::PaddlePayError) { @user.list }
|
39
35
|
assert_equal exception.code, 107 # You don't have permission to access this resource
|
40
36
|
end
|
41
37
|
end
|
42
38
|
|
43
|
-
describe
|
44
|
-
it
|
39
|
+
describe "when an update preview is requested" do
|
40
|
+
it "should raise an error if the subscription update preview is invalid" do
|
45
41
|
subscription = {}
|
46
42
|
assert_raises PaddlePay::PaddlePayError do
|
47
43
|
@user.preview_update(3479984, subscription)
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
51
|
-
it
|
52
|
-
subscription = {
|
47
|
+
it "should return a subscription id if the subscription update preview is valid" do
|
48
|
+
subscription = {recurring_price: "10.00", currency: "USD", quantity: 1}
|
53
49
|
response = @user.preview_update(3479984, subscription)
|
54
50
|
assert_instance_of Hash, response
|
55
51
|
refute_nil response[:subscription_id]
|
56
52
|
end
|
57
53
|
end
|
58
54
|
|
59
|
-
describe
|
60
|
-
it
|
55
|
+
describe "when an update is requested" do
|
56
|
+
it "should raise an error if the subscription update is invalid" do
|
61
57
|
subscription = {}
|
62
58
|
assert_raises PaddlePay::PaddlePayError do
|
63
59
|
@user.update(3479984, subscription)
|
64
60
|
end
|
65
61
|
end
|
66
62
|
|
67
|
-
it
|
68
|
-
subscription = {
|
63
|
+
it "should return a subscription id if the subscription update is valid" do
|
64
|
+
subscription = {recurring_price: "10.00", currency: "USD", quantity: 1}
|
69
65
|
response = @user.update(3479984, subscription)
|
70
66
|
assert_instance_of Hash, response
|
71
67
|
refute_nil response[:subscription_id]
|
72
68
|
end
|
73
69
|
end
|
74
70
|
|
75
|
-
describe
|
76
|
-
it
|
71
|
+
describe "when a cancelation is requested" do
|
72
|
+
it "should raise an error if the cancelation is invalid" do
|
77
73
|
assert_raises PaddlePay::PaddlePayError do
|
78
74
|
@user.cancel(1000000, {})
|
79
75
|
end
|
80
76
|
end
|
81
77
|
|
82
|
-
it
|
78
|
+
it "should return success if the cancelation is valid" do
|
83
79
|
response = @user.cancel(3479984)
|
84
80
|
assert_nil response # no response when request is successful
|
85
81
|
end
|