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.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +132 -0
  6. data/circle.yml +18 -0
  7. data/demo.rb +10 -0
  8. data/gocardless-pro.gemspec +27 -0
  9. data/lib/gocardless-pro.rb +243 -0
  10. data/lib/gocardless-pro/api_service.rb +57 -0
  11. data/lib/gocardless-pro/error.rb +42 -0
  12. data/lib/gocardless-pro/error/gocardless_error.rb +5 -0
  13. data/lib/gocardless-pro/error/invalid_api_usage_error.rb +5 -0
  14. data/lib/gocardless-pro/error/invalid_state_error.rb +5 -0
  15. data/lib/gocardless-pro/error/validation_error.rb +5 -0
  16. data/lib/gocardless-pro/list_response.rb +34 -0
  17. data/lib/gocardless-pro/paginator.rb +37 -0
  18. data/lib/gocardless-pro/request.rb +69 -0
  19. data/lib/gocardless-pro/resources/api_key.rb +62 -0
  20. data/lib/gocardless-pro/resources/creditor.rb +83 -0
  21. data/lib/gocardless-pro/resources/creditor_bank_account.rb +78 -0
  22. data/lib/gocardless-pro/resources/customer.rb +72 -0
  23. data/lib/gocardless-pro/resources/customer_bank_account.rb +80 -0
  24. data/lib/gocardless-pro/resources/event.rb +75 -0
  25. data/lib/gocardless-pro/resources/helper.rb +29 -0
  26. data/lib/gocardless-pro/resources/mandate.rb +70 -0
  27. data/lib/gocardless-pro/resources/payment.rb +86 -0
  28. data/lib/gocardless-pro/resources/payout.rb +66 -0
  29. data/lib/gocardless-pro/resources/publishable_api_key.rb +51 -0
  30. data/lib/gocardless-pro/resources/redirect_flow.rb +104 -0
  31. data/lib/gocardless-pro/resources/refund.rb +70 -0
  32. data/lib/gocardless-pro/resources/role.rb +101 -0
  33. data/lib/gocardless-pro/resources/subscription.rb +152 -0
  34. data/lib/gocardless-pro/resources/user.rb +60 -0
  35. data/lib/gocardless-pro/response.rb +77 -0
  36. data/lib/gocardless-pro/services/api_key_service.rb +130 -0
  37. data/lib/gocardless-pro/services/base_service.rb +29 -0
  38. data/lib/gocardless-pro/services/creditor_bank_account_service.rb +122 -0
  39. data/lib/gocardless-pro/services/creditor_service.rb +112 -0
  40. data/lib/gocardless-pro/services/customer_bank_account_service.rb +153 -0
  41. data/lib/gocardless-pro/services/customer_service.rb +112 -0
  42. data/lib/gocardless-pro/services/event_service.rb +80 -0
  43. data/lib/gocardless-pro/services/helper_service.rb +97 -0
  44. data/lib/gocardless-pro/services/mandate_service.rb +170 -0
  45. data/lib/gocardless-pro/services/payment_service.rb +164 -0
  46. data/lib/gocardless-pro/services/payout_service.rb +80 -0
  47. data/lib/gocardless-pro/services/publishable_api_key_service.rb +130 -0
  48. data/lib/gocardless-pro/services/redirect_flow_service.rb +96 -0
  49. data/lib/gocardless-pro/services/refund_service.rb +126 -0
  50. data/lib/gocardless-pro/services/role_service.rb +127 -0
  51. data/lib/gocardless-pro/services/subscription_service.rb +133 -0
  52. data/lib/gocardless-pro/services/user_service.rb +148 -0
  53. data/lib/gocardless-pro/version.rb +8 -0
  54. data/spec/api_service_spec.rb +69 -0
  55. data/spec/client_spec.rb +29 -0
  56. data/spec/error_spec.rb +44 -0
  57. data/spec/resources/api_key_spec.rb +85 -0
  58. data/spec/resources/creditor_bank_account_spec.rb +109 -0
  59. data/spec/resources/creditor_spec.rb +125 -0
  60. data/spec/resources/customer_bank_account_spec.rb +109 -0
  61. data/spec/resources/customer_spec.rb +127 -0
  62. data/spec/resources/event_spec.rb +113 -0
  63. data/spec/resources/helper_spec.rb +23 -0
  64. data/spec/resources/mandate_spec.rb +97 -0
  65. data/spec/resources/payment_spec.rb +129 -0
  66. data/spec/resources/payout_spec.rb +89 -0
  67. data/spec/resources/publishable_api_key_spec.rb +63 -0
  68. data/spec/resources/redirect_flow_spec.rb +97 -0
  69. data/spec/resources/refund_spec.rb +77 -0
  70. data/spec/resources/role_spec.rb +63 -0
  71. data/spec/resources/subscription_spec.rb +157 -0
  72. data/spec/resources/user_spec.rb +85 -0
  73. data/spec/response_spec.rb +79 -0
  74. data/spec/services/api_key_service_spec.rb +362 -0
  75. data/spec/services/creditor_bank_account_service_spec.rb +365 -0
  76. data/spec/services/creditor_service_spec.rb +339 -0
  77. data/spec/services/customer_bank_account_service_spec.rb +404 -0
  78. data/spec/services/customer_service_spec.rb +365 -0
  79. data/spec/services/event_service_spec.rb +172 -0
  80. data/spec/services/helper_service_spec.rb +123 -0
  81. data/spec/services/mandate_service_spec.rb +449 -0
  82. data/spec/services/payment_service_spec.rb +497 -0
  83. data/spec/services/payout_service_spec.rb +172 -0
  84. data/spec/services/publishable_api_key_service_spec.rb +336 -0
  85. data/spec/services/redirect_flow_service_spec.rb +208 -0
  86. data/spec/services/refund_service_spec.rb +279 -0
  87. data/spec/services/role_service_spec.rb +336 -0
  88. data/spec/services/subscription_service_spec.rb +488 -0
  89. data/spec/services/user_service_spec.rb +433 -0
  90. data/spec/spec_helper.rb +91 -0
  91. metadata +255 -0
