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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4ff6401efb6a0aba25394b61aa74e1a2645848c015565f3590ffdc10f504748
4
- data.tar.gz: e59175c14b106866b7129e5cb640ec9a64feebb5a2ddce12940e0436e8dc88af
3
+ metadata.gz: 8c0c86514c8e91c4ad7c193577baffc2bb81f440538060a2ebbb8fc6a7aac70f
4
+ data.tar.gz: 3c3a91324750db2890e047afbb610ef5f4db5466dfa736b0b723480c2025a2a0
5
5
  SHA512:
6
- metadata.gz: 964956e0a22d4ea337ac49896a865d43a0d6ba6ac2f2cc307a49f120b0b407cb4dedf80c6f3b5ed8a227b89d283e5a9d2729210c3763d4f6236f373de5e9bc6b
7
- data.tar.gz: e86ef5b41b26ee645f3f3b208cc945cb382d38d768ace5440af66fc0e82a3fac2e036902723021da0d896b90b4b1877b5f395f3ea2860e577010035624608de7
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PaystackSdk
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
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.6
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.12'
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.12'
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