gocardless_pro 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +12 -0
  3. data/README.md +71 -28
  4. data/gocardless_pro.gemspec +1 -1
  5. data/lib/gocardless_pro/api_service.rb +4 -2
  6. data/lib/gocardless_pro/client.rb +2 -1
  7. data/lib/gocardless_pro/error.rb +12 -1
  8. data/lib/gocardless_pro/resources/mandate.rb +3 -0
  9. data/lib/gocardless_pro/resources/payout.rb +3 -0
  10. data/lib/gocardless_pro/resources/redirect_flow.rb +15 -14
  11. data/lib/gocardless_pro/services/bank_details_lookups_service.rb +10 -0
  12. data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +5 -2
  13. data/lib/gocardless_pro/services/creditors_service.rb +5 -2
  14. data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +7 -3
  15. data/lib/gocardless_pro/services/customers_service.rb +5 -2
  16. data/lib/gocardless_pro/services/events_service.rb +2 -1
  17. data/lib/gocardless_pro/services/mandate_pdfs_service.rb +2 -1
  18. data/lib/gocardless_pro/services/mandates_service.rb +10 -5
  19. data/lib/gocardless_pro/services/payments_service.rb +11 -6
  20. data/lib/gocardless_pro/services/payouts_service.rb +2 -1
  21. data/lib/gocardless_pro/services/redirect_flows_service.rb +6 -3
  22. data/lib/gocardless_pro/services/refunds_service.rb +5 -2
  23. data/lib/gocardless_pro/services/subscriptions_service.rb +7 -3
  24. data/lib/gocardless_pro/version.rb +1 -1
  25. data/spec/api_response_spec.rb +4 -4
  26. data/spec/api_service_spec.rb +41 -43
  27. data/spec/client_spec.rb +2 -2
  28. data/spec/error_spec.rb +27 -18
  29. data/spec/resources/bank_details_lookup_spec.rb +19 -34
  30. data/spec/resources/creditor_bank_account_spec.rb +54 -99
  31. data/spec/resources/creditor_spec.rb +66 -115
  32. data/spec/resources/customer_bank_account_spec.rb +54 -99
  33. data/spec/resources/customer_spec.rb +71 -138
  34. data/spec/resources/event_spec.rb +74 -107
  35. data/spec/resources/mandate_pdf_spec.rb +15 -26
  36. data/spec/resources/mandate_spec.rb +54 -87
  37. data/spec/resources/payment_spec.rb +70 -119
  38. data/spec/resources/payout_spec.rb +50 -79
  39. data/spec/resources/redirect_flow_spec.rb +58 -95
  40. data/spec/resources/refund_spec.rb +42 -75
  41. data/spec/resources/subscription_spec.rb +82 -155
  42. data/spec/response_spec.rb +45 -46
  43. data/spec/services/bank_details_lookups_service_spec.rb +55 -60
  44. data/spec/services/creditor_bank_accounts_service_spec.rb +303 -347
  45. data/spec/services/creditors_service_spec.rb +290 -333
  46. data/spec/services/customer_bank_accounts_service_spec.rb +332 -380
  47. data/spec/services/customers_service_spec.rb +347 -400
  48. data/spec/services/events_service_spec.rb +154 -184
  49. data/spec/services/mandate_pdfs_service_spec.rb +52 -57
  50. data/spec/services/mandates_service_spec.rb +374 -410
  51. data/spec/services/payments_service_spec.rb +404 -461
  52. data/spec/services/payouts_service_spec.rb +161 -184
  53. data/spec/services/redirect_flows_service_spec.rb +188 -205
  54. data/spec/services/refunds_service_spec.rb +245 -280
  55. data/spec/services/subscriptions_service_spec.rb +423 -485
  56. data/spec/spec_helper.rb +46 -48
  57. metadata +22 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 692eca4366bdf3a3a890788b76f755784d369047
4
- data.tar.gz: 810cdf0fa7569856376b29afbc1df49327ae0842
3
+ metadata.gz: ecf319e84ed4dfe44efbdbccfa3b78fd3a2d21fa
4
+ data.tar.gz: 62778f5f199f97beda830c8135d76c9b3b9db140
5
5
  SHA512:
