paystack_sdk 0.0.6 → 0.0.7
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/CHANGELOG.md +19 -0
- data/lib/paystack_sdk/client.rb +30 -0
- data/lib/paystack_sdk/resources/transfer_recipients.rb +47 -0
- data/lib/paystack_sdk/resources/transfers.rb +47 -0
- data/lib/paystack_sdk/response.rb +4 -0
- data/lib/paystack_sdk/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c0c86514c8e91c4ad7c193577baffc2bb81f440538060a2ebbb8fc6a7aac70f
|
4
|
+
data.tar.gz: 3c3a91324750db2890e047afbb610ef5f4db5466dfa736b0b723480c2025a2a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ea181b46bad07e3a134ee4b96d3f1b8aedfdc07f5d7c06b911acedb088dc57d1b74f0238b9bd4b6fff2d3d9335c53086e8b7cbc3fd24d20a3f0dac84d6aff69
|
7
|
+
data.tar.gz: b24c889c49d667cc5d26e9ef89e684d258e8be63f5a237f8b450a061dede02ce9676b3d27de247fe32b8966f2c543744252633fceb6cb941b85bfead9f01b291
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.0.7] - 2025-06-25
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- Transfer Recipients resource with full CRUD operations (create, list, fetch, update, delete)
|
8
|
+
- Transfers resource with full API support (create/initiate, list, fetch, finalize, verify)
|
9
|
+
- All resource methods now use `handle_response` for consistent response handling
|
10
|
+
- Regression tests for Transfer Recipients and Transfers resources, ensuring response wrapping and validation
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
|
14
|
+
- Registered `transfer_recipients` and `transfers` resources in the main client for easy access
|
15
|
+
- Updated specs to verify that all resource methods wrap responses using `PaystackSdk::Response`
|
16
|
+
|
17
|
+
### Improved
|
18
|
+
|
19
|
+
- Enhanced test coverage for new resources and response handling
|
20
|
+
- Improved code consistency by enforcing response wrapping and validation patterns across all new resources
|
21
|
+
|
3
22
|
## [0.0.6] - 2025-06-10
|
4
23
|
|
5
24
|
### Added
|
data/lib/paystack_sdk/client.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require_relative "resources/transactions"
|
4
4
|
require_relative "resources/customers"
|
5
|
+
require_relative "resources/transfer_recipients"
|
6
|
+
require_relative "resources/transfers"
|
5
7
|
require_relative "utils/connection_utils"
|
6
8
|
|
7
9
|
module PaystackSdk
|
@@ -61,5 +63,33 @@ module PaystackSdk
|
|
61
63
|
def customers
|
62
64
|
@customers ||= Resources::Customers.new(@connection)
|
63
65
|
end
|
66
|
+
|
67
|
+
# Provides access to the `TransferRecipients` resource.
|
68
|
+
#
|
69
|
+
# @return [PaystackSdk::Resources::TransferRecipients] An instance of the
|
70
|
+
# `TransferRecipients` resource.
|
71
|
+
#
|
72
|
+
# @example
|
73
|
+
# ```ruby
|
74
|
+
# recipients = client.transfer_recipients
|
75
|
+
# response = recipients.create(params)
|
76
|
+
# ```
|
77
|
+
def transfer_recipients
|
78
|
+
@transfer_recipients ||= Resources::TransferRecipients.new(@connection)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Provides access to the `Transfers` resource.
|
82
|
+
#
|
83
|
+
# @return [PaystackSdk::Resources::Transfers] An instance of the
|
84
|
+
# `Transfers` resource.
|
85
|
+
#
|
86
|
+
# @example
|
87
|
+
# ```ruby
|
88
|
+
# transfers = client.transfers
|
89
|
+
# response = transfers.create(params)
|
90
|
+
# ```
|
91
|
+
def transfers
|
92
|
+
@transfers ||= Resources::Transfers.new(@connection)
|
93
|
+
end
|
64
94
|
end
|
65
95
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../validations"
|
2
|
+
|
3
|
+
module PaystackSdk
|
4
|
+
module Resources
|
5
|
+
class TransferRecipients < Base
|
6
|
+
# Create a transfer recipient
|
7
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#create
|
8
|
+
def create(params)
|
9
|
+
validate_hash!(input: params, name: "TransferRecipient params")
|
10
|
+
validate_required_params!(
|
11
|
+
payload: params,
|
12
|
+
required_params: %i[type name account_number bank_code],
|
13
|
+
operation_name: "Create Transfer Recipient"
|
14
|
+
)
|
15
|
+
handle_response(@connection.post("/transferrecipient", params))
|
16
|
+
end
|
17
|
+
|
18
|
+
# List transfer recipients
|
19
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#list
|
20
|
+
def list(query = {})
|
21
|
+
handle_response(@connection.get("/transferrecipient", query))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fetch a transfer recipient
|
25
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#fetch
|
26
|
+
def fetch(recipient_code:)
|
27
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
28
|
+
handle_response(@connection.get("/transferrecipient/#{recipient_code}"))
|
29
|
+
end
|
30
|
+
|
31
|
+
# Update a transfer recipient
|
32
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#update
|
33
|
+
def update(recipient_code:, params:)
|
34
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
35
|
+
validate_hash!(input: params, name: "Update TransferRecipient params")
|
36
|
+
handle_response(@connection.put("/transferrecipient/#{recipient_code}", params))
|
37
|
+
end
|
38
|
+
|
39
|
+
# Delete a transfer recipient
|
40
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#delete
|
41
|
+
def delete(recipient_code:)
|
42
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
43
|
+
handle_response(@connection.delete("/transferrecipient/#{recipient_code}"))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../validations"
|
2
|
+
|
3
|
+
module PaystackSdk
|
4
|
+
module Resources
|
5
|
+
class Transfers < Base
|
6
|
+
# Create a transfer
|
7
|
+
# @see https://paystack.com/docs/api/transfer/#initiate
|
8
|
+
def create(params)
|
9
|
+
validate_hash!(input: params, name: "Transfer params")
|
10
|
+
validate_required_params!(
|
11
|
+
payload: params,
|
12
|
+
required_params: %i[source amount recipient],
|
13
|
+
operation_name: "Create Transfer"
|
14
|
+
)
|
15
|
+
handle_response(@connection.post("/transfer", params))
|
16
|
+
end
|
17
|
+
|
18
|
+
# List transfers
|
19
|
+
# @see https://paystack.com/docs/api/transfer/#list
|
20
|
+
def list(query = {})
|
21
|
+
handle_response(@connection.get("/transfer", query))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fetch a transfer
|
25
|
+
# @see https://paystack.com/docs/api/transfer/#fetch
|
26
|
+
def fetch(id:)
|
27
|
+
validate_presence!(value: id, name: "transfer id")
|
28
|
+
handle_response(@connection.get("/transfer/#{id}"))
|
29
|
+
end
|
30
|
+
|
31
|
+
# Finalize a transfer (OTP)
|
32
|
+
# @see https://paystack.com/docs/api/transfer/#finalize
|
33
|
+
def finalize(transfer_code:, otp:)
|
34
|
+
validate_presence!(value: transfer_code, name: "transfer_code")
|
35
|
+
validate_presence!(value: otp, name: "otp")
|
36
|
+
handle_response(@connection.post("/transfer/finalize_transfer", {transfer_code: transfer_code, otp: otp}))
|
37
|
+
end
|
38
|
+
|
39
|
+
# Verify a transfer
|
40
|
+
# @see https://paystack.com/docs/api/transfer/#verify
|
41
|
+
def verify(reference:)
|
42
|
+
validate_presence!(value: reference, name: "reference")
|
43
|
+
handle_response(@connection.get("/transfer/verify/#{reference}"))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -51,6 +51,9 @@ module PaystackSdk
|
|
51
51
|
# @return [String, nil] API message from the response
|
52
52
|
attr_reader :api_message
|
53
53
|
|
54
|
+
# @return [String, nil] API message from the response, if available
|
55
|
+
attr_reader :message
|
56
|
+
|
54
57
|
# @return [Hash, Array, Object] The underlying data
|
55
58
|
attr_reader :raw_data
|
56
59
|
|
@@ -70,6 +73,7 @@ module PaystackSdk
|
|
70
73
|
@status_code = response.status
|
71
74
|
@body = response.body
|
72
75
|
@api_message = extract_api_message(@body)
|
76
|
+
@message = @api_message
|
73
77
|
@raw_data = extract_data_from_body(@body)
|
74
78
|
|
75
79
|
case @status_code
|
data/lib/paystack_sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paystack_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxwell Nana Forson (theLazyProgrammer)
|
@@ -29,14 +29,14 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '3.
|
32
|
+
version: '3.13'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '3.
|
39
|
+
version: '3.13'
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: standard
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,6 +118,8 @@ files:
|
|
118
118
|
- lib/paystack_sdk/resources/base.rb
|
119
119
|
- lib/paystack_sdk/resources/customers.rb
|
120
120
|
- lib/paystack_sdk/resources/transactions.rb
|
121
|
+
- lib/paystack_sdk/resources/transfer_recipients.rb
|
122
|
+
- lib/paystack_sdk/resources/transfers.rb
|
121
123
|
- lib/paystack_sdk/response.rb
|
122
124
|
- lib/paystack_sdk/utils/connection_utils.rb
|
123
125
|
- lib/paystack_sdk/validations.rb
|