cash_app_pay 0.0.1

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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cash_app_pay/api_operations/create.rb +16 -0
  3. data/lib/cash_app_pay/api_operations/delete.rb +27 -0
  4. data/lib/cash_app_pay/api_operations/list.rb +17 -0
  5. data/lib/cash_app_pay/api_operations/request.rb +45 -0
  6. data/lib/cash_app_pay/api_operations/retrieve.rb +24 -0
  7. data/lib/cash_app_pay/api_operations/save.rb +16 -0
  8. data/lib/cash_app_pay/api_operations/update.rb +31 -0
  9. data/lib/cash_app_pay/api_operations/upsert.rb +22 -0
  10. data/lib/cash_app_pay/api_resource.rb +58 -0
  11. data/lib/cash_app_pay/cash_app_pay_client.rb +117 -0
  12. data/lib/cash_app_pay/cash_app_pay_configuration.rb +19 -0
  13. data/lib/cash_app_pay/cash_app_pay_object.rb +77 -0
  14. data/lib/cash_app_pay/cash_app_pay_response.rb +17 -0
  15. data/lib/cash_app_pay/connection_manager.rb +79 -0
  16. data/lib/cash_app_pay/endpoint.rb +8 -0
  17. data/lib/cash_app_pay/error_object.rb +6 -0
  18. data/lib/cash_app_pay/errors.rb +45 -0
  19. data/lib/cash_app_pay/helpers/symbolize.rb +31 -0
  20. data/lib/cash_app_pay/list_object.rb +64 -0
  21. data/lib/cash_app_pay/persistent_http_client.rb +48 -0
  22. data/lib/cash_app_pay/resources/api_key.rb +19 -0
  23. data/lib/cash_app_pay/resources/brand.rb +20 -0
  24. data/lib/cash_app_pay/resources/customer.rb +56 -0
  25. data/lib/cash_app_pay/resources/customer_request.rb +18 -0
  26. data/lib/cash_app_pay/resources/dispute.rb +142 -0
  27. data/lib/cash_app_pay/resources/dispute_evidence.rb +9 -0
  28. data/lib/cash_app_pay/resources/fee_plan.rb +16 -0
  29. data/lib/cash_app_pay/resources/grant.rb +13 -0
  30. data/lib/cash_app_pay/resources/merchant.rb +20 -0
  31. data/lib/cash_app_pay/resources/payment.rb +63 -0
  32. data/lib/cash_app_pay/resources/refund.rb +62 -0
  33. data/lib/cash_app_pay/resources/webhook.rb +20 -0
  34. data/lib/cash_app_pay/resources/webhook_event.rb +15 -0
  35. data/lib/cash_app_pay/version.rb +5 -0
  36. data/lib/cash_app_pay.rb +69 -0
  37. metadata +85 -0
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ # TODO: - I can make this a sublcass of CashAppPay::APIResource
5
+ class ListObject
6
+ include Enumerable
7
+
8
+ attr_accessor :data, :cursor, :opts, :klass, :filters
9
+
10
+ def self.empty_list(klass, opts = {}, cursor = nil, filters = {})
11
+ ListObject.new(klass, [], cursor, opts, filters)
12
+ end
13
+
14
+ def initialize(klass, data, cursor, opts, filters)
15
+ self.klass = klass
16
+ self.data = data
17
+ self.cursor = cursor
18
+ self.opts = opts
19
+ self.filters = filters
20
+ end
21
+
22
+ def self.initialize_from_response(klass, response, opts, filters)
23
+ key = "#{klass.object_name}s".to_sym
24
+ list_data = response.data
25
+ entries = list_data[key]&.map { |entry| klass.new(entry, opts) } || []
26
+ cursor = list_data[:cursor]
27
+ new(klass, entries, cursor, opts, filters)
28
+ end
29
+
30
+ def inspect
31
+ "#<#{self.class}:0x#{object_id.to_s(16)}> JSON: " +
32
+ JSON.pretty_generate({ filters: filters, data: data, cursor: cursor })
33
+ end
34
+
35
+ def [](key)
36
+ data[key]
37
+ end
38
+
39
+ def each(&blk)
40
+ data.each(&blk)
41
+ end
42
+
43
+ def empty?
44
+ data.empty?
45
+ end
46
+
47
+ def auto_paging_each(&blk)
48
+ page = self
49
+ loop do
50
+ page.each(&blk)
51
+ page = page.next_page
52
+ break if page.empty?
53
+ end
54
+ end
55
+
56
+ def next_page(params = {}, opts = {})
57
+ return self.class.empty_list(klass, opts, nil, filters) if cursor.nil?
58
+
59
+ params = filters.merge(cursor: cursor).merge(params)
60
+
61
+ klass.list(params, opts)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class PersistentHttpClient
5
+ class << self
6
+ # url: URI / String
7
+ # options: any options that Net::HTTP.new accepts
8
+ def get(url, options = {})
9
+ uri = url.is_a?(URI) ? url : URI(url)
10
+ connection_manager.get_client(uri, options)
11
+ end
12
+
13
+ private
14
+
15
+ # each thread gets its own connection manager
16
+ def connection_manager
17
+ # before getting a connection manager
18
+ # we first clear all old ones
19
+ remove_old_managers
20
+ Thread.current[:cash_app_pay_client__internal_use_only] ||= new_manager
21
+ end
22
+
23
+ def new_manager
24
+ # create a new connection manager in a thread safe way
25
+ mutex.synchronize do
26
+ manager = ConnectionManager.new
27
+ connection_managers << manager
28
+ manager
29
+ end
30
+ end
31
+
32
+ def remove_old_managers
33
+ mutex.synchronize do
34
+ removed = connection_managers.reject!(&:stale?)
35
+ (removed || []).each(&:close_connections!)
36
+ end
37
+ end
38
+
39
+ def mutex
40
+ @mutex ||= Mutex.new
41
+ end
42
+
43
+ def connection_managers
44
+ @connection_managers ||= []
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class APIKey < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ extend CashAppPay::APIOperations::List
8
+ include CashAppPay::APIOperations::Retrieve
9
+ include CashAppPay::APIOperations::Delete
10
+
11
+ def self.resource_url
12
+ '/management/v1/api-keys'
13
+ end
14
+
15
+ def self.object_name
16
+ :api_key
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Brand < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ extend CashAppPay::APIOperations::List
8
+ include CashAppPay::APIOperations::Retrieve
9
+ include CashAppPay::APIOperations::Update
10
+ include CashAppPay::APIOperations::Upsert
11
+
12
+ def self.resource_url
13
+ '/network/v1/brands'
14
+ end
15
+
16
+ def self.object_name
17
+ :brand
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Customer < APIResource
5
+ extend CashAppPay::APIOperations::List
6
+ include CashAppPay::APIOperations::Retrieve
7
+
8
+ def self.resource_url
9
+ '/network/v1/customers'
10
+ end
11
+
12
+ def self.object_name
13
+ :customer
14
+ end
15
+
16
+ def retrieve_grant(grant, opts = {})
17
+ CashAppPay::Grant.request_cash_app_pay_object(
18
+ method: :get,
19
+ path: format('/network/v1/customers/%<customer>s/grants/%<grant>s',
20
+ { customer: CGI.escape(self), grant: CGI.escape(grant) }),
21
+ params: nil,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ def self.retrieve_grant(customer, grant, opts = {})
27
+ CashAppPay::Grant.request_cash_app_pay_object(
28
+ method: :get,
29
+ path: format('/network/v1/customers/%<customer>s/grants/%<grant>s',
30
+ { customer: CGI.escape(customer), grant: CGI.escape(grant) }),
31
+ params: nil,
32
+ opts: opts
33
+ )
34
+ end
35
+
36
+ def revoke_grant(grant, opts = {})
37
+ CashAppPay::Grant.request_cash_app_pay_object(
38
+ method: :post,
39
+ path: format('/network/v1/customers/%<customer>s/grants/%<grant>s/revoke',
40
+ { customer: CGI.escape(self), grant: CGI.escape(grant) }),
41
+ params: nil,
42
+ opts: opts
43
+ )
44
+ end
45
+
46
+ def self.revoke_grant(customer, grant, opts = {})
47
+ CashAppPay::Grant.request_cash_app_pay_object(
48
+ method: :post,
49
+ path: format('/network/v1/customers/%<customer>s/grants/%<grant>s/revoke',
50
+ { customer: CGI.escape(customer), grant: CGI.escape(grant) }),
51
+ params: nil,
52
+ opts: opts
53
+ )
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class CustomerRequest < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ include CashAppPay::APIOperations::Update
8
+ include CashAppPay::APIOperations::Retrieve
9
+
10
+ def self.resource_url
11
+ '/customer-request/v1/requests'
12
+ end
13
+
14
+ def self.object_name
15
+ :request
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Dispute < APIResource
5
+ extend CashAppPay::APIOperations::List
6
+ include CashAppPay::APIOperations::Retrieve
7
+
8
+ def self.resource_url
9
+ '/network/v1/disputes'
10
+ end
11
+
12
+ def self.object_name
13
+ :dispute
14
+ end
15
+
16
+ def accept(opts = {})
17
+ request_cash_app_pay_object(
18
+ method: :post,
19
+ path: format('/network/v1/disputes/%<dispute>s/accept', { dispute: CGI.escape(self) }),
20
+ params: nil,
21
+ opts: opts
22
+ )
23
+ end
24
+
25
+ def self.accept(dispute, opts = {})
26
+ request_cash_app_pay_object(
27
+ method: :post,
28
+ path: format('/network/v1/disputes/%<dispute>s/accept', { dispute: CGI.escape(dispute) }),
29
+ params: nil,
30
+ opts: opts
31
+ )
32
+ end
33
+
34
+ def challenge(opts = {})
35
+ request_cash_app_pay_object(
36
+ method: :post,
37
+ path: format('/network/v1/disputes/%<dispute>s/challenge', { dispute: CGI.escape(self) }),
38
+ params: nil,
39
+ opts: opts
40
+ )
41
+ end
42
+
43
+ def self.challenge(dispute, opts = {})
44
+ request_cash_app_pay_object(
45
+ method: :post,
46
+ path: format('/network/v1/disputes/%<dispute>s/challenge', { dispute: CGI.escape(dispute) }),
47
+ params: nil,
48
+ opts: opts
49
+ )
50
+ end
51
+
52
+ # def list_dispute_evidence(opts = {})
53
+ # request_cash_app_pay_object(
54
+ # method: :post,
55
+ # path: format('/network/v1/disputes/%<dispute>s/challenge', { dispute: CGI.escape(self) }),
56
+ # params: nil,
57
+ # opts: opts
58
+ # )
59
+ # end
60
+
61
+ # def self.list_dispute_evidence(dispute, opts = {})
62
+ # equest_cash_app_pay_object(
63
+ # method: :post,
64
+ # path: format('/network/v1/disputes/%<dispute>s/challenge', { dispute: CGI.escape(dispute) }),
65
+ # params: nil,
66
+ # opts: opts
67
+ # )
68
+ # end
69
+
70
+ def create_dispute_evidence_text(params = {}, opts = {})
71
+ CashAppPay::DisputeEvidence.request_cash_app_pay_object(
72
+ method: :post,
73
+ path: format('/network/v1/disputes/%<dispute>s/evidence-text', { dispute: CGI.escape(self) }),
74
+ params: params,
75
+ opts: opts
76
+ )
77
+ end
78
+
79
+ def self.create_dispute_evidence_text(dispute, params = {}, opts = {})
80
+ CashAppPay::DisputeEvidence.request_cash_app_pay_object(
81
+ method: :post,
82
+ path: format('/network/v1/disputes/%<dispute>s/evidence-text', { dispute: CGI.escape(dispute) }),
83
+ params: params,
84
+ opts: opts
85
+ )
86
+ end
87
+
88
+ # def create_dispute_evidence_file(params = {}, opts = {})
89
+ # CashAppPay::DisputeEvidence.request_cash_app_pay_object(
90
+ # method: :post,
91
+ # path: format('/network/v1/disputes/%<dispute>s/evidence-text', { dispute: CGI.escape(self) }),
92
+ # params: params,
93
+ # opts: opts
94
+ # )
95
+ # end
96
+
97
+ # def self.create_dispute_evidence_file(dispute, opts = {})
98
+ # CashAppPay::DisputeEvidence.request_cash_app_pay_object(
99
+ # method: :post,
100
+ # path: format('/network/v1/disputes/%<dispute>s/evidence-text', { dispute: CGI.escape(self) }),
101
+ # params: params,
102
+ # opts: opts
103
+ # )
104
+ # end
105
+
106
+ def delete_dispute_evidence(evidence, opts = {})
107
+ delete_cash_app_pay_object(
108
+ path: format('/network/v1/disputes/%<dispute>s/evidence/%<evidence>s',
109
+ { dispute: CGI.escape(self), evidence: CGI.escape(evidence) }),
110
+ opts: opts
111
+ )
112
+ end
113
+
114
+ def self.delete_dispute_evidence(dispute, evidence, opts = {})
115
+ delete_cash_app_pay_object(
116
+ path: format('/mocks/cashapp-pay/api/109478393/disputes/%<dispute>s/evidence/%<evidence>s',
117
+ { dispute: CGI.escape(dispute), evidence: CGI.escape(evidence) }),
118
+ opts: opts
119
+ )
120
+ end
121
+
122
+ def retrieve_dispute_evidence(evidence, opts = {})
123
+ CashAppPay::DisputeEvidence.request_cash_app_pay_object(
124
+ method: :get,
125
+ path: format('/network/v1/disputes/%<dispute>s/evidence/%<evidence>s',
126
+ { dispute: CGI.escape(self), evidence: CGI.escape(evidence) }),
127
+ params: nil,
128
+ opts: opts
129
+ )
130
+ end
131
+
132
+ def self.retrieve_dispute_evidence(dispute, evidence, opts = {})
133
+ CashAppPay::DisputeEvidence.request_cash_app_pay_object(
134
+ method: :get,
135
+ path: format('/network/v1/disputes/%<dispute>s/evidence/%<evidence>s',
136
+ { dispute: CGI.escape(dispute), evidence: CGI.escape(evidence) }),
137
+ params: nil,
138
+ opts: opts
139
+ )
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class DisputeEvidence < APIResource
5
+ def self.object_name
6
+ :evidence
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class FeePlan < APIResource
5
+ extend CashAppPay::APIOperations::List
6
+ include CashAppPay::APIOperations::Retrieve
7
+
8
+ def self.resource_url
9
+ '/network/v1/fee-plans'
10
+ end
11
+
12
+ def self.object_name
13
+ :fee_plan
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Grant < APIResource
5
+ def self.resource_url
6
+ raise NotImplementedError, 'Grant does not have a resource_url'
7
+ end
8
+
9
+ def self.object_name
10
+ :grant
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Merchant < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ extend CashAppPay::APIOperations::List
8
+ include CashAppPay::APIOperations::Retrieve
9
+ include CashAppPay::APIOperations::Update
10
+ include CashAppPay::APIOperations::Upsert
11
+
12
+ def self.resource_url
13
+ '/network/v1/merchants'
14
+ end
15
+
16
+ def self.object_name
17
+ :merchant
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Payment < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ extend CashAppPay::APIOperations::List
8
+ include CashAppPay::APIOperations::Retrieve
9
+
10
+ def self.resource_url
11
+ '/network/v1/payments'
12
+ end
13
+
14
+ def self.object_name
15
+ :payment
16
+ end
17
+
18
+ def capture(params = {}, opts = {})
19
+ request_cash_app_pay_object(
20
+ method: :post,
21
+ path: format('/network/v1/payments/%<payment>s/capture', { payment: CGI.escape(self) }),
22
+ params: params,
23
+ opts: opts
24
+ )
25
+ end
26
+
27
+ def self.capture(payment, params = {}, opts = {})
28
+ request_cash_app_pay_object(
29
+ method: :post,
30
+ path: format('/network/v1/payments/%<payment>s/capture', { payment: CGI.escape(payment) }),
31
+ params: params,
32
+ opts: opts
33
+ )
34
+ end
35
+
36
+ def void(opts = {})
37
+ request_cash_app_pay_object(
38
+ method: :post,
39
+ path: format('/network/v1/payments/%<payment>s/void', { payment: CGI.escape(self) }),
40
+ params: nil,
41
+ opts: opts
42
+ )
43
+ end
44
+
45
+ def self.void(payment, opts = {})
46
+ request_cash_app_pay_object(
47
+ method: :post,
48
+ path: format('/network/v1/payments/%<payment>s/void', { payment: CGI.escape(payment) }),
49
+ params: nil,
50
+ opts: opts
51
+ )
52
+ end
53
+
54
+ def self.void_by_idempotency_key(params = {}, opts = {})
55
+ request_cash_app_pay_object(
56
+ method: :post,
57
+ path: '/network/v1/payments/void-by-idempotency-key',
58
+ params: params,
59
+ opts: opts
60
+ )
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Refund < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ extend CashAppPay::APIOperations::List
7
+ include CashAppPay::APIOperations::Retrieve
8
+
9
+ def self.resource_url
10
+ '/network/v1/refunds'
11
+ end
12
+
13
+ def self.object_name
14
+ :refund
15
+ end
16
+
17
+ def capture(params = {}, opts = {})
18
+ request_cash_app_pay_object(
19
+ method: :post,
20
+ path: format('/network/v1/refunds/%<refund>s/capture', { refund: CGI.escape(self) }),
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ def self.capture(refund, params = {}, opts = {})
27
+ request_cash_app_pay_object(
28
+ method: :post,
29
+ path: format('/network/v1/refunds/%<refund>s/capture', { refund: CGI.escape(refund) }),
30
+ params: params,
31
+ opts: opts
32
+ )
33
+ end
34
+
35
+ def void(opts = {})
36
+ request_cash_app_pay_object(
37
+ method: :post,
38
+ path: format('/network/v1/refunds/%<refund>s/void', { refund: CGI.escape(self) }),
39
+ params: nil,
40
+ opts: opts
41
+ )
42
+ end
43
+
44
+ def self.void(refund, opts = {})
45
+ request_cash_app_pay_object(
46
+ method: :post,
47
+ path: format('/network/v1/refunds/%<refund>s/void', { refund: CGI.escape(refund) }),
48
+ params: nil,
49
+ opts: opts
50
+ )
51
+ end
52
+
53
+ def self.void_by_idempotency_key(params = {}, opts = {})
54
+ request_cash_app_pay_object(
55
+ method: :post,
56
+ path: '/network/v1/refunds/void-by-idempotency-key',
57
+ params: params,
58
+ opts: opts
59
+ )
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class Webhook < APIResource
5
+ extend CashAppPay::APIOperations::Create
6
+ include CashAppPay::APIOperations::Save
7
+ include CashAppPay::APIOperations::Update
8
+ extend CashAppPay::APIOperations::List
9
+ include CashAppPay::APIOperations::Retrieve
10
+ include CashAppPay::APIOperations::Delete
11
+
12
+ def self.resource_url
13
+ '/management/v1/webhook-endpoints'
14
+ end
15
+
16
+ def self.object_name
17
+ :webhook_endpoint
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ class WebhookEvent < APIResource
5
+ extend CashAppPay::APIOperations::List
6
+
7
+ def self.resource_url
8
+ '/management/v1/webhook-events'
9
+ end
10
+
11
+ def self.object_name
12
+ :webhook_event
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CashAppPay
4
+ VERSION = '0.0.1'
5
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'cgi'
5
+ require 'forwardable'
6
+ require 'uri'
7
+ require 'net/http'
8
+ require 'byebug'
9
+ require 'securerandom'
10
+ require 'time'
11
+
12
+ # Version
13
+ require 'cash_app_pay/version'
14
+
15
+ # Helpers
16
+ require 'cash_app_pay/helpers/symbolize'
17
+
18
+ # API operations
19
+ require 'cash_app_pay/api_operations/create'
20
+ require 'cash_app_pay/api_operations/list'
21
+ require 'cash_app_pay/api_operations/request'
22
+ require 'cash_app_pay/api_operations/update'
23
+ require 'cash_app_pay/api_operations/save'
24
+ require 'cash_app_pay/api_operations/retrieve'
25
+ require 'cash_app_pay/api_operations/upsert'
26
+ require 'cash_app_pay/api_operations/delete'
27
+
28
+ require 'cash_app_pay/errors'
29
+ require 'cash_app_pay/endpoint'
30
+ require 'cash_app_pay/connection_manager'
31
+ require 'cash_app_pay/persistent_http_client'
32
+ require 'cash_app_pay/cash_app_pay_client'
33
+ require 'cash_app_pay/cash_app_pay_object'
34
+ require 'cash_app_pay/cash_app_pay_response'
35
+ require 'cash_app_pay/list_object'
36
+ require 'cash_app_pay/api_resource'
37
+ require 'cash_app_pay/cash_app_pay_configuration'
38
+ require 'cash_app_pay/error_object'
39
+
40
+ # Named API resources
41
+ require 'cash_app_pay/resources/customer_request'
42
+ require 'cash_app_pay/resources/payment'
43
+ require 'cash_app_pay/resources/webhook'
44
+ require 'cash_app_pay/resources/webhook_event'
45
+ require 'cash_app_pay/resources/fee_plan'
46
+ require 'cash_app_pay/resources/customer'
47
+ require 'cash_app_pay/resources/grant'
48
+ require 'cash_app_pay/resources/brand'
49
+ require 'cash_app_pay/resources/dispute'
50
+ require 'cash_app_pay/resources/dispute_evidence'
51
+ require 'cash_app_pay/resources/merchant'
52
+ require 'cash_app_pay/resources/refund'
53
+ require 'cash_app_pay/resources/api_key'
54
+
55
+ module CashAppPay
56
+ @config = CashAppPay::CashAppPayConfiguration.setup
57
+
58
+ class << self
59
+ extend Forwardable
60
+
61
+ attr_accessor :config
62
+
63
+ def_delegators :@config, :api_base, :api_base=
64
+ def_delegators :@config, :client_id, :client_id=
65
+ def_delegators :@config, :region, :region=
66
+ def_delegators :@config, :signature, :signature=
67
+ def_delegators :@config, :api_key, :api_key=
68
+ end
69
+ end