6
- metadata.gz: b095b6ab731eb0335966c3adfb0707b4e694ea0b2e2383d8bef7656efe68bd5bb03079ccc137d05027108e2079fb21242df45c1956757ac8adb11bb0b96f2904
7
- data.tar.gz: b94783f280f48c02f83041fef6271f710b224a53ae52af84f8e228f594ea71611b010f123adf33cf1ba4a08179ba7b19b1c300f0381faf1db6c66558df53c760
6
+ metadata.gz: c44529e6d3b9d177f5c4cceded3dfb02dae73ee6c7ef5427e28574e6bb5466b804d01d4b519e60c91a948dc9b4409320701746214a4ae3f8d4e88239757a85a6
7
+ data.tar.gz: d0539445ad58e6dbb99e1394466261ed8e8d7b415148bf5f55ff48e0cbbe8f440d68aead63008f30bc7f0ba921b8507e447004711476c614f32eec157db7aebc
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.3.0
5
+ - 2.2
6
+ - 2.1
7
+ - 2.0.0
8
+
9
+ sudo: false
10
+
11
+ script:
12
+ - bundle exec rspec spec
data/README.md CHANGED
@@ -1,7 +1,17 @@
1
- # Ruby Client for GoCardless Pro API
1
+ # Ruby Client for the GoCardless API
2
2
 
