paystack-ruby 1.0.0

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.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.standard.yml +3 -0
  3. data/CHANGELOG.md +5 -0
  4. data/CODE_OF_CONDUCT.md +132 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +153 -0
  7. data/Rakefile +8 -0
  8. data/docs/apple_pay.md +60 -0
  9. data/docs/balance.md +39 -0
  10. data/docs/bank.md +77 -0
  11. data/docs/bulk_charge.md +110 -0
  12. data/docs/charge.md +124 -0
  13. data/docs/customer.md +253 -0
  14. data/docs/dedicated_virtual_account.md +171 -0
  15. data/docs/direct_debit.md +44 -0
  16. data/docs/dispute.md +175 -0
  17. data/docs/integration.md +36 -0
  18. data/docs/miscellaneous.md +52 -0
  19. data/docs/order.md +101 -0
  20. data/docs/page.md +138 -0
  21. data/docs/payment_request.md +182 -0
  22. data/docs/plan.md +99 -0
  23. data/docs/product.md +114 -0
  24. data/docs/refund.md +87 -0
  25. data/docs/settlement.md +43 -0
  26. data/docs/split.md +140 -0
  27. data/docs/storefront.md +205 -0
  28. data/docs/subaccount.md +99 -0
  29. data/docs/subscription.md +132 -0
  30. data/docs/terminal.md +156 -0
  31. data/docs/transaction.md +206 -0
  32. data/docs/transfer.md +183 -0
  33. data/docs/transfer_recipient.md +124 -0
  34. data/docs/virtual_terminal.md +188 -0
  35. data/lib/paystack/base_resource.rb +13 -0
  36. data/lib/paystack/client.rb +146 -0
  37. data/lib/paystack/errors.rb +20 -0
  38. data/lib/paystack/resources/apple_pay.rb +31 -0
  39. data/lib/paystack/resources/balance.rb +24 -0
  40. data/lib/paystack/resources/bank.rb +31 -0
  41. data/lib/paystack/resources/bulk_charge.rb +52 -0
  42. data/lib/paystack/resources/charge.rb +59 -0
  43. data/lib/paystack/resources/customer.rb +94 -0
  44. data/lib/paystack/resources/dedicated_virtual_account.rb +73 -0
  45. data/lib/paystack/resources/direct_debit.rb +24 -0
  46. data/lib/paystack/resources/dispute.rb +66 -0
  47. data/lib/paystack/resources/integration.rb +24 -0
  48. data/lib/paystack/resources/miscellaneous.rb +31 -0
  49. data/lib/paystack/resources/order.rb +45 -0
  50. data/lib/paystack/resources/page.rb +52 -0
  51. data/lib/paystack/resources/payment_request.rb +73 -0
  52. data/lib/paystack/resources/plan.rb +38 -0
  53. data/lib/paystack/resources/product.rb +45 -0
  54. data/lib/paystack/resources/refund.rb +38 -0
  55. data/lib/paystack/resources/settlement.rb +24 -0
  56. data/lib/paystack/resources/split.rb +52 -0
  57. data/lib/paystack/resources/storefront.rb +87 -0
  58. data/lib/paystack/resources/subaccount.rb +38 -0
  59. data/lib/paystack/resources/subscription.rb +59 -0
  60. data/lib/paystack/resources/terminal.rb +66 -0
  61. data/lib/paystack/resources/transaction.rb +75 -0
  62. data/lib/paystack/resources/transfer.rb +87 -0
  63. data/lib/paystack/resources/transfer_recipient.rb +52 -0
  64. data/lib/paystack/resources/virtual_terminal.rb +73 -0
  65. data/lib/paystack/response.rb +40 -0
  66. data/lib/paystack/transport.rb +64 -0
  67. data/lib/paystack/version.rb +6 -0
  68. data/lib/paystack.rb +40 -0
  69. data/sig/paystack/ruby.rbs +6 -0
  70. metadata +110 -0
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ # Autogenerated — do not edit manually
3
+
4
+ require "json"
5
+
6
+ module Paystack
7
+ class Response
8
+ attr_reader :http_status, :status, :message, :data, :meta
9
+
10
+ def initialize(http_response)
11
+ @http_status = http_response.code.to_i
12
+ body = http_response.body.to_s
13
+ parsed = body.empty? ? {} : JSON.parse(body, symbolize_names: true)
14
+ @status = parsed[:status]
15
+ @message = parsed[:message]
16
+ @data = parsed[:data]
17
+ @meta = parsed[:meta]
18
+ raise_error! unless success?
19
+ end
20
+
21
+ def success?
22
+ (200..299).cover?(@http_status) && @status != false
23
+ end
24
+
25
+ private
26
+
27
+ def raise_error!
28
+ klass = case @http_status
29
+ when 401 then AuthenticationError
30
+ when 404 then NotFoundError
31
+ when 400, 422 then ValidationError
32
+ when 429 then RateLimitError
33
+ when 500..599 then ServerError
34
+ else Error
35
+ end
36
+
37
+ raise klass.new(@message, http_status: @http_status, data: @data)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+ # Autogenerated — do not edit manually
3
+
4
+ require "json"
5
+ require "net/http"
6
+ require "openssl"
7
+ require "uri"
8
+
9
+ module Paystack
10
+ class Transport
11
+ BASE_URL = "https://api.paystack.co"
12
+
13
+ def initialize(api_key)
14
+ @api_key = api_key
15
+ @uri = URI(BASE_URL)
16
+ end
17
+
18
+ def get(path, query: {})
19
+ request(Net::HTTP::Get, path, query: query)
20
+ end
21
+
22
+ def post(path, body: {}, query: {})
23
+ request(Net::HTTP::Post, path, body: body, query: query)
24
+ end
25
+
26
+ def put(path, body: {}, query: {})
27
+ request(Net::HTTP::Put, path, body: body, query: query)
28
+ end
29
+
30
+ def patch(path, body: {}, query: {})
31
+ request(Net::HTTP::Patch, path, body: body, query: query)
32
+ end
33
+
34
+ def delete(path, body: {}, query: {})
35
+ request(Net::HTTP::Delete, path, body: body, query: query)
36
+ end
37
+
38
+ private
39
+
40
+ def request(klass, path, query: {}, body: {})
41
+ full_path = query.empty? ? path : "#{path}?#{URI.encode_www_form(query.compact)}"
42
+
43
+ Net::HTTP.start(@uri.host, @uri.port, **ssl_options) do |http|
44
+ req = klass.new(full_path)
45
+ req["Authorization"] = "Bearer #{@api_key}"
46
+ req["Content-Type"] = "application/json"
47
+ req["Accept"] = "application/json"
48
+ req["User-Agent"] = "paystack-ruby/#{Paystack::VERSION}"
49
+ req.body = body.to_json unless body.empty?
50
+ Response.new(http.request(req))
51
+ end
52
+ end
53
+
54
+ def ssl_options
55
+ {
56
+ use_ssl: true,
57
+ min_version: OpenSSL::SSL::TLS1_2_VERSION,
58
+ verify_mode: OpenSSL::SSL::VERIFY_PEER,
59
+ open_timeout: 10,
60
+ read_timeout: 30
61
+ }
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ # Autogenerated — do not edit manually
3
+
4
+ module Paystack
5
+ VERSION = "1.0.0"
6
+ end
data/lib/paystack.rb ADDED
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ # Autogenerated — do not edit manually
3
+
4
+ require_relative "paystack/version"
5
+ require_relative "paystack/errors"
6
+ require_relative "paystack/response"
7
+ require_relative "paystack/transport"
8
+ require_relative "paystack/base_resource"
9
+ require_relative "paystack/resources/apple_pay"
10
+ require_relative "paystack/resources/balance"
11
+ require_relative "paystack/resources/bank"
12
+ require_relative "paystack/resources/bulk_charge"
13
+ require_relative "paystack/resources/charge"
14
+ require_relative "paystack/resources/customer"
15
+ require_relative "paystack/resources/dedicated_virtual_account"
16
+ require_relative "paystack/resources/direct_debit"
17
+ require_relative "paystack/resources/dispute"
18
+ require_relative "paystack/resources/integration"
19
+ require_relative "paystack/resources/miscellaneous"
20
+ require_relative "paystack/resources/order"
21
+ require_relative "paystack/resources/page"
22
+ require_relative "paystack/resources/payment_request"
23
+ require_relative "paystack/resources/plan"
24
+ require_relative "paystack/resources/product"
25
+ require_relative "paystack/resources/refund"
26
+ require_relative "paystack/resources/settlement"
27
+ require_relative "paystack/resources/split"
28
+ require_relative "paystack/resources/storefront"
29
+ require_relative "paystack/resources/subaccount"
30
+ require_relative "paystack/resources/subscription"
31
+ require_relative "paystack/resources/terminal"
32
+ require_relative "paystack/resources/transaction"
33
+ require_relative "paystack/resources/transfer"
34
+ require_relative "paystack/resources/transfer_recipient"
35
+ require_relative "paystack/resources/virtual_terminal"
36
+
37
+ require_relative "paystack/client"
38
+
39
+ module Paystack
40
+ end
@@ -0,0 +1,6 @@
1
+ module Paystack
2
+ module Ruby
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paystack-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Paystack
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Ruby SDK for interacting with the Paystack API.
13
+ email:
14
+ - techsupport@paystack.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".standard.yml"
20
+ - CHANGELOG.md
21
+ - CODE_OF_CONDUCT.md
22
+ - LICENSE.txt
23
+ - README.md
24
+ - Rakefile
25
+ - docs/apple_pay.md
26
+ - docs/balance.md
27
+ - docs/bank.md
28
+ - docs/bulk_charge.md
29
+ - docs/charge.md
30
+ - docs/customer.md
31
+ - docs/dedicated_virtual_account.md
32
+ - docs/direct_debit.md
33
+ - docs/dispute.md
34
+ - docs/integration.md
35
+ - docs/miscellaneous.md
36
+ - docs/order.md
37
+ - docs/page.md
38
+ - docs/payment_request.md
39
+ - docs/plan.md
40
+ - docs/product.md
41
+ - docs/refund.md
42
+ - docs/settlement.md
43
+ - docs/split.md
44
+ - docs/storefront.md
45
+ - docs/subaccount.md
46
+ - docs/subscription.md
47
+ - docs/terminal.md
48
+ - docs/transaction.md
49
+ - docs/transfer.md
50
+ - docs/transfer_recipient.md
51
+ - docs/virtual_terminal.md
52
+ - lib/paystack.rb
53
+ - lib/paystack/base_resource.rb
54
+ - lib/paystack/client.rb
55
+ - lib/paystack/errors.rb
56
+ - lib/paystack/resources/apple_pay.rb
57
+ - lib/paystack/resources/balance.rb
58
+ - lib/paystack/resources/bank.rb
59
+ - lib/paystack/resources/bulk_charge.rb
60
+ - lib/paystack/resources/charge.rb
61
+ - lib/paystack/resources/customer.rb
62
+ - lib/paystack/resources/dedicated_virtual_account.rb
63
+ - lib/paystack/resources/direct_debit.rb
64
+ - lib/paystack/resources/dispute.rb
65
+ - lib/paystack/resources/integration.rb
66
+ - lib/paystack/resources/miscellaneous.rb
67
+ - lib/paystack/resources/order.rb
68
+ - lib/paystack/resources/page.rb
69
+ - lib/paystack/resources/payment_request.rb
70
+ - lib/paystack/resources/plan.rb
71
+ - lib/paystack/resources/product.rb
72
+ - lib/paystack/resources/refund.rb
73
+ - lib/paystack/resources/settlement.rb
74
+ - lib/paystack/resources/split.rb
75
+ - lib/paystack/resources/storefront.rb
76
+ - lib/paystack/resources/subaccount.rb
77
+ - lib/paystack/resources/subscription.rb
78
+ - lib/paystack/resources/terminal.rb
79
+ - lib/paystack/resources/transaction.rb
80
+ - lib/paystack/resources/transfer.rb
81
+ - lib/paystack/resources/transfer_recipient.rb
82
+ - lib/paystack/resources/virtual_terminal.rb
83
+ - lib/paystack/response.rb
84
+ - lib/paystack/transport.rb
85
+ - lib/paystack/version.rb
86
+ - sig/paystack/ruby.rbs
87
+ homepage: https://github.com/PaystackOSS/paystack-ruby
88
+ licenses:
89
+ - MIT
90
+ metadata:
91
+ homepage_uri: https://github.com/PaystackOSS/paystack-ruby
92
+ source_code_uri: https://github.com/PaystackOSS/paystack-ruby
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 3.1.0
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubygems_version: 4.0.10
108
+ specification_version: 4
109
+ summary: Ruby SDK for the Paystack API
110
+ test_files: []