gocardless-pro 0.1.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.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +132 -0
- data/circle.yml +18 -0
- data/demo.rb +10 -0
- data/gocardless-pro.gemspec +27 -0
- data/lib/gocardless-pro.rb +243 -0
- data/lib/gocardless-pro/api_service.rb +57 -0
- data/lib/gocardless-pro/error.rb +42 -0
- data/lib/gocardless-pro/error/gocardless_error.rb +5 -0
- data/lib/gocardless-pro/error/invalid_api_usage_error.rb +5 -0
- data/lib/gocardless-pro/error/invalid_state_error.rb +5 -0
- data/lib/gocardless-pro/error/validation_error.rb +5 -0
- data/lib/gocardless-pro/list_response.rb +34 -0
- data/lib/gocardless-pro/paginator.rb +37 -0
- data/lib/gocardless-pro/request.rb +69 -0
- data/lib/gocardless-pro/resources/api_key.rb +62 -0
- data/lib/gocardless-pro/resources/creditor.rb +83 -0
- data/lib/gocardless-pro/resources/creditor_bank_account.rb +78 -0
- data/lib/gocardless-pro/resources/customer.rb +72 -0
- data/lib/gocardless-pro/resources/customer_bank_account.rb +80 -0
- data/lib/gocardless-pro/resources/event.rb +75 -0
- data/lib/gocardless-pro/resources/helper.rb +29 -0
- data/lib/gocardless-pro/resources/mandate.rb +70 -0
- data/lib/gocardless-pro/resources/payment.rb +86 -0
- data/lib/gocardless-pro/resources/payout.rb +66 -0
- data/lib/gocardless-pro/resources/publishable_api_key.rb +51 -0
- data/lib/gocardless-pro/resources/redirect_flow.rb +104 -0
- data/lib/gocardless-pro/resources/refund.rb +70 -0
- data/lib/gocardless-pro/resources/role.rb +101 -0
- data/lib/gocardless-pro/resources/subscription.rb +152 -0
- data/lib/gocardless-pro/resources/user.rb +60 -0
- data/lib/gocardless-pro/response.rb +77 -0
- data/lib/gocardless-pro/services/api_key_service.rb +130 -0
- data/lib/gocardless-pro/services/base_service.rb +29 -0
- data/lib/gocardless-pro/services/creditor_bank_account_service.rb +122 -0
- data/lib/gocardless-pro/services/creditor_service.rb +112 -0
- data/lib/gocardless-pro/services/customer_bank_account_service.rb +153 -0
- data/lib/gocardless-pro/services/customer_service.rb +112 -0
- data/lib/gocardless-pro/services/event_service.rb +80 -0
- data/lib/gocardless-pro/services/helper_service.rb +97 -0
- data/lib/gocardless-pro/services/mandate_service.rb +170 -0
- data/lib/gocardless-pro/services/payment_service.rb +164 -0
- data/lib/gocardless-pro/services/payout_service.rb +80 -0
- data/lib/gocardless-pro/services/publishable_api_key_service.rb +130 -0
- data/lib/gocardless-pro/services/redirect_flow_service.rb +96 -0
- data/lib/gocardless-pro/services/refund_service.rb +126 -0
- data/lib/gocardless-pro/services/role_service.rb +127 -0
- data/lib/gocardless-pro/services/subscription_service.rb +133 -0
- data/lib/gocardless-pro/services/user_service.rb +148 -0
- data/lib/gocardless-pro/version.rb +8 -0
- data/spec/api_service_spec.rb +69 -0
- data/spec/client_spec.rb +29 -0
- data/spec/error_spec.rb +44 -0
- data/spec/resources/api_key_spec.rb +85 -0
- data/spec/resources/creditor_bank_account_spec.rb +109 -0
- data/spec/resources/creditor_spec.rb +125 -0
- data/spec/resources/customer_bank_account_spec.rb +109 -0
- data/spec/resources/customer_spec.rb +127 -0
- data/spec/resources/event_spec.rb +113 -0
- data/spec/resources/helper_spec.rb +23 -0
- data/spec/resources/mandate_spec.rb +97 -0
- data/spec/resources/payment_spec.rb +129 -0
- data/spec/resources/payout_spec.rb +89 -0
- data/spec/resources/publishable_api_key_spec.rb +63 -0
- data/spec/resources/redirect_flow_spec.rb +97 -0
- data/spec/resources/refund_spec.rb +77 -0
- data/spec/resources/role_spec.rb +63 -0
- data/spec/resources/subscription_spec.rb +157 -0
- data/spec/resources/user_spec.rb +85 -0
- data/spec/response_spec.rb +79 -0
- data/spec/services/api_key_service_spec.rb +362 -0
- data/spec/services/creditor_bank_account_service_spec.rb +365 -0
- data/spec/services/creditor_service_spec.rb +339 -0
- data/spec/services/customer_bank_account_service_spec.rb +404 -0
- data/spec/services/customer_service_spec.rb +365 -0
- data/spec/services/event_service_spec.rb +172 -0
- data/spec/services/helper_service_spec.rb +123 -0
- data/spec/services/mandate_service_spec.rb +449 -0
- data/spec/services/payment_service_spec.rb +497 -0
- data/spec/services/payout_service_spec.rb +172 -0
- data/spec/services/publishable_api_key_service_spec.rb +336 -0
- data/spec/services/redirect_flow_service_spec.rb +208 -0
- data/spec/services/refund_service_spec.rb +279 -0
- data/spec/services/role_service_spec.rb +336 -0
- data/spec/services/subscription_service_spec.rb +488 -0
- data/spec/services/user_service_spec.rb +433 -0
- data/spec/spec_helper.rb +91 -0
- metadata +255 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# encoding: utf-8
|
|
4
|
+
#
|
|
5
|
+
# WARNING: Do not edit by hand, this file was generated by Crank:
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/gocardless/crank
|
|
8
|
+
#
|
|
9
|
+
require 'uri'
|
|
10
|
+
|
|
11
|
+
module GoCardless
|
|
12
|
+
# A module containing classes for each of the resources in the GC Api
|
|
13
|
+
module Resources
|
|
14
|
+
# Publishable API keys are designed to be used by the [js
|
|
15
|
+
# flow](https://developer.gocardless.com/pro/#api-endpoints-customer-bank-account-tokens).
|
|
16
|
+
# You should generate a key and then use it to make requests to the API. They
|
|
17
|
+
# do not expire, but can be disabled.
|
|
18
|
+
#
|
|
19
|
+
# Publishable API keys only have
|
|
20
|
+
# permissions to create [customer bank account
|
|
21
|
+
# tokens](https://developer.gocardless.com/pro/#api-endpoints-customer-bank-account-tokens).
|
|
22
|
+
# Represents an instance of a publishable_api_key resource returned from the API
|
|
23
|
+
class PublishableApiKey
|
|
24
|
+
attr_reader :created_at
|
|
25
|
+
|
|
26
|
+
attr_reader :enabled
|
|
27
|
+
|
|
28
|
+
attr_reader :id
|
|
29
|
+
|
|
30
|
+
attr_reader :key
|
|
31
|
+
|
|
32
|
+
attr_reader :name
|
|
33
|
+
# initialize a resource instance
|
|
34
|
+
# @param object [Hash] an object returned from the API
|
|
35
|
+
def initialize(object)
|
|
36
|
+
@object = object
|
|
37
|
+
|
|
38
|
+
@created_at = object['created_at']
|
|
39
|
+
@enabled = object['enabled']
|
|
40
|
+
@id = object['id']
|
|
41
|
+
@key = object['key']
|
|
42
|
+
@name = object['name']
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Provides the resource as a hash of all it's readable attributes
|
|
46
|
+
def to_h
|
|
47
|
+
@object
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# encoding: utf-8
|
|
4
|
+
#
|
|
5
|
+
# WARNING: Do not edit by hand, this file was generated by Crank:
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/gocardless/crank
|
|
8
|
+
#
|
|
9
|
+
require 'uri'
|
|
10
|
+
|
|
11
|
+
module GoCardless
|
|
12
|
+
# A module containing classes for each of the resources in the GC Api
|
|
13
|
+
module Resources
|
|
14
|
+
# Redirect flows enable you to use GoCardless Pro's secure payment pages to
|
|
15
|
+
# set up mandates with your customers.
|
|
16
|
+
#
|
|
17
|
+
# The overall flow is:
|
|
18
|
+
#
|
|
19
|
+
#
|
|
20
|
+
# 1. You
|
|
21
|
+
# [create](https://developer.gocardless.com/pro/#create-a-redirect-flow) a
|
|
22
|
+
# redirect flow for your customer, and redirect them to the returned redirect
|
|
23
|
+
# url, e.g. `https://pay.gocardless.com/flow/RE123`.
|
|
24
|
+
#
|
|
25
|
+
# 2. Your customer
|
|
26
|
+
# supplies their name, email, address, and bank account details, and submits
|
|
27
|
+
# the form. This securely stores their details, and redirects them back to
|
|
28
|
+
# your `success_redirect_url` with `redirect_flow_id=RE123` in the
|
|
29
|
+
# querystring.
|
|
30
|
+
#
|
|
31
|
+
# 3. You
|
|
32
|
+
# [complete](https://developer.gocardless.com/pro/#complete-a-redirect-flow)
|
|
33
|
+
# the redirect flow, which creates a
|
|
34
|
+
# [customer](https://developer.gocardless.com/pro/#api-endpoints-customers),
|
|
35
|
+
# [customer bank
|
|
36
|
+
# account](https://developer.gocardless.com/pro/#api-endpoints-customer-bank-accounts),
|
|
37
|
+
# and [mandate](https://developer.gocardless.com/pro/#api-endpoints-mandates),
|
|
38
|
+
# and returns the ID of the mandate. You may wish to create a
|
|
39
|
+
# [subscription](https://developer.gocardless.com/pro/#api-endpoints-subscriptions)
|
|
40
|
+
# or [payment](https://developer.gocardless.com/pro/#api-endpoints-payments)
|
|
41
|
+
# at this point.
|
|
42
|
+
#
|
|
43
|
+
# It is recommended that you link the redirect flow to
|
|
44
|
+
# your user object as soon as it is created, and attach the created resources
|
|
45
|
+
# to that user in the complete step.
|
|
46
|
+
#
|
|
47
|
+
# Redirect flows expire 30 minutes
|
|
48
|
+
# after they are first created. You cannot
|
|
49
|
+
# [complete](https://developer.gocardless.com/pro/#complete-a-redirect-flow)
|
|
50
|
+
# an expired redirect flow.
|
|
51
|
+
#
|
|
52
|
+
# [View an example
|
|
53
|
+
# integration](https://pay-sandbox.gocardless.com/AL000000AKFPFF) that uses
|
|
54
|
+
# redirect flows.
|
|
55
|
+
# Represents an instance of a redirect_flow resource returned from the API
|
|
56
|
+
class RedirectFlow
|
|
57
|
+
attr_reader :created_at
|
|
58
|
+
|
|
59
|
+
attr_reader :description
|
|
60
|
+
|
|
61
|
+
attr_reader :id
|
|
62
|
+
|
|
63
|
+
attr_reader :redirect_url
|
|
64
|
+
|
|
65
|
+
attr_reader :scheme
|
|
66
|
+
|
|
67
|
+
attr_reader :session_token
|
|
68
|
+
|
|
69
|
+
attr_reader :success_redirect_url
|
|
70
|
+
# initialize a resource instance
|
|
71
|
+
# @param object [Hash] an object returned from the API
|
|
72
|
+
def initialize(object)
|
|
73
|
+
@object = object
|
|
74
|
+
|
|
75
|
+
@created_at = object['created_at']
|
|
76
|
+
@description = object['description']
|
|
77
|
+
@id = object['id']
|
|
78
|
+
@links = object['links']
|
|
79
|
+
@redirect_url = object['redirect_url']
|
|
80
|
+
@scheme = object['scheme']
|
|
81
|
+
@session_token = object['session_token']
|
|
82
|
+
@success_redirect_url = object['success_redirect_url']
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# return the links that the resource has
|
|
86
|
+
def links
|
|
87
|
+
Struct.new(
|
|
88
|
+
*{
|
|
89
|
+
|
|
90
|
+
creditor: '',
|
|
91
|
+
|
|
92
|
+
mandate: ''
|
|
93
|
+
|
|
94
|
+
}.keys.sort
|
|
95
|
+
).new(*@links.sort.map(&:last))
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Provides the resource as a hash of all it's readable attributes
|
|
99
|
+
def to_h
|
|
100
|
+
@object
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# encoding: utf-8
|
|
4
|
+
#
|
|
5
|
+
# WARNING: Do not edit by hand, this file was generated by Crank:
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/gocardless/crank
|
|
8
|
+
#
|
|
9
|
+
require 'uri'
|
|
10
|
+
|
|
11
|
+
module GoCardless
|
|
12
|
+
# A module containing classes for each of the resources in the GC Api
|
|
13
|
+
module Resources
|
|
14
|
+
# Refund objects represent (partial) refunds of a
|
|
15
|
+
# [payment](https://developer.gocardless.com/pro/#api-endpoints-payment) back
|
|
16
|
+
# to the
|
|
17
|
+
# [customer](https://developer.gocardless.com/pro/#api-endpoints-customers).
|
|
18
|
+
|
|
19
|
+
# #
|
|
20
|
+
# The API allows you to create, show, list and update your refunds.
|
|
21
|
+
#
|
|
22
|
+
#
|
|
23
|
+
# GoCardless will notify you via a
|
|
24
|
+
# [webhook](https://developer.gocardless.com/pro/#webhooks) whenever a refund
|
|
25
|
+
# is created.
|
|
26
|
+
#
|
|
27
|
+
# _Note:_ A payment that has been (partially) refunded
|
|
28
|
+
# can still receive a late failure or chargeback from the banks.
|
|
29
|
+
# Represents an instance of a refund resource returned from the API
|
|
30
|
+
class Refund
|
|
31
|
+
attr_reader :amount
|
|
32
|
+
|
|
33
|
+
attr_reader :created_at
|
|
34
|
+
|
|
35
|
+
attr_reader :currency
|
|
36
|
+
|
|
37
|
+
attr_reader :id
|
|
38
|
+
|
|
39
|
+
attr_reader :metadata
|
|
40
|
+
# initialize a resource instance
|
|
41
|
+
# @param object [Hash] an object returned from the API
|
|
42
|
+
def initialize(object)
|
|
43
|
+
@object = object
|
|
44
|
+
|
|
45
|
+
@amount = object['amount']
|
|
46
|
+
@created_at = object['created_at']
|
|
47
|
+
@currency = object['currency']
|
|
48
|
+
@id = object['id']
|
|
49
|
+
@links = object['links']
|
|
50
|
+
@metadata = object['metadata']
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# return the links that the resource has
|
|
54
|
+
def links
|
|
55
|
+
Struct.new(
|
|
56
|
+
*{
|
|
57
|
+
|
|
58
|
+
payment: ''
|
|
59
|
+
|
|
60
|
+
}.keys.sort
|
|
61
|
+
).new(*@links.sort.map(&:last))
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Provides the resource as a hash of all it's readable attributes
|
|
65
|
+
def to_h
|
|
66
|
+
@object
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# encoding: utf-8
|
|
4
|
+
#
|
|
5
|
+
# WARNING: Do not edit by hand, this file was generated by Crank:
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/gocardless/crank
|
|
8
|
+
#
|
|
9
|
+
require 'uri'
|
|
10
|
+
|
|
11
|
+
module GoCardless
|
|
12
|
+
# A module containing classes for each of the resources in the GC Api
|
|
13
|
+
module Resources
|
|
14
|
+
# <a name="insufficient_permissions"></a>Roles represent a set of permissions
|
|
15
|
+
# that may be granted to a user. The permissions are specified at the
|
|
16
|
+
# resource-type level, and can be `full_access` or `read_only`. If a
|
|
17
|
+
# resource-type is not included that role's users will have no access to
|
|
18
|
+
# resources of that type, and will receive an `insufficient_permissions` error
|
|
19
|
+
# when trying to use those endpoints.
|
|
20
|
+
#
|
|
21
|
+
# A role's `permissions`
|
|
22
|
+
# attribute is used to set/show the permissions for a role and it's key/value
|
|
23
|
+
# pairs are restricted to the below:
|
|
24
|
+
#
|
|
25
|
+
# <dl>
|
|
26
|
+
#
|
|
27
|
+
# <dt><p><code>resource</code></p></dt>
|
|
28
|
+
# <dd><p>One of:</p>
|
|
29
|
+
# <ul>
|
|
30
|
+
|
|
31
|
+
# # <li><code>customers</code></li>
|
|
32
|
+
#
|
|
33
|
+
# <li><code>customer_bank_accounts</code></li>
|
|
34
|
+
#
|
|
35
|
+
# <li><code>mandates</code></li>
|
|
36
|
+
# <li><code>payments</code></li>
|
|
37
|
+
#
|
|
38
|
+
# <li><code>payouts</code></li>
|
|
39
|
+
#
|
|
40
|
+
# <li><code>creditors</code></li>
|
|
41
|
+
#
|
|
42
|
+
# <li><code>creditor_bank_accounts</code></li>
|
|
43
|
+
#
|
|
44
|
+
# <li><code>roles</code></li>
|
|
45
|
+
# <li><code>users</code></li>
|
|
46
|
+
#
|
|
47
|
+
# <li><code>events</code></li>
|
|
48
|
+
# <li><code>api_keys</code></li>
|
|
49
|
+
#
|
|
50
|
+
# <li><code>subscriptions</code></li>
|
|
51
|
+
#
|
|
52
|
+
# <li><code>redirect_flows</code></li>
|
|
53
|
+
# </ul>
|
|
54
|
+
# </dd>
|
|
55
|
+
# </dl>
|
|
56
|
+
#
|
|
57
|
+
#
|
|
58
|
+
# <dl>
|
|
59
|
+
# <dt><p><code>access</code></p></dt>
|
|
60
|
+
# <dd><p>One
|
|
61
|
+
# of:</p>
|
|
62
|
+
# <ul>
|
|
63
|
+
# <li><code>full_access</code>: read and write
|
|
64
|
+
# all records of this type</li>
|
|
65
|
+
# <li><code>read_only</code>: list and
|
|
66
|
+
# show endpoints available, but not create, update, delete, or actions</li>
|
|
67
|
+
|
|
68
|
+
# # </ul>
|
|
69
|
+
# </dd>
|
|
70
|
+
# </dl>
|
|
71
|
+
#
|
|
72
|
+
# Represents an instance of a role resource returned from the API
|
|
73
|
+
class Role
|
|
74
|
+
attr_reader :created_at
|
|
75
|
+
|
|
76
|
+
attr_reader :enabled
|
|
77
|
+
|
|
78
|
+
attr_reader :id
|
|
79
|
+
|
|
80
|
+
attr_reader :name
|
|
81
|
+
|
|
82
|
+
attr_reader :permissions
|
|
83
|
+
# initialize a resource instance
|
|
84
|
+
# @param object [Hash] an object returned from the API
|
|
85
|
+
def initialize(object)
|
|
86
|
+
@object = object
|
|
87
|
+
|
|
88
|
+
@created_at = object['created_at']
|
|
89
|
+
@enabled = object['enabled']
|
|
90
|
+
@id = object['id']
|
|
91
|
+
@name = object['name']
|
|
92
|
+
@permissions = object['permissions']
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Provides the resource as a hash of all it's readable attributes
|
|
96
|
+
def to_h
|
|
97
|
+
@object
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# encoding: utf-8
|
|
4
|
+
#
|
|
5
|
+
# WARNING: Do not edit by hand, this file was generated by Crank:
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/gocardless/crank
|
|
8
|
+
#
|
|
9
|
+
require 'uri'
|
|
10
|
+
|
|
11
|
+
module GoCardless
|
|
12
|
+
# A module containing classes for each of the resources in the GC Api
|
|
13
|
+
module Resources
|
|
14
|
+
# Subscriptions create
|
|
15
|
+
# [payments](https://developer.gocardless.com/pro/#api-endpoints-payments)
|
|
16
|
+
# according to a schedule.
|
|
17
|
+
#
|
|
18
|
+
# #### Recurrence Rules
|
|
19
|
+
#
|
|
20
|
+
# The
|
|
21
|
+
# following rules apply when specifying recurrence:
|
|
22
|
+
# - The first payment
|
|
23
|
+
# must be charged within 1 year.
|
|
24
|
+
# - When neither `month` nor `day_of_month`
|
|
25
|
+
# are present, the subscription will recur from the `start_at` based on the
|
|
26
|
+
# `interval_unit`.
|
|
27
|
+
# - If `month` or `day_of_month` are present, the
|
|
28
|
+
# recurrence rules will be applied from the `start_at`, and the following
|
|
29
|
+
# validations apply:
|
|
30
|
+
#
|
|
31
|
+
# | interval_unit | month
|
|
32
|
+
# | day_of_month |
|
|
33
|
+
# |
|
|
34
|
+
# :-------------- | :--------------------------------------------- |
|
|
35
|
+
# :-------------------------------------- |
|
|
36
|
+
# | yearly | optional
|
|
37
|
+
# (required if `day_of_month` provided) | optional (required if `month`
|
|
38
|
+
# provided) |
|
|
39
|
+
# | monthly | invalid
|
|
40
|
+
# | required |
|
|
41
|
+
# | weekly |
|
|
42
|
+
# invalid | invalid
|
|
43
|
+
# |
|
|
44
|
+
#
|
|
45
|
+
# Examples:
|
|
46
|
+
#
|
|
47
|
+
# | interval_unit | interval |
|
|
48
|
+
# month | day_of_month | valid?
|
|
49
|
+
# |
|
|
50
|
+
# | :-------------- | :--------- | :------ | :------------- |
|
|
51
|
+
# :------------------------------------------------- |
|
|
52
|
+
# | yearly |
|
|
53
|
+
# 1 | january | -1 | valid
|
|
54
|
+
# |
|
|
55
|
+
# | yearly | 1 | march |
|
|
56
|
+
# | invalid - missing `day_of_month` |
|
|
57
|
+
# | monthly
|
|
58
|
+
# | 6 | | 12 | valid
|
|
59
|
+
# |
|
|
60
|
+
# | monthly | 6 | august | 12
|
|
61
|
+
# | invalid - `month` must be blank |
|
|
62
|
+
# | weekly
|
|
63
|
+
# | 2 | | | valid
|
|
64
|
+
# |
|
|
65
|
+
# | weekly | 2 | october | 10
|
|
66
|
+
# | invalid - `month` and `day_of_month` must be blank |
|
|
67
|
+
#
|
|
68
|
+
# ####
|
|
69
|
+
# Rolling dates
|
|
70
|
+
#
|
|
71
|
+
# When a charge date falls on a non-business day, one
|
|
72
|
+
# of two things will happen:
|
|
73
|
+
#
|
|
74
|
+
# - if the recurrence rule specified `-1`
|
|
75
|
+
# as the `day_of_month`, the charge date will be rolled __backwards__ to the
|
|
76
|
+
# previous business day (i.e., the last working day of the month).
|
|
77
|
+
# -
|
|
78
|
+
# otherwise the charge date will be rolled __forwards__ to the next business
|
|
79
|
+
# day.
|
|
80
|
+
#
|
|
81
|
+
# Represents an instance of a subscription resource returned from the API
|
|
82
|
+
class Subscription
|
|
83
|
+
attr_reader :amount
|
|
84
|
+
|
|
85
|
+
attr_reader :count
|
|
86
|
+
|
|
87
|
+
attr_reader :created_at
|
|
88
|
+
|
|
89
|
+
attr_reader :currency
|
|
90
|
+
|
|
91
|
+
attr_reader :day_of_month
|
|
92
|
+
|
|
93
|
+
attr_reader :end_at
|
|
94
|
+
|
|
95
|
+
attr_reader :id
|
|
96
|
+
|
|
97
|
+
attr_reader :interval
|
|
98
|
+
|
|
99
|
+
attr_reader :interval_unit
|
|
100
|
+
|
|
101
|
+
attr_reader :metadata
|
|
102
|
+
|
|
103
|
+
attr_reader :month
|
|
104
|
+
|
|
105
|
+
attr_reader :name
|
|
106
|
+
|
|
107
|
+
attr_reader :start_at
|
|
108
|
+
|
|
109
|
+
attr_reader :status
|
|
110
|
+
|
|
111
|
+
attr_reader :upcoming_payments
|
|
112
|
+
# initialize a resource instance
|
|
113
|
+
# @param object [Hash] an object returned from the API
|
|
114
|
+
def initialize(object)
|
|
115
|
+
@object = object
|
|
116
|
+
|
|
117
|
+
@amount = object['amount']
|
|
118
|
+
@count = object['count']
|
|
119
|
+
@created_at = object['created_at']
|
|
120
|
+
@currency = object['currency']
|
|
121
|
+
@day_of_month = object['day_of_month']
|
|
122
|
+
@end_at = object['end_at']
|
|
123
|
+
@id = object['id']
|
|
124
|
+
@interval = object['interval']
|
|
125
|
+
@interval_unit = object['interval_unit']
|
|
126
|
+
@links = object['links']
|
|
127
|
+
@metadata = object['metadata']
|
|
128
|
+
@month = object['month']
|
|
129
|
+
@name = object['name']
|
|
130
|
+
@start_at = object['start_at']
|
|
131
|
+
@status = object['status']
|
|
132
|
+
@upcoming_payments = object['upcoming_payments']
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# return the links that the resource has
|
|
136
|
+
def links
|
|
137
|
+
Struct.new(
|
|
138
|
+
*{
|
|
139
|
+
|
|
140
|
+
mandate: ''
|
|
141
|
+
|
|
142
|
+
}.keys.sort
|
|
143
|
+
).new(*@links.sort.map(&:last))
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Provides the resource as a hash of all it's readable attributes
|
|
147
|
+
def to_h
|
|
148
|
+
@object
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|