3
- - [GoCardless Pro API Docs](https://developer.gocardless.com/pro/)
4
- - [RubyGems](https://rubygems.org/gems/gocardless_pro)
3
+ A Ruby client for the GoCardless API. For full details of the GoCardless API, see the [API docs](https://developer.gocardless.com/pro/).
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/statesman.png)](http://badge.fury.io/rb/gocardless_pro)
6
+ [![Build Status](https://travis-ci.org/gocardless/gocardless-pro-ruby.svg?branch=master)](https://travis-ci.org/gocardless/gocardless-pro-ruby)
7
+
8
+
9
+ ## Usage Examples
10
+
11
+ This README will use `customers` throughout but each of the resources in the
12
+ [API](https://developer.gocardless.com/pro/) is available in this library.
13
+
14
+ ### Installation
5
15
 
6
16
  Add this line to your application's Gemfile:
7
17
 
@@ -15,16 +25,11 @@ And then load it into your application:
15
25
  require 'gocardless_pro'
16
26
  ```
17
27
 
18
- ## Usage Examples
19
-
20
- - In the case of a single response, the client will return you an instance of the resource
21
- - In the case of list responses, the client will return an instance of `ListResponse`.
22
- - You can also call `#all` to get a lazily paginated list of resource that will deal with making extra API requests to paginate through all the data
23
-
24
28
  ### Initialising the client
25
29
 
26
30
  The client is initialised with an Access Token.
27
- You can also pass in `environment` as `:sandbox` to make requests to the sandbox environment rather than production.
31
+ You can also pass in `environment` as `:sandbox` to make requests to the sandbox
32
+ environment rather than production.
28
33
 
29
34
  ```rb
30
35
  @client = GoCardlessPro::Client.new(
@@ -34,41 +39,61 @@ You can also pass in `environment` as `:sandbox` to make requests to the sandbox
34
39
 
35
40
  ### GET requests
36
41
 
37
- You can make a request to get a list of resources using the `list` method:
42
+ You can get details about one or many resources in the API by calling the
43
+ `#get`, `#list` and `#all` methods.
44
+
45
+ #### Getting a single resource
46
+
47
+ To request a single resource, use the `#get` method:
38
48
 
39
49
  ```rb
40
- @client.customers.list
50
+ @client.customers.get(customer_id)
41
51
  ```
42
52
 
43
- This README will use `customers` throughout but each of the resources in the API is available in this library. They are defined in [`gocardless.rb`](https://github.com/gocardless/pro-client-ruby/blob/master/lib/gocardless_pro.rb#L87).
53
+ A call to `get` returns an instance of the resource:
44
54
 
45
- If you need to pass any options, the last (or in the absence of URL params, the only) argument is an options hash. This is used to pass query parameters for `GET` requests:
55
+ ```rb
56
+ p @client.customers.get(customer_id).given_name
57
+ ```
58
+
59
+ #### Getting a list of resources
60
+
61
+ To get a list of resources, use the `#list` method:
46
62
 
47
63
  ```rb
48
- @client.customers.list(params: { limit: 400 })
64
+ @client.customers.list
49
65
  ```
50
66
 
51
67
  A call to `list` returns an instance of `GoCardlessPro::ListResponse`. You can call `records` on this to iterate through results:
52
68
 
53
69
  ```rb
54
- @client.customers.list.records do |customer|
70
+ @client.customers.list.records.each do |customer|
55
71
  p customer.given_name
56
72
  end
57
73
  ```
58
74
 
59
- In the case where a url parameter is needed, the method signature will contain required arguments:
75
+ If you need to pass any options, the last (or in the absence of URL params, the only) argument is an options hash. This is used to pass query parameters for `GET` requests:
60
76
 
61
77
  ```rb
62
- @client.customers.get(customers_id)
78
+ @client.customers.list(params: { limit: 400 })
63
79
  ```
64
80
 
65
- As with list, the last argument can be an options hash, with any URL parameters given under the `params` key:
81
+ #### Getting all resources
82
+
83
+ If you want to get all of the records for a given resource type, you can use the
84
+ `#all` method to get a lazily paginated list. `#all` will deal with making extra
85
+ API requests to paginate through all the data for you:
66
86
 
67
87
  ```rb
68
- @client.customers.get(customers_id, params: { limit: 200 })
88
+ @client.customers.all.each do |customer|
89
+ p customer.given_name
90
+ end
69
91
  ```
70
92
 
71
- Both individual resource and `ListResponse` instances provide an `api_response` method, which lets you access the following properties of the request:
93
+ #### Raw response details
94
+
95
+ In addition to providing details of the requested resource(s), all GET requests
96
+ give you access the following properties of the response:
72
97
 
73
98
  - `status`
74
99
  - `headers`
@@ -88,15 +113,34 @@ For POST and PUT requests you need to pass in the body in under the `params` key
88
113
  )
89
114
  ```
90
115
 
91
- As with GET requests, if any parameters are required they come first:
116
+ If any parameters are required they come first:
92
117
 
93
118
  ```rb
94
119
  @client.customers.update(customer_id, {...})
95
120
  ```
96
121
 
122
+ ### Custom headers
123
+
124
+ Custom headers can be provided for a POST request under the `headers` key.
125
+
126
+ The most common use of a custom header would be to set an [idempotency key](https://developer.gocardless.com/pro/#making-requests-idempotency-keys) when making a request:
127
+
128
+ ```rb
129
+ @client.customers.create(
130
+ params: {
131
+ first_name: "Pete",
132
+ last_name: "Hamilton",
133
+ ...
134
+ },
135
+ headers: {
136
+ "Idempotency-Key": "1f9630a9-0487-418d-bd37-8b77793c9985"
137
+ }
138
+ )
139
+ ```
140
+
97
141
  ### Handling failures
98
142
 
99
- When an API returns an error, the client __will raise__ an error that corresponds to the type of error. All errors subclass `GoCardlessPro::Error`. There are four errors that could be thrown:
143
+ When the API returns an error, the client will raise a corresponding one. There are four classes of error which could be thrown, allof which subclass `GoCardlessPro::Error`:
100
144
 
101
145
  - `GoCardlessPro::GoCardlessError`
102
146
  - `GoCardlessPro::InvalidApiUsageError`
@@ -105,7 +149,7 @@ When an API returns an error, the client __will raise__ an error that correspond
105
149
 
106
150
  These errors are fully documented in the [API documentation](https://developer.gocardless.com/pro/#overview-errors).
107
151
 
108
- The error has the following methods to allow you to access the information from the API response:
152
+ All errors have the following methods to facilitate access to information in the API response:
109
153
 
110
154
  - `#documentation_url`
111
155
  - `#message`
@@ -123,12 +167,11 @@ OAuth simply provides a means by which you obtain an access token - once you hav
123
167
  We recommend using the [oauth2](https://github.com/intridea/oauth2) gem to handle the authorisation process and gain a token. For an example of this in action, see our [open-source OAuth demo app](https://github.com/gocardless/oauth-demo/blob/master/app.rb#L46).
124
168
 
125
169
  ## Supporting Ruby < 2.0.0
126
-
127
170
  The client only supports Ruby >= 2.0.0 out of the box due to our use of
128
171
  Enumerable::Lazy for lazy loading of paginated API resources.
129
172
 
130
- However, support for previous ruby versions can be added using a gem such as
131
- [backports](https://github.com/marcandre/backports).
173
+ If you wish to use this gem with a previous ruby version, you should be able to
174
+ do so with the [backports](https://github.com/marcandre/backports) gem:
132
175
 
133
176
  1. Add backports to your Gemfile
134
177
  ```gem 'backports'```
@@ -137,4 +180,4 @@ However, support for previous ruby versions can be added using a gem such as
137
180
 
138
181
  ## Contributing
139
182
 
140
- This client is auto-generated from Crank, a toolchain that we hope to soon open source. Issues should for now be reported on this repository. __Please do not modify the source code yourself, your changes will be overriden!__
183
+ This client is auto-generated from Crank, a toolchain that we hope to open source soon. For now, issues should be reported on this repository. __Please do not modify the source code yourself, your changes will be overriden!__
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency 'rspec', '~> 3.1'
21
21
  spec.add_development_dependency 'webmock', '~> 1.18'
22
- spec.add_development_dependency 'rubocop', '~> 0.30.0'
22
+ spec.add_development_dependency 'rubocop', '~> 0.35.1'
23
23
  spec.add_development_dependency 'yard', '~> 0.8.7.6'
24
24
 
25
25
  spec.add_dependency 'faraday', ['>= 0.8.9', '< 0.10']
@@ -8,7 +8,7 @@ require 'uri'
8
8
  require 'base64'
9
9
 
10
10
  module GoCardlessPro
11
- # GoCardless Pro API
11
+ # GoCardless API
12
12
  class ApiService
13
13
  # Initialize an APIService
14
14
  #
@@ -20,7 +20,9 @@ module GoCardlessPro
20
20
  @url = url
21
21
  root_url, @path_prefix = unpack_url(url)
22
22
  http_adapter = options[:http_adapter] || [:net_http]
23
- @connection = Faraday.new(url: root_url) do |faraday|
23
+ connection_options = options[:connection_options]
24
+
25
+ @connection = Faraday.new(root_url, connection_options) do |faraday|
24
26
  faraday.adapter(*http_adapter)
25
27
  end
26
28
 
@@ -74,6 +74,7 @@ module GoCardlessPro
74
74
  # @option options [Symbol] :environment the environment to connect to - one of `:live` or `:sandbox`.
75
75
  # @option options [Symbol] :access_token the API token
76
76
  # @option options [Symbol] :url the full URL used to make requests to. If you specify this, it will be used over the `environment` option.
77
+ # @option options [Symbol] :connection_options `Faraday` connection options hash, e.g. `{ request: { timeout: 3 } }`.
77
78
  # @return [Client] A client configured to use the API with HTTP Basic
78
79
  # authentication.
79
80
  #
@@ -125,7 +126,7 @@ module GoCardlessPro
125
126
  begin
126
127
  gem_name = 'gocardless_pro'
127
128
  gem_info = "#{gem_name}"
128
- gem_info += "/v#{ GoCardlessPro::VERSION}" if defined?(GoCardlessPro::VERSION)
129
+ gem_info += "/v#{GoCardlessPro::VERSION}" if defined?(GoCardlessPro::VERSION)
129
130
 
130
131
  ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
131
132
 
@@ -6,6 +6,7 @@ module GoCardlessPro
6
6
  # intialize a new error
7
7
  #  @param error the error from the API
8
8
  def initialize(error)
9
+ fail ArgumentError, 'GoCardless errors expect a hash' unless error.is_a?(Hash)
9
10
  @error = error
10
11
  end
11
12
 
@@ -19,6 +20,16 @@ module GoCardlessPro
19
20
  @error['message']
20
21
  end
21
22
 
23
+ def to_s
24
+ if errors.any?
25
+ errors
26
+ .map { |err| "#{err['field']} #{err['message']}" }
27
+ .join(', ')
28
+ else
29
+ @error['message']
30
+ end
31
+ end
32
+
22
33
  # access the type from the response
23
34
  def type
24
35
  @error['type']
@@ -36,7 +47,7 @@ module GoCardlessPro
36
47
 
37
48
  # access the errors from the response
38
49
  def errors
39
- @error['errors']
50
+ @error.fetch('errors', [])
40
51
  end
41
52
  end
42
53
  end
@@ -26,6 +26,8 @@ module GoCardlessPro
26
26
 
27
27
  attr_reader :next_possible_charge_date
28
28
 
29
+ attr_reader :payments_require_approval
30
+
29
31
  attr_reader :reference
30
32
 
31
33
  attr_reader :scheme
@@ -41,6 +43,7 @@ module GoCardlessPro
41
43
  @links = object['links']
42
44
  @metadata = object['metadata']
43
45
  @next_possible_charge_date = object['next_possible_charge_date']
46
+ @payments_require_approval = object['payments_require_approval']
44
47
  @reference = object['reference']
45
48
  @scheme = object['scheme']
46
49
  @status = object['status']
@@ -20,6 +20,8 @@ module GoCardlessPro
20
20
  class Payout
21
21
  attr_reader :amount
22
22
 
23
+ attr_reader :arrival_date
24
+
23
25
  attr_reader :created_at
24
26
 
25
27
  attr_reader :currency
@@ -35,6 +37,7 @@ module GoCardlessPro
35
37
  @object = object
36
38
 
37
39
  @amount = object['amount']
40
+ @arrival_date = object['arrival_date']
38
41
  @created_at = object['created_at']
39
42
  @currency = object['currency']
40
43
  @id = object['id']
@@ -11,27 +11,28 @@ require 'uri'
11
11
  module GoCardlessPro
12
12
  # A module containing classes for each of the resources in the GC Api
13
13
  module Resources
14
- # Redirect flows enable you to use GoCardless Pro's [hosted payment
14
+ # Redirect flows enable you to use GoCardless' [hosted payment
15
15
  # pages](https://pay-sandbox.gocardless.com/AL000000AKFPFF) to set up mandates
16
16
  # with your customers. These pages are fully compliant and have been
17
- # translated into Dutch, French, German, Italian, Portuguese and Spanish.
18
- #
17
+ # translated into Dutch, French, German, Italian, Portuguese, Spanish and
18
+ # Swedish.
19
19
  #
20
20
  # The overall flow is:
21
21
  #
22
- # 1. You [create](#create-a-redirect-flow)
23
- # a redirect flow for your customer, and redirect them to the returned
24
- # redirect url, e.g. `https://pay.gocardless.com/flow/RE123`.
22
+ # 1. You
23
+ # [create](#create-a-redirect-flow) a redirect flow for your customer, and
24
+ # redirect them to the returned redirect url, e.g.
25
+ # `https://pay.gocardless.com/flow/RE123`.
26
+ #
27
+ # 2. Your customer supplies
28
+ # their name, email, address, and bank account details, and submits the form.
29
+ # This securely stores their details, and redirects them back to your
30
+ # `success_redirect_url` with `redirect_flow_id=RE123` in the querystring.
25
31
  #
26
- # 2. Your
27
- # customer supplies their name, email, address, and bank account details, and
28
- # submits the form. This securely stores their details, and redirects them
29
- # back to your `success_redirect_url` with `redirect_flow_id=RE123` in the
30
- # querystring.
31
32
  #
32
- # 3. You [complete](#complete-a-redirect-flow) the
33
- # redirect flow, which creates a [customer](#core-endpoints-customers),
34
- # [customer bank account](#core-endpoints-customer-bank-accounts), and
33
+ # 3. You [complete](#complete-a-redirect-flow) the redirect flow, which
34
+ # creates a [customer](#core-endpoints-customers), [customer bank
35
+ # account](#core-endpoints-customer-bank-accounts), and
35
36
  # [mandate](#core-endpoints-mandates), and returns the ID of the mandate. You
36
37
  # may wish to create a [subscription](#core-endpoints-subscriptions) or
37
38
  # [payment](#core-endpoints-payments) at this point.
@@ -12,8 +12,17 @@ module GoCardlessPro
12
12
  class BankDetailsLookupsService < BaseService
13
13
  # Performs a bank details lookup.
14
14
  #
15
+ # As part of the lookup a modulus check and
16
+ # reachability check are performed.
17
+ #
15
18
  # Bank account details may be supplied
16
19
  # using [local details](#appendix-local-bank-details) or an IBAN.
20
+ #
21
+ # _Note:_
22
+ # Usage of this endpoint is monitored. If your organisation relies on GoCardless
23
+ # for
24
+ # modulus or reachability checking but not for payment collection, please
25
+ # get in touch.
17
26
  # Example URL: /bank_details_lookups
18
27
  # @param options [Hash] parameters as a hash, under a params key.
19
28
  def create(options = {})
@@ -25,6 +34,7 @@ module GoCardlessPro
25
34
  response = make_request(:post, path, options)
26
35
 
27
36
  return if response.body.nil?
37
+
28
38
  Resources::BankDetailsLookup.new(unenvelope_body(response.body), response)
29
39
  end
30
40
 
@@ -22,6 +22,7 @@ module GoCardlessPro
22
22
  response = make_request(:post, path, options)
23
23
 
24
24
  return if response.body.nil?
25
+
25
26
  Resources::CreditorBankAccount.new(unenvelope_body(response.body), response)
26
27
  end
27
28
 
@@ -59,11 +60,12 @@ module GoCardlessPro
59
60
  # @param identity # Unique identifier, beginning with "BA".
60
61
  # @param options [Hash] parameters as a hash, under a params key.
61
62
  def get(identity, options = {})
62
- path = sub_url('/creditor_bank_accounts/:identity', 'identity' => identity)
63
+ path = sub_url('/creditor_bank_accounts/:identity', 'identity' => identity)
63
64
 
64
65
  response = make_request(:get, path, options)
65
66
 
66
67
  return if response.body.nil?
68
+
67
69
  Resources::CreditorBankAccount.new(unenvelope_body(response.body), response)
68
70
  end
69
71
 
@@ -80,7 +82,7 @@ module GoCardlessPro
80
82
  # @param identity # Unique identifier, beginning with "BA".
81
83
  # @param options [Hash] parameters as a hash, under a params key.
82
84
  def disable(identity, options = {})
83
- path = sub_url('/creditor_bank_accounts/:identity/actions/disable', 'identity' => identity)
85
+ path = sub_url('/creditor_bank_accounts/:identity/actions/disable', 'identity' => identity)
84
86
 
85
87
  params = options.delete(:params) || {}
86
88
  options[:params] = {}
@@ -88,6 +90,7 @@ module GoCardlessPro
88
90
  response = make_request(:post, path, options)
89
91
 
90
92
  return if response.body.nil?
93
+
91
94
  Resources::CreditorBankAccount.new(unenvelope_body(response.body), response)
92
95
  end
93
96
 
@@ -22,6 +22,7 @@ module GoCardlessPro
22
22
  response = make_request(:post, path, options)
23
23
 
24
24
  return if response.body.nil?
25
+
25
26
  Resources::Creditor.new(unenvelope_body(response.body), response)
26
27
  end
27
28
 
@@ -59,11 +60,12 @@ module GoCardlessPro
59
60
  # @param identity # Unique identifier, beginning with "CR".
60
61
  # @param options [Hash] parameters as a hash, under a params key.
61
62
  def get(identity, options = {})
62
- path = sub_url('/creditors/:identity', 'identity' => identity)
63
+ path = sub_url('/creditors/:identity', 'identity' => identity)
63
64
 
64
65
  response = make_request(:get, path, options)
65
66
 
66
67
  return if response.body.nil?
68
+
67
69
  Resources::Creditor.new(unenvelope_body(response.body), response)
68
70
  end
69
71
 
@@ -74,7 +76,7 @@ module GoCardlessPro
74
76
  # @param identity # Unique identifier, beginning with "CR".
75
77
  # @param options [Hash] parameters as a hash, under a params key.
76
78
  def update(identity, options = {})
77
- path = sub_url('/creditors/:identity', 'identity' => identity)
79
+ path = sub_url('/creditors/:identity', 'identity' => identity)
78
80
 
79
81
  params = options.delete(:params) || {}
80
82
  options[:params] = {}
@@ -82,6 +84,7 @@ module GoCardlessPro
82
84
  response = make_request(:put, path, options)
83
85
 
84
86
  return if response.body.nil?
87
+
85
88
  Resources::Creditor.new(unenvelope_body(response.body), response)
86
89
  end
87
90