mangopay-v4 4.0.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 (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. metadata +349 -0
@@ -0,0 +1,187 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/filter_request'
3
+
4
+ module MangoApi
5
+
6
+ # Provides API method delegates concerning the +Dispute+ entity
7
+ module Disputes
8
+ class << self
9
+ include UriProvider
10
+
11
+ # Updates the dispute entity identifiable by the provided
12
+ # dispute object's ID.
13
+ #
14
+ # +Dispute+ optional properties:
15
+ # * tag
16
+ #
17
+ # @param +dispute+ [Dispute] dispute object with corresponding ID
18
+ # and updated data
19
+ # @return [Dispute] the updated Dispute entity object
20
+ def update(dispute)
21
+ uri = provide_uri(:update_dispute, dispute.id)
22
+ response = HttpClient.put(uri, dispute)
23
+ parse response
24
+ end
25
+
26
+ # Closes a dispute, an optional action which effectively
27
+ # confirms that the dispute will not be contested.
28
+ #
29
+ # @param +id+ [String] ID of the dispute to close
30
+ # @return [Dispute] the closed Dispute entity object
31
+ def close(id)
32
+ uri = provide_uri(:close_dispute, id)
33
+ response = HttpClient.put(uri, MangoModel::Dispute.new)
34
+ parse response
35
+ end
36
+
37
+ # Contests a dispute entity.
38
+ #
39
+ # @param +dispute+ [Dispute] the dispute object
40
+ # @return [Dispute] the contested Dispute entity object
41
+ def submit(dispute)
42
+ uri = provide_uri(:submit_dispute, dispute.id)
43
+ response = HttpClient.put(uri, dispute)
44
+ parse response
45
+ end
46
+
47
+ # Re-submits a dispute entity if it is reopened requiring
48
+ # more documents.
49
+ #
50
+ # @param +id+ [String] ID of the dispute to re-submit
51
+ # @return [Dispute] the re-submitted Dispute entity object
52
+ def resubmit(id)
53
+ uri = provide_uri(:resubmit_dispute, id)
54
+ response = HttpClient.put(uri, MangoModel::Dispute.new)
55
+ parse response
56
+ end
57
+
58
+ # Retrieves a dispute entity.
59
+ #
60
+ # @param +id+ [String] ID of the dispute to retrieve
61
+ # @return [Dispute] the requested Dispute entity object
62
+ def get(id)
63
+ uri = provide_uri(:get_dispute, id)
64
+ response = HttpClient.get(uri)
65
+ parse response
66
+ end
67
+
68
+ # Retrieves dispute entities belonging to a certain user.
69
+ # Allows configuration of paging and sorting parameters by
70
+ # yielding a filtering object to a provided block. When no
71
+ # filters are specified, will retrieve the first page of
72
+ # 10 newest results.
73
+ #
74
+ # Allowed +FilterRequest+ params:
75
+ # * page
76
+ # * per_page
77
+ # * sort_field and sort_direction
78
+ # * before_date
79
+ # * after_date
80
+ # * dispute_type
81
+ # * status
82
+ #
83
+ # @param +id+ [String] ID of the user whose disputes to retrieve
84
+ # @return [Array] corresponding Dispute entity object
85
+ def of_user(id)
86
+ uri = provide_uri(:get_users_disputes, id)
87
+ filter_request = nil
88
+ yield filter_request = FilterRequest.new if block_given?
89
+ results = HttpClient.get(uri, filter_request)
90
+ parse_results results
91
+ end
92
+
93
+ # Retrieves dispute entities belonging to a certain wallet.
94
+ # Allows configuration of paging and sorting parameters by
95
+ # yielding a filtering object to a provided block. When no
96
+ # filters are specified, will retrieve the first page of
97
+ # 10 newest results.
98
+ #
99
+ # Allowed +FilterRequest+ params:
100
+ # * page
101
+ # * per_page
102
+ # * sort_field and sort_direction
103
+ # * before_date
104
+ # * after_date
105
+ # * dispute_type
106
+ # * status
107
+ #
108
+ # @param +id+ [String] ID of the wallet whose disputes to retrieve
109
+ # @return [Array] corresponding Dispute entity object
110
+ def of_wallet(id)
111
+ uri = provide_uri(:get_wallets_disputes, id)
112
+ filter_request = nil
113
+ yield filter_request = FilterRequest.new if block_given?
114
+ results = HttpClient.get(uri, filter_request)
115
+ parse_results results
116
+ end
117
+
118
+ # Retrieves dispute entities that allow a settlement transfer.
119
+ # In the event of having credit following a Dispute (because
120
+ # it was lost, or the full amount wasn't contested), a settlement
121
+ # transfer can optionally be done to transfer funds from the original
122
+ # wallet to the credit wallet. A dispute allows a settlement transfer
123
+ # when there is remaining credit and when funds are still available
124
+ # in the original wallet.
125
+ #
126
+ # Allowed +FilterRequest+ params:
127
+ # * page
128
+ # * per_page
129
+ # * sort_field and sort_direction
130
+ #
131
+ # @return [Array] corresponding Dispute entity objects
132
+ def pending_settlement
133
+ uri = provide_uri(:get_disputes_pending_settlement)
134
+ filter_request = nil
135
+ yield filter_request = FilterRequest.new if block_given?
136
+ results = HttpClient.get(uri, filter_request)
137
+ parse_results results
138
+ end
139
+
140
+ # Retrieves dispute entities belonging to the current client.
141
+ # Allows configuration of paging and sorting parameters by
142
+ # yielding a filtering object to a provided block. When no
143
+ # filters are specified, will retrieve the first page of
144
+ # 10 newest results.
145
+ #
146
+ # Allowed +FilterRequest+ params:
147
+ # * page
148
+ # * per_page
149
+ # * sort_field and sort_direction
150
+ # * before_date
151
+ # * after_date
152
+ # * dispute_type
153
+ # * status
154
+ #
155
+ # @return [Array] corresponding Dispute entity objects
156
+ def all
157
+ uri = provide_uri(:get_disputes)
158
+ filter_request = nil
159
+ yield filter_request = FilterRequest.new if block_given?
160
+ results = HttpClient.get(uri, filter_request)
161
+ parse_results results
162
+ end
163
+
164
+ private
165
+
166
+ # Parses an array of JSON-originating hashes into the corresponding
167
+ # Dispute entity objects.
168
+ #
169
+ # @param +results+ [Array] JSON-originating data hashes
170
+ # @return [Array] parsed Dispute entity objects
171
+ def parse_results(results)
172
+ results.collect do |entity|
173
+ parse entity
174
+ end
175
+ end
176
+
177
+ # Parses a JSON-originating hash into the corresponding
178
+ # Dispute entity object.
179
+ #
180
+ # @param +response+ [Hash] JSON-originating data hash
181
+ # @return [Dispute] corresponding Dispute entity object
182
+ def parse(response)
183
+ MangoModel::Dispute.new.dejsonify response
184
+ end
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/currency_request'
3
+
4
+ module MangoApi
5
+
6
+ # Provides API method delegates concerning the +EMoney+ entity
7
+ module EMoney
8
+ class << self
9
+ include UriProvider
10
+
11
+ # Retrieves a user's e-money.
12
+ #
13
+ # @param +user_id+ [String] ID of the user whose e-money to retrieve
14
+ # @param +currency+ [CurrencyIso] currency in which to represent results -
15
+ # defaults to EUR.
16
+ # @return [EMoney] the specified user's EMoney entity object
17
+ def of_user(user_id, currency = nil)
18
+ uri = provide_uri(:get_users_e_money, user_id)
19
+ if currency
20
+ response = HttpClient.get_raw(uri) do |request|
21
+ HttpClient.api_headers.each { |k, v| request.add_field(k, v) }
22
+ request.body = CurrencyRequest.new(currency).jsonify!
23
+ end
24
+ else
25
+ response = HttpClient.get(uri)
26
+ end
27
+ parse response
28
+ end
29
+
30
+ private
31
+
32
+ # Parses a JSON-originating hash into the corresponding
33
+ # EMoney entity object.
34
+ #
35
+ # @param +response+ [Hash] JSON-originating data hash
36
+ # @return [EMoney] corresponding EMoney entity object
37
+ def parse(response)
38
+ MangoModel::EMoney.new.dejsonify response
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,47 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +Event+ entity
6
+ module Events
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Retrieves list of Event entity pages.
11
+ # Allows configuration of paging and sorting parameters by
12
+ # yielding a filtering object to a provided block. When no
13
+ # filters are specified, will retrieve the first page of
14
+ # 10 newest results.
15
+ #
16
+ # Allowed +FilterRequest+ params:
17
+ # * page
18
+ # * per_page
19
+ # * sort_field and sort_direction
20
+ # * before_date
21
+ # * after_date
22
+ # * event_type
23
+ #
24
+ # @return [Array] requested Event entity objects
25
+ def all
26
+ uri = provide_uri(:get_events)
27
+ filter_request = nil
28
+ yield filter_request = FilterRequest.new if block_given?
29
+ results = HttpClient.get(uri, filter_request)
30
+ parse_results results
31
+ end
32
+
33
+ private
34
+
35
+ # Parses an array of JSON-originating hashes into the corresponding
36
+ # Event entity objects.
37
+ #
38
+ # @param +results+ [Array] JSON-originating data hashes
39
+ # @return [Array] parsed Event entity objects
40
+ def parse_results(results)
41
+ results.collect do |entity|
42
+ MangoModel::Event.new.dejsonify entity
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,93 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/filter_request'
3
+
4
+ module MangoApi
5
+
6
+ # Provides API method delegates concerning the +Hook+ entity
7
+ module Hooks
8
+ class << self
9
+ include UriProvider
10
+
11
+ # Creates a new hook entity.
12
+ #
13
+ # +Hook+ properties:
14
+ # * Required
15
+ # * event_type
16
+ # * url
17
+ # * Optional
18
+ # * tag
19
+ #
20
+ # @param +hook+ [Hook] model object of the hook to be created
21
+ # @param +id_key+ [String] idempotency key for future response replication
22
+ # @return [Hook] the newly-created Hook entity object
23
+ def create(hook, id_key = nil)
24
+ uri = provide_uri(:create_hook)
25
+ response = HttpClient.post(uri, hook, id_key)
26
+ parse response
27
+ end
28
+
29
+ # Updates the hook entity identifiable by the provided
30
+ # Hook object's ID.
31
+ #
32
+ # +Hook+ optional properties:
33
+ # * tag
34
+ # * status
35
+ # * url
36
+ #
37
+ # @param +hook+ [Hook] hook object with corresponding ID
38
+ # and updated data
39
+ # @return [Hook] the updated Hook entity object
40
+ def update(hook)
41
+ uri = provide_uri(:update_hook, hook.id)
42
+ response = HttpClient.put(uri, hook)
43
+ parse response
44
+ end
45
+
46
+ # Retrieves a hook entity.
47
+ #
48
+ # @param +id+ [String] ID of the hook to retrieve
49
+ # @return [Hook] the requested Hook entity object
50
+ def get(id)
51
+ uri = provide_uri(:get_hook, id)
52
+ response = HttpClient.get(uri)
53
+ parse response
54
+ end
55
+
56
+ # Retrieves all hooks.
57
+ #
58
+ # Allowed +FilterRequest+ params:
59
+ # * page
60
+ # * per_page
61
+ # * sort_field and sort_direction
62
+ #
63
+ # @return [Array] Hook entity objects
64
+ def all
65
+ uri = provide_uri(:get_hooks)
66
+ results = HttpClient.get(uri)
67
+ parse_results results
68
+ end
69
+
70
+ private
71
+
72
+ # Parses an array of JSON-originating hashes into the corresponding
73
+ # Hook entity objects.
74
+ #
75
+ # @param +results+ [Array] JSON-originating data hashes
76
+ # @return [Array] parsed Hook entity objects
77
+ def parse_results(results)
78
+ results.collect do |entity|
79
+ parse entity
80
+ end
81
+ end
82
+
83
+ # Parses a JSON-originating hash into the corresponding
84
+ # Hook entity object.
85
+ #
86
+ # @param +response+ [Hash] JSON-originating data hash
87
+ # @return [Hook] corresponding Hook entity object
88
+ def parse(response)
89
+ MangoModel::Hook.new.dejsonify response
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,153 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../util/file_encoder'
3
+ require_relative '../../model/request/upload_file_request'
4
+ require_relative '../../model/request/submit_document_request'
5
+
6
+ module MangoApi
7
+
8
+ # Provides API method delegates concerning the +KycDocument+ entity
9
+ class KycDocuments
10
+ class << self
11
+ include UriProvider
12
+
13
+ # Creates a new KYC document entity.
14
+ #
15
+ # +KycDocument+ properties:
16
+ # * Required
17
+ # * type
18
+ # * Optional
19
+ # * tag
20
+ #
21
+ # @param +kyc_document+ [KycDocument] model object of the KYC document
22
+ # to be created
23
+ # @param +user_id+ [String] ID of the user who the document is being
24
+ # created for
25
+ # @param +id_key+ [String] idempotency key for future response replication
26
+ # @return [KycDocument] the newly-created KycDocument entity object
27
+ def create(kyc_document, user_id, id_key = nil)
28
+ uri = provide_uri(:create_kyc_document, user_id)
29
+ response = HttpClient.post(uri, kyc_document, id_key)
30
+ parse response
31
+ end
32
+
33
+ # Uploads a KYC document page. Allowed file extensions:
34
+ # .pdf .jpeg .jpg .gif .png
35
+ #
36
+ # @param +id+ [String] ID of the KYC document entity that the page
37
+ # is being uploaded for
38
+ # @param +user_id+ [String] ID of the user who the document is being
39
+ # updated for
40
+ # @param +path+ [String] path of the KYC document page image
41
+ def upload_page(id, user_id, path)
42
+ uri = provide_uri(:upload_kyc_document_page, user_id, id)
43
+ body = UploadFileRequest.new
44
+ body.file = FileEncoder.encode_base64 path
45
+ HttpClient.post(uri, body)
46
+ end
47
+
48
+ # Submits a KYC document entity for approval.
49
+ #
50
+ # @param +id+ [String] ID of the KYC document to submit
51
+ # @param +user_id+ [String] ID of the user who the document is being
52
+ # submitted for
53
+ # @param +tag+ [String] custom data to add with the request
54
+ # @return [KycDocument] the submitted KycDocument entity object
55
+ def submit(id, user_id, tag = nil)
56
+ uri = provide_uri(:submit_kyc_document, user_id, id)
57
+ request = SubmitDocumentRequest.new(tag)
58
+ response = HttpClient.put(uri, request)
59
+ parse response
60
+ end
61
+
62
+ # Retrieves pages of KYC document entities belonging to current
63
+ # environment's client. Allows configuration of paging and sorting
64
+ # parameters by yielding a filtering object to a provided block. When
65
+ # no filters are specified, will retrieve the first page of 10 newest
66
+ # results.
67
+ #
68
+ # Allowed +FilterRequest+ params:
69
+ # * page
70
+ # * per_page
71
+ # * sort_field and sort_direction
72
+ # * before_date
73
+ # * after_date
74
+ # * status
75
+ #
76
+ # @return [Array] the requested entities
77
+ def all
78
+ uri = provide_uri(:get_kyc_documents)
79
+ filter_request = nil
80
+ yield filter_request = FilterRequest.new if block_given?
81
+ results = HttpClient.get(uri, filter_request)
82
+ parse_docs results
83
+ end
84
+
85
+ # Retrieves pages of KYC document entities belonging to a certain
86
+ # user entity. Allows configuration of paging and sorting parameters by
87
+ # yielding a filtering object to a provided block. When no filters
88
+ # are specified, will retrieve the first page of 10 newest results.
89
+ #
90
+ # Allowed +FilterRequest+ params:
91
+ # * page
92
+ # * per_page
93
+ # * sort_field and sort_direction
94
+ # * before_date
95
+ # * after_date
96
+ # * status
97
+ #
98
+ # @param +id+ [String] ID of the user whose KYC documents to retrieve
99
+ # @return [Array] the requested entities
100
+ def of_user(id)
101
+ uri = provide_uri(:get_users_kyc_documents, id)
102
+ filter_request = nil
103
+ yield filter_request = FilterRequest.new if block_given?
104
+ results = HttpClient.get(uri, filter_request)
105
+ parse_docs results
106
+ end
107
+
108
+ # Creates temporary URLs where each page of a KYC document
109
+ # can be viewed.
110
+ #
111
+ # @param +id+ [String] ID of the KYC documents which to consult
112
+ # @return [Array] +DocumentPageConsult+s for the document's pages
113
+ def consult(id)
114
+ uri = provide_uri(:consult_kyc_document, id)
115
+ results = HttpClient.post(uri, nil)
116
+ parse_consults results
117
+ end
118
+
119
+ private
120
+
121
+ # Parses an array of JSON-originating hashes into the corresponding
122
+ # KycDocument entity objects.
123
+ #
124
+ # @param +results+ [Array] JSON-originating data hashes
125
+ # @return [Array] parsed KycDocument entity objects
126
+ def parse_docs(results)
127
+ results.collect do |entity|
128
+ parse entity
129
+ end
130
+ end
131
+
132
+ # Parses a JSON-originating hash into the corresponding
133
+ # KycDocument entity object.
134
+ #
135
+ # @param +response+ [Hash] JSON-originating data hash
136
+ # @return [KycDocument] corresponding KycDocument entity object
137
+ def parse(response)
138
+ MangoModel::KycDocument.new.dejsonify response
139
+ end
140
+
141
+ # Parses an array of JSON-originating hashes into the corresponding
142
+ # DocumentPageConsult entity objects.
143
+ #
144
+ # @param +results+ [Array] JSON-originating data hashes
145
+ # @return [Array] parsed DocumentPageConsult entity objects
146
+ def parse_consults(results)
147
+ results.collect do |entity|
148
+ MangoModel::DocumentPageConsult.new.dejsonify entity
149
+ end
150
+ end
151
+ end
152
+ end
153
+ end