mangopay-v4 4.0.0 → 4.0.1

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 (234) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +29 -29
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +21 -13
  6. data/Gemfile +2 -2
  7. data/LICENSE +20 -20
  8. data/README.md +379 -379
  9. data/bin/mangopay +9 -9
  10. data/lib/mangopay.rb +132 -132
  11. data/lib/mangopay/api/api.rb +8 -8
  12. data/lib/mangopay/api/api_methods.rb +160 -136
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -173
  14. data/lib/mangopay/api/http_client.rb +324 -324
  15. data/lib/mangopay/api/service/bank_accounts.rb +145 -145
  16. data/lib/mangopay/api/service/banking_aliases.rb +83 -0
  17. data/lib/mangopay/api/service/cards.rb +151 -151
  18. data/lib/mangopay/api/service/client_wallets.rb +88 -88
  19. data/lib/mangopay/api/service/clients.rb +67 -67
  20. data/lib/mangopay/api/service/dispute_documents.rb +157 -157
  21. data/lib/mangopay/api/service/disputes.rb +186 -186
  22. data/lib/mangopay/api/service/e_money.rb +63 -41
  23. data/lib/mangopay/api/service/events.rb +46 -46
  24. data/lib/mangopay/api/service/hooks.rb +92 -92
  25. data/lib/mangopay/api/service/kyc_documents.rb +152 -152
  26. data/lib/mangopay/api/service/mandates.rb +141 -141
  27. data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
  28. data/lib/mangopay/api/service/pay_ins.rb +369 -259
  29. data/lib/mangopay/api/service/pay_outs.rb +53 -53
  30. data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
  31. data/lib/mangopay/api/service/refunds.rb +159 -61
  32. data/lib/mangopay/api/service/reports.rb +150 -150
  33. data/lib/mangopay/api/service/repudiations.rb +31 -31
  34. data/lib/mangopay/api/service/responses.rb +101 -101
  35. data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
  36. data/lib/mangopay/api/service/transactions.rb +246 -182
  37. data/lib/mangopay/api/service/transfers.rb +53 -53
  38. data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
  39. data/lib/mangopay/api/service/users.rb +162 -162
  40. data/lib/mangopay/api/service/wallets.rb +98 -98
  41. data/lib/mangopay/api/uri_provider.rb +32 -34
  42. data/lib/mangopay/common/json_tag_converter.rb +70 -67
  43. data/lib/mangopay/common/jsonifier.rb +266 -248
  44. data/lib/mangopay/common/log_provider.rb +33 -33
  45. data/lib/mangopay/common/rate_limit_interval.rb +16 -16
  46. data/lib/mangopay/common/read_only_fields.rb +26 -26
  47. data/lib/mangopay/common/response_error.rb +61 -61
  48. data/lib/mangopay/common/sort_direction.rb +14 -14
  49. data/lib/mangopay/common/sort_field.rb +12 -12
  50. data/lib/mangopay/common/template_url_options.rb +8 -8
  51. data/lib/mangopay/configuration.rb +38 -38
  52. data/lib/mangopay/environment.rb +65 -65
  53. data/lib/mangopay/model/address.rb +26 -26
  54. data/lib/mangopay/model/billing.rb +13 -0
  55. data/lib/mangopay/model/birthplace.rb +15 -0
  56. data/lib/mangopay/model/declared_ubo.rb +20 -20
  57. data/lib/mangopay/model/dispute_reason.rb +14 -14
  58. data/lib/mangopay/model/document_page_consult.rb +14 -14
  59. data/lib/mangopay/model/e_money.rb +17 -17
  60. data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
  61. data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
  62. data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
  63. data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
  64. data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
  65. data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
  66. data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
  67. data/lib/mangopay/model/entity/banking_alias.rb +27 -0
  68. data/lib/mangopay/model/entity/card.rb +44 -44
  69. data/lib/mangopay/model/entity/card_registration.rb +42 -42
  70. data/lib/mangopay/model/entity/client.rb +65 -62
  71. data/lib/mangopay/model/entity/client_wallet.rb +22 -22
  72. data/lib/mangopay/model/entity/dispute.rb +49 -49
  73. data/lib/mangopay/model/entity/dispute_document.rb +28 -28
  74. data/lib/mangopay/model/entity/entity_base.rb +17 -17
  75. data/lib/mangopay/model/entity/hook.rb +25 -25
  76. data/lib/mangopay/model/entity/kyc_document.rb +27 -27
  77. data/lib/mangopay/model/entity/mandate.rb +50 -50
  78. data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
  79. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
  80. data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
  81. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
  82. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
  83. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
  84. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
  85. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
  86. data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
  87. data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
  88. data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
  89. data/lib/mangopay/model/entity/pay_out.rb +21 -21
  90. data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
  91. data/lib/mangopay/model/entity/refund.rb +17 -17
  92. data/lib/mangopay/model/entity/report.rb +50 -50
  93. data/lib/mangopay/model/entity/repudiation.rb +17 -17
  94. data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
  95. data/lib/mangopay/model/entity/transaction.rb +51 -51
  96. data/lib/mangopay/model/entity/transfer.rb +12 -12
  97. data/lib/mangopay/model/entity/ubo.rb +30 -0
  98. data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
  99. data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
  100. data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
  101. data/lib/mangopay/model/entity/user/user.rb +17 -17
  102. data/lib/mangopay/model/entity/wallet.rb +27 -27
  103. data/lib/mangopay/model/enum/account_type.rb +23 -23
  104. data/lib/mangopay/model/enum/avs_result.rb +19 -0
  105. data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
  106. data/lib/mangopay/model/enum/business_type.rb +17 -0
  107. data/lib/mangopay/model/enum/card_status.rb +14 -14
  108. data/lib/mangopay/model/enum/card_type.rb +32 -32
  109. data/lib/mangopay/model/enum/card_validity.rb +18 -18
  110. data/lib/mangopay/model/enum/country_iso.rb +758 -758
  111. data/lib/mangopay/model/enum/culture_code.rb +43 -43
  112. data/lib/mangopay/model/enum/currency_iso.rb +551 -551
  113. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
  114. data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
  115. data/lib/mangopay/model/enum/deposit_type.rb +14 -14
  116. data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
  117. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
  118. data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
  119. data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
  120. data/lib/mangopay/model/enum/dispute_status.rb +20 -20
  121. data/lib/mangopay/model/enum/dispute_type.rb +14 -14
  122. data/lib/mangopay/model/enum/document_status.rb +20 -20
  123. data/lib/mangopay/model/enum/download_format.rb +10 -10
  124. data/lib/mangopay/model/enum/event_type.rb +76 -73
  125. data/lib/mangopay/model/enum/funds_type.rb +14 -14
  126. data/lib/mangopay/model/enum/hook_status.rb +12 -12
  127. data/lib/mangopay/model/enum/hook_validity.rb +14 -14
  128. data/lib/mangopay/model/enum/income_range.rb +20 -20
  129. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
  130. data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
  131. data/lib/mangopay/model/enum/kyc_level.rb +12 -12
  132. data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
  133. data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
  134. data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
  135. data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
  136. data/lib/mangopay/model/enum/mandate_status.rb +23 -23
  137. data/lib/mangopay/model/enum/mandate_type.rb +10 -10
  138. data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
  139. data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
  140. data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
  141. data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
  142. data/lib/mangopay/model/enum/payment_status.rb +20 -20
  143. data/lib/mangopay/model/enum/person_type.rb +14 -14
  144. data/lib/mangopay/model/enum/platform_type.rb +22 -22
  145. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
  146. data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
  147. data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
  148. data/lib/mangopay/model/enum/report_status.rb +16 -16
  149. data/lib/mangopay/model/enum/report_type.rb +12 -12
  150. data/lib/mangopay/model/enum/sector.rb +29 -0
  151. data/lib/mangopay/model/enum/secure_mode.rb +15 -15
  152. data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
  153. data/lib/mangopay/model/enum/transaction_status.rb +14 -14
  154. data/lib/mangopay/model/enum/transaction_type.rb +14 -14
  155. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
  156. data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
  157. data/lib/mangopay/model/event.rb +17 -17
  158. data/lib/mangopay/model/model.rb +214 -193
  159. data/lib/mangopay/model/money.rb +16 -16
  160. data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
  161. data/lib/mangopay/model/platform_categorization.rb +15 -0
  162. data/lib/mangopay/model/refund_reason.rb +14 -14
  163. data/lib/mangopay/model/report_filter.rb +82 -82
  164. data/lib/mangopay/model/request/cancel_request.rb +15 -15
  165. data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
  166. data/lib/mangopay/model/request/currency_request.rb +12 -12
  167. data/lib/mangopay/model/request/deactivation_request.rb +9 -9
  168. data/lib/mangopay/model/request/filter_request.rb +37 -37
  169. data/lib/mangopay/model/request/submit_document_request.rb +13 -13
  170. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
  171. data/lib/mangopay/model/request/upload_file_request.rb +8 -8
  172. data/lib/mangopay/model/response_replica.rb +26 -26
  173. data/lib/mangopay/model/security_info.rb +13 -0
  174. data/lib/mangopay/util/custom_formatter.rb +11 -11
  175. data/lib/mangopay/util/custom_logger.rb +33 -33
  176. data/lib/mangopay/util/enum.rb +51 -51
  177. data/lib/mangopay/util/file_encoder.rb +15 -15
  178. data/lib/mangopay/util/non_instantiable.rb +5 -5
  179. data/lib/mangopay/util/storage_strategy.rb +9 -9
  180. data/lib/mangopay/util/void_logger.rb +5 -5
  181. data/mangopay-v4.gemspec +32 -0
  182. data/mangopay.gemspec +32 -32
  183. data/spec/context/address_context.rb +24 -24
  184. data/spec/context/bank_account_context.rb +137 -137
  185. data/spec/context/banking_alias_context.rb +17 -0
  186. data/spec/context/birthplace_context.rb +17 -0
  187. data/spec/context/card_context.rb +45 -45
  188. data/spec/context/client_context.rb +43 -44
  189. data/spec/context/dispute_context.rb +36 -36
  190. data/spec/context/dispute_document_context.rb +19 -19
  191. data/spec/context/hook_context.rb +15 -15
  192. data/spec/context/kyc_document_context.rb +22 -22
  193. data/spec/context/mandate_context.rb +26 -26
  194. data/spec/context/pay_in_context.rb +319 -224
  195. data/spec/context/pay_out_context.rb +39 -38
  196. data/spec/context/pre_authorization_context.rb +44 -40
  197. data/spec/context/refund_context.rb +32 -32
  198. data/spec/context/report_context.rb +21 -21
  199. data/spec/context/repudiation_context.rb +18 -18
  200. data/spec/context/settlement_transfer_context.rb +27 -27
  201. data/spec/context/transfer_context.rb +50 -50
  202. data/spec/context/ubo_declaration_context.rb +29 -24
  203. data/spec/context/user_context.rb +83 -82
  204. data/spec/context/wallet_context.rb +52 -52
  205. data/spec/mangopay/bank_accounts_spec.rb +228 -228
  206. data/spec/mangopay/banking_alias_spec.rb +85 -0
  207. data/spec/mangopay/cards_spec.rb +133 -134
  208. data/spec/mangopay/client_wallets_spec.rb +147 -147
  209. data/spec/mangopay/clients_spec.rb +56 -54
  210. data/spec/mangopay/configuration_spec.rb +125 -125
  211. data/spec/mangopay/dispute_documents_spec.rb +173 -173
  212. data/spec/mangopay/disputes_spec.rb +264 -264
  213. data/spec/mangopay/e_money_spec.rb +57 -37
  214. data/spec/mangopay/events_spec.rb +49 -49
  215. data/spec/mangopay/hooks_spec.rb +70 -70
  216. data/spec/mangopay/kyc_documents_spec.rb +179 -179
  217. data/spec/mangopay/mandates_spec.rb +218 -218
  218. data/spec/mangopay/oauth_tokens_spec.rb +40 -40
  219. data/spec/mangopay/pay_ins_spec.rb +279 -180
  220. data/spec/mangopay/pay_outs_spec.rb +38 -38
  221. data/spec/mangopay/pre_authorizations_spec.rb +134 -57
  222. data/spec/mangopay/refunds_spec.rb +187 -39
  223. data/spec/mangopay/reports_spec.rb +118 -120
  224. data/spec/mangopay/responses_spec.rb +324 -294
  225. data/spec/mangopay/settlement_transfers_spec.rb +36 -36
  226. data/spec/mangopay/transactions_spec.rb +347 -232
  227. data/spec/mangopay/transfers_spec.rb +37 -37
  228. data/spec/mangopay/ubo_declarations_spec.rb +127 -64
  229. data/spec/mangopay/users_spec.rb +145 -145
  230. data/spec/mangopay/wallets_spec.rb +103 -103
  231. data/spec/spec_helper.rb +72 -72
  232. data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
  233. data/spec/tmp/mangopay.log.tmp +1201 -0
  234. metadata +31 -5