@@ -0,0 +1,72 @@
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
+ # Customer objects hold the contact details for a customer. A customer can
15
+ # have several [customer bank
16
+ # accounts](https://developer.gocardless.com/pro/#api-endpoints-customer-bank-accounts),
17
+ # which in turn can have several Direct Debit
18
+ # [mandates](https://developer.gocardless.com/pro/#api-endpoints-mandates).
19
+ # Represents an instance of a customer resource returned from the API
20
+ class Customer
21
+ attr_reader :address_line1
22
+
23
+ attr_reader :address_line2
24
+
25
+ attr_reader :address_line3
26
+
27
+ attr_reader :city
28
+
29
+ attr_reader :country_code
30
+
31
+ attr_reader :created_at
32
+
33
+ attr_reader :email
34
+
35
+ attr_reader :family_name
36
+
37
+ attr_reader :given_name
38
+
39
+ attr_reader :id
40
+
41
+ attr_reader :metadata
42
+
43
+ attr_reader :postal_code
44
+
45
+ attr_reader :region
46
+ # initialize a resource instance
47
+ # @param object [Hash] an object returned from the API
48
+ def initialize(object)
49
+ @object = object
50
+
51
+ @address_line1 = object['address_line1']
52
+ @address_line2 = object['address_line2']
53
+ @address_line3 = object['address_line3']
54
+ @city = object['city']
55
+ @country_code = object['country_code']
56
+ @created_at = object['created_at']
57
+ @email = object['email']
58
+ @family_name = object['family_name']
59
+ @given_name = object['given_name']
60
+ @id = object['id']
61
+ @metadata = object['metadata']
62
+ @postal_code = object['postal_code']
63
+ @region = object['region']
64
+ end
65
+
66
+ # Provides the resource as a hash of all it's readable attributes
67
+ def to_h
68
+ @object
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,80 @@
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
+ # Customer Bank Accounts hold the bank details of a
15
+ # [customer](https://developer.gocardless.com/pro/#api-endpoints-customers).
16
+ # They always belong to a
17
+ # [customer](https://developer.gocardless.com/pro/#api-endpoints-customers),
18
+ # and may be linked to several Direct Debit
19
+ # [mandates](https://developer.gocardless.com/pro/#api-endpoints-mandates).
20
+
21
+ # #
22
+ # Note that customer bank accounts must be unique, and so you will
23
+ # encounter a `bank_account_exists` error if you try to create a duplicate
24
+ # bank account. You may wish to handle this by updating the existing record
25
+ # instead, the ID of which will be provided as links[customer_bank_account] in
26
+ # the error response.
27
+ # Represents an instance of a customer_bank_account resource returned from the API
28
+ class CustomerBankAccount
29
+ attr_reader :account_holder_name
30
+
31
+ attr_reader :account_number_ending
32
+
33
+ attr_reader :bank_name
34
+
35
+ attr_reader :country_code
36
+
37
+ attr_reader :created_at
38
+
39
+ attr_reader :currency
40
+
41
+ attr_reader :enabled
42
+
43
+ attr_reader :id
44
+
45
+ attr_reader :metadata
46
+ # initialize a resource instance
47
+ # @param object [Hash] an object returned from the API
48
+ def initialize(object)
49
+ @object = object
50
+
51
+ @account_holder_name = object['account_holder_name']
52
+ @account_number_ending = object['account_number_ending']
53
+ @bank_name = object['bank_name']
54
+ @country_code = object['country_code']
55
+ @created_at = object['created_at']
56
+ @currency = object['currency']
57
+ @enabled = object['enabled']
58
+ @id = object['id']
59
+ @links = object['links']
60
+ @metadata = object['metadata']
61
+ end
62
+
63
+ # return the links that the resource has
64
+ def links
65
+ Struct.new(
66
+ *{
67
+
68
+ customer: ''
69
+
70
+ }.keys.sort
71
+ ).new(*@links.sort.map(&:last))
72
+ end
73
+
74
+ # Provides the resource as a hash of all it's readable attributes
75
+ def to_h
76
+ @object
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,75 @@
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
+ # Events are stored for all webhooks. An event refers to a resource which has
15
+ # been updated, for example a payment which has been collected, or a mandate
16
+ # which has been transferred.
17
+ # Represents an instance of a event resource returned from the API
18
+ class Event
19
+ attr_reader :action
20
+
21
+ attr_reader :created_at
22
+
23
+ attr_reader :details
24
+
25
+ attr_reader :id
26
+
27
+ attr_reader :metadata
28
+
29
+ attr_reader :resource_type
30
+ # initialize a resource instance
31
+ # @param object [Hash] an object returned from the API
32
+ def initialize(object)
33
+ @object = object
34
+
35
+ @action = object['action']
36
+ @created_at = object['created_at']
37
+ @details = object['details']
38
+ @id = object['id']
39
+ @links = object['links']
40
+ @metadata = object['metadata']
41
+ @resource_type = object['resource_type']
42
+ end
43
+
44
+ # return the links that the resource has
45
+ def links
46
+ Struct.new(
47
+ *{
48
+
49
+ mandate: '',
50
+
51
+ new_customer_bank_account: '',
52
+
53
+ parent_event: '',
54
+
55
+ payment: '',
56
+
57
+ payout: '',
58
+
59
+ previous_customer_bank_account: '',
60
+
61
+ refund: '',
62
+
63
+ subscription: ''
64
+
65
+ }.keys.sort
66
+ ).new(*@links.sort.map(&:last))
67
+ end
68
+
69
+ # Provides the resource as a hash of all it's readable attributes
70
+ def to_h
71
+ @object
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,29 @@
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
+ #
15
+ # Represents an instance of a helper resource returned from the API
16
+ class Helper
17
+ # initialize a resource instance
18
+ # @param object [Hash] an object returned from the API
19
+ def initialize(object)
20
+ @object = object
21
+ end
22
+
23
+ # Provides the resource as a hash of all it's readable attributes
24
+ def to_h
25
+ @object
26
+ end
27
+ end
28
+ end
29
+ 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
+ # Mandates represent the Direct Debit mandate with a
15
+ # [customer](https://developer.gocardless.com/pro/#api-endpoints-customers).
16
+
17
+ # #
18
+ # GoCardless will notify you via a
19
+ # [webhook](https://developer.gocardless.com/pro/#webhooks) whenever the
20
+ # status of a mandate changes.
21
+ # Represents an instance of a mandate resource returned from the API
22
+ class Mandate
23
+ attr_reader :created_at
24
+
25
+ attr_reader :id
26
+
27
+ attr_reader :metadata
28
+
29
+ attr_reader :next_possible_charge_date
30
+
31
+ attr_reader :reference
32
+
33
+ attr_reader :scheme
34
+
35
+ attr_reader :status
36
+ # initialize a resource instance
37
+ # @param object [Hash] an object returned from the API
38
+ def initialize(object)
39
+ @object = object
40
+
41
+ @created_at = object['created_at']
42
+ @id = object['id']
43
+ @links = object['links']
44
+ @metadata = object['metadata']
45
+ @next_possible_charge_date = object['next_possible_charge_date']
46
+ @reference = object['reference']
47
+ @scheme = object['scheme']
48
+ @status = object['status']
49
+ end
50
+
51
+ # return the links that the resource has
52
+ def links
53
+ Struct.new(
54
+ *{
55
+
56
+ creditor: '',
57
+
58
+ customer_bank_account: ''
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,86 @@
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
+ # Payment objects represent payments from a
15
+ # [customer](https://developer.gocardless.com/pro/#api-endpoints-customers) to
16
+ # a [creditor](https://developer.gocardless.com/pro/#api-endpoints-creditors),
17
+ # taken against a Direct Debit
18
+ # [mandate](https://developer.gocardless.com/pro/#api-endpoints-mandates).
19
+ #
20
+ #
21
+ # GoCardless will notify you via a
22
+ # [webhook](https://developer.gocardless.com/pro/#webhooks) whenever the state
23
+ # of a payment changes.
24
+ # Represents an instance of a payment resource returned from the API
25
+ class Payment
26
+ attr_reader :amount
27
+
28
+ attr_reader :amount_refunded
29
+
30
+ attr_reader :charge_date
31
+
32
+ attr_reader :created_at
33
+
34
+ attr_reader :currency
35
+
36
+ attr_reader :description
37
+
38
+ attr_reader :id
39
+
40
+ attr_reader :metadata
41
+
42
+ attr_reader :reference
43
+
44
+ attr_reader :status
45
+ # initialize a resource instance
46
+ # @param object [Hash] an object returned from the API
47
+ def initialize(object)
48
+ @object = object
49
+
50
+ @amount = object['amount']
51
+ @amount_refunded = object['amount_refunded']
52
+ @charge_date = object['charge_date']
53
+ @created_at = object['created_at']
54
+ @currency = object['currency']
55
+ @description = object['description']
56
+ @id = object['id']
57
+ @links = object['links']
58
+ @metadata = object['metadata']
59
+ @reference = object['reference']
60
+ @status = object['status']
61
+ end
62
+
63
+ # return the links that the resource has
64
+ def links
65
+ Struct.new(
66
+ *{
67
+
68
+ creditor: '',
69
+
70
+ mandate: '',
71
+
72
+ payout: '',
73
+
74
+ subscription: ''
75
+
76
+ }.keys.sort
77
+ ).new(*@links.sort.map(&:last))
78
+ end
79
+
80
+ # Provides the resource as a hash of all it's readable attributes
81
+ def to_h
82
+ @object
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,66 @@
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
+ # Payouts represent transfers from GoCardless to a
15
+ # [creditor](https://developer.gocardless.com/pro/#api-endpoints-creditors).
16
+ # Each payout contains the funds collected from one or many
17
+ # [payments](https://developer.gocardless.com/pro/#api-endpoints-payments).
18
+ # Payouts are created automatically after a payment has been successfully
19
+ # collected.
20
+ # Represents an instance of a payout resource returned from the API
21
+ class Payout
22
+ attr_reader :amount
23
+
24
+ attr_reader :created_at
25
+
26
+ attr_reader :currency
27
+
28
+ attr_reader :id
29
+
30
+ attr_reader :reference
31
+
32
+ attr_reader :status
33
+ # initialize a resource instance
34
+ # @param object [Hash] an object returned from the API
35
+ def initialize(object)
36
+ @object = object
37
+
38
+ @amount = object['amount']
39
+ @created_at = object['created_at']
40
+ @currency = object['currency']
41
+ @id = object['id']
42
+ @links = object['links']
43
+ @reference = object['reference']
44
+ @status = object['status']
45
+ end
46
+
47
+ # return the links that the resource has
48
+ def links
49
+ Struct.new(
50
+ *{
51
+
52
+ creditor: '',
53
+
54
+ creditor_bank_account: ''
55
+
56
+ }.keys.sort
57
+ ).new(*@links.sort.map(&:last))
58
+ end
59
+
60
+ # Provides the resource as a hash of all it's readable attributes
61
+ def to_h
62
+ @object
63
+ end
64
+ end
65
+ end
66
+ end