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,126 @@
|
|
|
1
|
+
require_relative './base_service'
|
|
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
|
+
module GoCardless
|
|
10
|
+
module Services
|
|
11
|
+
# Service for making requests to the Refund endpoints
|
|
12
|
+
class RefundService < BaseService
|
|
13
|
+
# Creates a new refund object.
|
|
14
|
+
#
|
|
15
|
+
# This fails with:<a
|
|
16
|
+
# name="refund_payment_invalid_state"></a><a
|
|
17
|
+
# name="total_amount_confirmation_invalid"></a>
|
|
18
|
+
#
|
|
19
|
+
# -
|
|
20
|
+
# `refund_payment_invalid_state` error if the linked
|
|
21
|
+
# [payment](https://developer.gocardless.com/pro/#api-endpoints-payments) isn't
|
|
22
|
+
# either `confirmed` or `paid_out`.
|
|
23
|
+
#
|
|
24
|
+
# - `total_amount_confirmation_invalid`
|
|
25
|
+
# if the confirmation amount doesn't match the total amount refunded for the
|
|
26
|
+
# payment. This safeguard is there to prevent two processes from creating
|
|
27
|
+
# refunds without awareness of each other.
|
|
28
|
+
#
|
|
29
|
+
# Example URL: /refunds
|
|
30
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
31
|
+
# Else, they will be the body of the request.
|
|
32
|
+
def create(options = {}, custom_headers = {})
|
|
33
|
+
path = '/refunds'
|
|
34
|
+
new_options = {}
|
|
35
|
+
new_options[envelope_key] = options
|
|
36
|
+
options = new_options
|
|
37
|
+
response = make_request(:post, path, options, custom_headers)
|
|
38
|
+
|
|
39
|
+
Resources::Refund.new(unenvelope_body(response.body))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Returns a
|
|
43
|
+
# [cursor-paginated](https://developer.gocardless.com/pro/#overview-cursor-pagination)
|
|
44
|
+
# list of your refunds.
|
|
45
|
+
# Example URL: /refunds
|
|
46
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
47
|
+
# Else, they will be the body of the request.
|
|
48
|
+
def list(options = {}, custom_headers = {})
|
|
49
|
+
path = '/refunds'
|
|
50
|
+
|
|
51
|
+
response = make_request(:get, path, options, custom_headers)
|
|
52
|
+
ListResponse.new(
|
|
53
|
+
raw_response: response,
|
|
54
|
+
unenveloped_body: unenvelope_body(response.body),
|
|
55
|
+
resource_class: Resources::Refund
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Get a lazily enumerated list of all the items returned. This is simmilar to the `list` method but will paginate for you automatically.
|
|
60
|
+
#
|
|
61
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
62
|
+
# Otherwise they will be the body of the request.
|
|
63
|
+
def all(options = {})
|
|
64
|
+
Paginator.new(
|
|
65
|
+
service: self,
|
|
66
|
+
path: '/refunds',
|
|
67
|
+
options: options
|
|
68
|
+
).enumerator
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Retrieves all details for a single refund
|
|
72
|
+
# Example URL: /refunds/:identity
|
|
73
|
+
#
|
|
74
|
+
# @param identity # Unique identifier, beginning with "RF"
|
|
75
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
76
|
+
# Else, they will be the body of the request.
|
|
77
|
+
def get(identity, options = {}, custom_headers = {})
|
|
78
|
+
path = sub_url('/refunds/:identity', 'identity' => identity)
|
|
79
|
+
|
|
80
|
+
response = make_request(:get, path, options, custom_headers)
|
|
81
|
+
|
|
82
|
+
Resources::Refund.new(unenvelope_body(response.body))
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Updates a refund object.
|
|
86
|
+
# Example URL: /refunds/:identity
|
|
87
|
+
#
|
|
88
|
+
# @param identity # Unique identifier, beginning with "RF"
|
|
89
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
90
|
+
# Else, they will be the body of the request.
|
|
91
|
+
def update(identity, options = {}, custom_headers = {})
|
|
92
|
+
path = sub_url('/refunds/:identity', 'identity' => identity)
|
|
93
|
+
|
|
94
|
+
new_options = {}
|
|
95
|
+
new_options[envelope_key] = options
|
|
96
|
+
options = new_options
|
|
97
|
+
response = make_request(:put, path, options, custom_headers)
|
|
98
|
+
|
|
99
|
+
Resources::Refund.new(unenvelope_body(response.body))
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
|
103
|
+
#
|
|
104
|
+
# @param body [Hash]
|
|
105
|
+
def unenvelope_body(body)
|
|
106
|
+
body[envelope_key] || body['data']
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
private
|
|
110
|
+
|
|
111
|
+
# return the key which API responses will envelope data under
|
|
112
|
+
def envelope_key
|
|
113
|
+
'refunds'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# take a URL with placeholder params and substitute them out for the acutal value
|
|
117
|
+
# @param url [String] the URL with placeholders in
|
|
118
|
+
# @param param_map [Hash] a hash of placeholders and their actual values
|
|
119
|
+
def sub_url(url, param_map)
|
|
120
|
+
param_map.reduce(url) do |new_url, (param, value)|
|
|
121
|
+
new_url.gsub(":#{param}", value)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require_relative './base_service'
|
|
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
|
+
module GoCardless
|
|
10
|
+
module Services
|
|
11
|
+
# Service for making requests to the Role endpoints
|
|
12
|
+
class RoleService < BaseService
|
|
13
|
+
# Create a role with set access permissions
|
|
14
|
+
# Example URL: /roles
|
|
15
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
16
|
+
# Else, they will be the body of the request.
|
|
17
|
+
def create(options = {}, custom_headers = {})
|
|
18
|
+
path = '/roles'
|
|
19
|
+
new_options = {}
|
|
20
|
+
new_options[envelope_key] = options
|
|
21
|
+
options = new_options
|
|
22
|
+
response = make_request(:post, path, options, custom_headers)
|
|
23
|
+
|
|
24
|
+
Resources::Role.new(unenvelope_body(response.body))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# List all existing roles
|
|
28
|
+
# Example URL: /roles
|
|
29
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
30
|
+
# Else, they will be the body of the request.
|
|
31
|
+
def list(options = {}, custom_headers = {})
|
|
32
|
+
path = '/roles'
|
|
33
|
+
|
|
34
|
+
response = make_request(:get, path, options, custom_headers)
|
|
35
|
+
ListResponse.new(
|
|
36
|
+
raw_response: response,
|
|
37
|
+
unenveloped_body: unenvelope_body(response.body),
|
|
38
|
+
resource_class: Resources::Role
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Get a lazily enumerated list of all the items returned. This is simmilar to the `list` method but will paginate for you automatically.
|
|
43
|
+
#
|
|
44
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
45
|
+
# Otherwise they will be the body of the request.
|
|
46
|
+
def all(options = {})
|
|
47
|
+
Paginator.new(
|
|
48
|
+
service: self,
|
|
49
|
+
path: '/roles',
|
|
50
|
+
options: options
|
|
51
|
+
).enumerator
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Retrieve all details for a single role
|
|
55
|
+
# Example URL: /roles/:identity
|
|
56
|
+
#
|
|
57
|
+
# @param identity # Unique identifier, beginning with "RO"
|
|
58
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
59
|
+
# Else, they will be the body of the request.
|
|
60
|
+
def get(identity, options = {}, custom_headers = {})
|
|
61
|
+
path = sub_url('/roles/:identity', 'identity' => identity)
|
|
62
|
+
|
|
63
|
+
response = make_request(:get, path, options, custom_headers)
|
|
64
|
+
|
|
65
|
+
Resources::Role.new(unenvelope_body(response.body))
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Updates a role object. Supports all of the fields supported when creating a
|
|
69
|
+
# role.
|
|
70
|
+
# Example URL: /roles/:identity
|
|
71
|
+
#
|
|
72
|
+
# @param identity # Unique identifier, beginning with "RO"
|
|
73
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
74
|
+
# Else, they will be the body of the request.
|
|
75
|
+
def update(identity, options = {}, custom_headers = {})
|
|
76
|
+
path = sub_url('/roles/:identity', 'identity' => identity)
|
|
77
|
+
|
|
78
|
+
new_options = {}
|
|
79
|
+
new_options[envelope_key] = options
|
|
80
|
+
options = new_options
|
|
81
|
+
response = make_request(:put, path, options, custom_headers)
|
|
82
|
+
|
|
83
|
+
Resources::Role.new(unenvelope_body(response.body))
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Disables a role
|
|
87
|
+
# Example URL: /roles/:identity/actions/disable
|
|
88
|
+
#
|
|
89
|
+
# @param identity # Unique identifier, beginning with "RO"
|
|
90
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
91
|
+
# Else, they will be the body of the request.
|
|
92
|
+
def disable(identity, options = {}, custom_headers = {})
|
|
93
|
+
path = sub_url('/roles/:identity/actions/disable', 'identity' => identity)
|
|
94
|
+
|
|
95
|
+
new_options = {}
|
|
96
|
+
new_options['data'] = options
|
|
97
|
+
options = new_options
|
|
98
|
+
response = make_request(:post, path, options, custom_headers)
|
|
99
|
+
|
|
100
|
+
Resources::Role.new(unenvelope_body(response.body))
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
|
104
|
+
#
|
|
105
|
+
# @param body [Hash]
|
|
106
|
+
def unenvelope_body(body)
|
|
107
|
+
body[envelope_key] || body['data']
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
private
|
|
111
|
+
|
|
112
|
+
# return the key which API responses will envelope data under
|
|
113
|
+
def envelope_key
|
|
114
|
+
'roles'
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# take a URL with placeholder params and substitute them out for the acutal value
|
|
118
|
+
# @param url [String] the URL with placeholders in
|
|
119
|
+
# @param param_map [Hash] a hash of placeholders and their actual values
|
|
120
|
+
def sub_url(url, param_map)
|
|
121
|
+
param_map.reduce(url) do |new_url, (param, value)|
|
|
122
|
+
new_url.gsub(":#{param}", value)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require_relative './base_service'
|
|
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
|
+
module GoCardless
|
|
10
|
+
module Services
|
|
11
|
+
# Service for making requests to the Subscription endpoints
|
|
12
|
+
class SubscriptionService < BaseService
|
|
13
|
+
# Creates a new subscription object
|
|
14
|
+
# Example URL: /subscriptions
|
|
15
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
16
|
+
# Else, they will be the body of the request.
|
|
17
|
+
def create(options = {}, custom_headers = {})
|
|
18
|
+
path = '/subscriptions'
|
|
19
|
+
new_options = {}
|
|
20
|
+
new_options[envelope_key] = options
|
|
21
|
+
options = new_options
|
|
22
|
+
response = make_request(:post, path, options, custom_headers)
|
|
23
|
+
|
|
24
|
+
Resources::Subscription.new(unenvelope_body(response.body))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Returns a
|
|
28
|
+
# [cursor-paginated](https://developer.gocardless.com/pro/#overview-cursor-pagination)
|
|
29
|
+
# list of your subscriptions.
|
|
30
|
+
# Example URL: /subscriptions
|
|
31
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
32
|
+
# Else, they will be the body of the request.
|
|
33
|
+
def list(options = {}, custom_headers = {})
|
|
34
|
+
path = '/subscriptions'
|
|
35
|
+
|
|
36
|
+
response = make_request(:get, path, options, custom_headers)
|
|
37
|
+
ListResponse.new(
|
|
38
|
+
raw_response: response,
|
|
39
|
+
unenveloped_body: unenvelope_body(response.body),
|
|
40
|
+
resource_class: Resources::Subscription
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Get a lazily enumerated list of all the items returned. This is simmilar to the `list` method but will paginate for you automatically.
|
|
45
|
+
#
|
|
46
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
47
|
+
# Otherwise they will be the body of the request.
|
|
48
|
+
def all(options = {})
|
|
49
|
+
Paginator.new(
|
|
50
|
+
service: self,
|
|
51
|
+
path: '/subscriptions',
|
|
52
|
+
options: options
|
|
53
|
+
).enumerator
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Retrieves the details of a single subscription.
|
|
57
|
+
# Example URL: /subscriptions/:identity
|
|
58
|
+
#
|
|
59
|
+
# @param identity # Unique identifier, beginning with "SB"
|
|
60
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
61
|
+
# Else, they will be the body of the request.
|
|
62
|
+
def get(identity, options = {}, custom_headers = {})
|
|
63
|
+
path = sub_url('/subscriptions/:identity', 'identity' => identity)
|
|
64
|
+
|
|
65
|
+
response = make_request(:get, path, options, custom_headers)
|
|
66
|
+
|
|
67
|
+
Resources::Subscription.new(unenvelope_body(response.body))
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Updates a subscription object.
|
|
71
|
+
# Example URL: /subscriptions/:identity
|
|
72
|
+
#
|
|
73
|
+
# @param identity # Unique identifier, beginning with "SB"
|
|
74
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
75
|
+
# Else, they will be the body of the request.
|
|
76
|
+
def update(identity, options = {}, custom_headers = {})
|
|
77
|
+
path = sub_url('/subscriptions/:identity', 'identity' => identity)
|
|
78
|
+
|
|
79
|
+
new_options = {}
|
|
80
|
+
new_options[envelope_key] = options
|
|
81
|
+
options = new_options
|
|
82
|
+
response = make_request(:put, path, options, custom_headers)
|
|
83
|
+
|
|
84
|
+
Resources::Subscription.new(unenvelope_body(response.body))
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Immediately cancels a subscription; no more payments will be created under it.
|
|
88
|
+
# Any metadata supplied to this endpoint will be stored on the payment
|
|
89
|
+
# cancellation event it causes.
|
|
90
|
+
#
|
|
91
|
+
# This will fail with a cancellation_failed
|
|
92
|
+
# error if the subscription is already cancelled or finished.
|
|
93
|
+
# Example URL: /subscriptions/:identity/actions/cancel
|
|
94
|
+
#
|
|
95
|
+
# @param identity # Unique identifier, beginning with "SB"
|
|
96
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
97
|
+
# Else, they will be the body of the request.
|
|
98
|
+
def cancel(identity, options = {}, custom_headers = {})
|
|
99
|
+
path = sub_url('/subscriptions/:identity/actions/cancel', 'identity' => identity)
|
|
100
|
+
|
|
101
|
+
new_options = {}
|
|
102
|
+
new_options['data'] = options
|
|
103
|
+
options = new_options
|
|
104
|
+
response = make_request(:post, path, options, custom_headers)
|
|
105
|
+
|
|
106
|
+
Resources::Subscription.new(unenvelope_body(response.body))
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
|
110
|
+
#
|
|
111
|
+
# @param body [Hash]
|
|
112
|
+
def unenvelope_body(body)
|
|
113
|
+
body[envelope_key] || body['data']
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
private
|
|
117
|
+
|
|
118
|
+
# return the key which API responses will envelope data under
|
|
119
|
+
def envelope_key
|
|
120
|
+
'subscriptions'
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# take a URL with placeholder params and substitute them out for the acutal value
|
|
124
|
+
# @param url [String] the URL with placeholders in
|
|
125
|
+
# @param param_map [Hash] a hash of placeholders and their actual values
|
|
126
|
+
def sub_url(url, param_map)
|
|
127
|
+
param_map.reduce(url) do |new_url, (param, value)|
|
|
128
|
+
new_url.gsub(":#{param}", value)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require_relative './base_service'
|
|
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
|
+
module GoCardless
|
|
10
|
+
module Services
|
|
11
|
+
# Service for making requests to the User endpoints
|
|
12
|
+
class UserService < BaseService
|
|
13
|
+
# <a name="user_exists"></a>Creates a new user object. Email addresses must be
|
|
14
|
+
# unique.
|
|
15
|
+
# Example URL: /users
|
|
16
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
17
|
+
# Else, they will be the body of the request.
|
|
18
|
+
def create(options = {}, custom_headers = {})
|
|
19
|
+
path = '/users'
|
|
20
|
+
new_options = {}
|
|
21
|
+
new_options[envelope_key] = options
|
|
22
|
+
options = new_options
|
|
23
|
+
response = make_request(:post, path, options, custom_headers)
|
|
24
|
+
|
|
25
|
+
Resources::User.new(unenvelope_body(response.body))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Returns a
|
|
29
|
+
# [cursor-paginated](https://developer.gocardless.com/pro/#overview-cursor-pagination)
|
|
30
|
+
# list of your users.
|
|
31
|
+
# Example URL: /users
|
|
32
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
33
|
+
# Else, they will be the body of the request.
|
|
34
|
+
def list(options = {}, custom_headers = {})
|
|
35
|
+
path = '/users'
|
|
36
|
+
|
|
37
|
+
response = make_request(:get, path, options, custom_headers)
|
|
38
|
+
ListResponse.new(
|
|
39
|
+
raw_response: response,
|
|
40
|
+
unenveloped_body: unenvelope_body(response.body),
|
|
41
|
+
resource_class: Resources::User
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Get a lazily enumerated list of all the items returned. This is simmilar to the `list` method but will paginate for you automatically.
|
|
46
|
+
#
|
|
47
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
48
|
+
# Otherwise they will be the body of the request.
|
|
49
|
+
def all(options = {})
|
|
50
|
+
Paginator.new(
|
|
51
|
+
service: self,
|
|
52
|
+
path: '/users',
|
|
53
|
+
options: options
|
|
54
|
+
).enumerator
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Retrieves the details of an existing user. In addition to the usual
|
|
58
|
+
# permissions based access rules, any user can access their own record.
|
|
59
|
+
# Example URL: /users/:identity
|
|
60
|
+
#
|
|
61
|
+
# @param identity # Unique identifier, beginning with "US"
|
|
62
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
63
|
+
# Else, they will be the body of the request.
|
|
64
|
+
def get(identity, options = {}, custom_headers = {})
|
|
65
|
+
path = sub_url('/users/:identity', 'identity' => identity)
|
|
66
|
+
|
|
67
|
+
response = make_request(:get, path, options, custom_headers)
|
|
68
|
+
|
|
69
|
+
Resources::User.new(unenvelope_body(response.body))
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Updates a user object. Supports all of the fields supported when creating a
|
|
73
|
+
# user.
|
|
74
|
+
# Example URL: /users/:identity
|
|
75
|
+
#
|
|
76
|
+
# @param identity # Unique identifier, beginning with "US"
|
|
77
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
78
|
+
# Else, they will be the body of the request.
|
|
79
|
+
def update(identity, options = {}, custom_headers = {})
|
|
80
|
+
path = sub_url('/users/:identity', 'identity' => identity)
|
|
81
|
+
|
|
82
|
+
new_options = {}
|
|
83
|
+
new_options[envelope_key] = options
|
|
84
|
+
options = new_options
|
|
85
|
+
response = make_request(:put, path, options, custom_headers)
|
|
86
|
+
|
|
87
|
+
Resources::User.new(unenvelope_body(response.body))
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Enables a user
|
|
91
|
+
# Example URL: /users/:identity/actions/enable
|
|
92
|
+
#
|
|
93
|
+
# @param identity # Unique identifier, beginning with "US"
|
|
94
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
95
|
+
# Else, they will be the body of the request.
|
|
96
|
+
def enable(identity, options = {}, custom_headers = {})
|
|
97
|
+
path = sub_url('/users/:identity/actions/enable', 'identity' => identity)
|
|
98
|
+
|
|
99
|
+
new_options = {}
|
|
100
|
+
new_options['data'] = options
|
|
101
|
+
options = new_options
|
|
102
|
+
response = make_request(:post, path, options, custom_headers)
|
|
103
|
+
|
|
104
|
+
Resources::User.new(unenvelope_body(response.body))
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Disables a user
|
|
108
|
+
# Example URL: /users/:identity/actions/disable
|
|
109
|
+
#
|
|
110
|
+
# @param identity # Unique identifier, beginning with "US"
|
|
111
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
|
112
|
+
# Else, they will be the body of the request.
|
|
113
|
+
def disable(identity, options = {}, custom_headers = {})
|
|
114
|
+
path = sub_url('/users/:identity/actions/disable', 'identity' => identity)
|
|
115
|
+
|
|
116
|
+
new_options = {}
|
|
117
|
+
new_options['data'] = options
|
|
118
|
+
options = new_options
|
|
119
|
+
response = make_request(:post, path, options, custom_headers)
|
|
120
|
+
|
|
121
|
+
Resources::User.new(unenvelope_body(response.body))
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
|
125
|
+
#
|
|
126
|
+
# @param body [Hash]
|
|
127
|
+
def unenvelope_body(body)
|
|
128
|
+
body[envelope_key] || body['data']
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
private
|
|
132
|
+
|
|
133
|
+
# return the key which API responses will envelope data under
|
|
134
|
+
def envelope_key
|
|
135
|
+
'users'
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# take a URL with placeholder params and substitute them out for the acutal value
|
|
139
|
+
# @param url [String] the URL with placeholders in
|
|
140
|
+
# @param param_map [Hash] a hash of placeholders and their actual values
|
|
141
|
+
def sub_url(url, param_map)
|
|
142
|
+
param_map.reduce(url) do |new_url, (param, value)|
|
|
143
|
+
new_url.gsub(":#{param}", value)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|