@@ -1,187 +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
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
187
  end
@@ -1,42 +1,64 @@
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
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 for year.
12
+ #
13
+ # @param +user_id+ [String] ID of the user whose e-money to retrieve
14
+ # @param +year+ [Int] year for which to retrieve e-money
15
+ # @param +currency+ [CurrencyIso] currency in which to represent results -
16
+ # defaults to EUR.
17
+ # @return [EMoney] the specified user's EMoney entity object
18
+ def of_user_year(user_id, year, currency = nil)
19
+ uri = provide_uri(:get_users_e_money_year, user_id, year)
20
+ if currency
21
+ response = HttpClient.get_raw(uri) do |request|
22
+ HttpClient.api_headers.each {|k, v| request.add_field(k, v)}
23
+ request.body = CurrencyRequest.new(currency).jsonify!
24
+ end
25
+ else
26
+ response = HttpClient.get(uri)
27
+ end
28
+ parse response
29
+ end
30
+
31
+ # Retrieves a user's e-money for year/month.
32
+ #
33
+ # @param +user_id+ [String] ID of the user whose e-money to retrieve
34
+ # @param +year+ [Int] year for which to retrieve e-money
35
+ # @param +month+ [Int] month for which to retrieve e-money
36
+ # @param +currency+ [CurrencyIso] currency in which to represent results -
37
+ # defaults to EUR.
38
+ # @return [EMoney] the specified user's EMoney entity object
39
+ def of_user_month(user_id, year, month, currency = nil)
40
+ uri = provide_uri(:get_users_e_money_month, user_id, year, month)
41
+ if currency
42
+ response = HttpClient.get_raw(uri) do |request|
43
+ HttpClient.api_headers.each {|k, v| request.add_field(k, v)}
44
+ request.body = CurrencyRequest.new(currency).jsonify!
45
+ end
46
+ else
47
+ response = HttpClient.get(uri)
48
+ end
49
+ parse response
50
+ end
51
+
52
+ private
53
+
54
+ # Parses a JSON-originating hash into the corresponding
55
+ # EMoney entity object.
56
+ #
57
+ # @param +response+ [Hash] JSON-originating data hash
58
+ # @return [EMoney] corresponding EMoney entity object
59
+ def parse(response)
60
+ MangoModel::EMoney.new.dejsonify response
61
+ end
62
+ end
63
+ end
42
64
  end