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,152 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/complete_registration_request'
3
+ require_relative '../../model/request/deactivation_request'
4
+
5
+ module MangoApi
6
+
7
+ # Provides API method delegates concerning the +Card+ entity
8
+ module Cards
9
+ class << self
10
+ include UriProvider
11
+
12
+ # Creates a new card registration entity.
13
+ #
14
+ # +CardRegistration+ properties:
15
+ # * Required
16
+ # * user_id
17
+ # * currency
18
+ # * Optional
19
+ # * tag
20
+ # * card_type
21
+ #
22
+ # @param +card_registration+ [CardRegistration] model object of
23
+ # card registration to be created
24
+ # @param +id_key+ [String] idempotency key for future response replication
25
+ # @return [CardRegistration] the newly-created CardRegistration entity
26
+ # object
27
+ def create_registration(card_registration, id_key = nil)
28
+ uri = provide_uri(:create_card_registration)
29
+ response = HttpClient.post(uri, card_registration, id_key)
30
+ parse_registration response
31
+ end
32
+
33
+ # Allows completion of a card registration with the registration
34
+ # data received from the Tokenization Server.
35
+ #
36
+ # @param +registration_data+ [String] registration data from the
37
+ # Tokenization Server
38
+ # @return [CardRegistration] the completed CardRegistration entity
39
+ # object
40
+ def complete_registration(id, registration_data)
41
+ uri = provide_uri(:complete_card_registration, id)
42
+ request = CompleteRegistrationRequest.new(registration_data)
43
+ response = HttpClient.put(uri, request)
44
+ parse_registration response
45
+ end
46
+
47
+ # Retrieves a card registration entity.
48
+ #
49
+ # @param +id+ [String] ID of the card registration to retrieve
50
+ # @return [CardRegistration] the requested entity object
51
+ def get_registration(id)
52
+ uri = provide_uri(:get_card_registration, id)
53
+ response = HttpClient.get(uri)
54
+ parse_registration response
55
+ end
56
+
57
+ # Retrieves a card entity.
58
+ #
59
+ # @param +id+ [String] ID of the card entity to retrieve
60
+ # @return [Card] the requested Card entity object
61
+ def get(id)
62
+ uri = provide_uri(:get_card, id)
63
+ response = HttpClient.get(uri)
64
+ parse_card response
65
+ end
66
+
67
+ # Retrieves pages of a user's card entities.
68
+ # Allows configuration of paging and sorting parameters
69
+ # by yielding a filtering object to a provided block. When
70
+ # no filters are specified, will retrieve the
71
+ # first page of 10 newest results.
72
+ #
73
+ # Allowed +FilterRequest+ params:
74
+ # * page
75
+ # * per_page
76
+ # * sort_field and sort_direction
77
+ #
78
+ # @param +id+ [String] ID of the user whose cards to retrieve
79
+ # @return [Array] array of hashed card entities corresponding
80
+ # to provided filters
81
+ def of_user(id)
82
+ uri = provide_uri(:get_users_cards, id)
83
+ filter_request = nil
84
+ yield filter_request = FilterRequest.new if block_given?
85
+ results = HttpClient.get(uri, filter_request)
86
+ parse_cards results
87
+ end
88
+
89
+ # Retrieves pages of card entities corresponding to a
90
+ # certain fingerprint. The Fingerprint is a unique
91
+ # hash key uniquely generated per 16-digit card number.
92
+ #
93
+ # Allowed +FilterRequest+ params:
94
+ # * page
95
+ # * per_page
96
+ # * sort_field and sort_direction
97
+ #
98
+ # @param +fingerprint+ [String] uniquely hashed card number
99
+ # which to search for
100
+ # @return [Array] array of hashed card entities corresponding
101
+ # to provided filters
102
+ def with_fingerprint(fingerprint)
103
+ uri = provide_uri(:get_cards_by_fingerprint, fingerprint)
104
+ filter_request = nil
105
+ yield filter_request = FilterRequest.new if block_given?
106
+ results = HttpClient.get(uri, filter_request)
107
+ parse_cards results
108
+ end
109
+
110
+ # Deactivates the card entity specified by an id.
111
+ #
112
+ # @param +id+ [String] ID of the card to deactivate
113
+ # @return [Card] the deactivated card entity object
114
+ def deactivate(id)
115
+ uri = provide_uri(:deactivate_card, id)
116
+ response = HttpClient.put(uri, DeactivationRequest.new)
117
+ parse_card response
118
+ end
119
+
120
+ private
121
+
122
+ # Parses a JSON-originating hash into the corresponding
123
+ # CardRegistration entity object.
124
+ #
125
+ # @param +response+ [Hash] JSON-originating data hash
126
+ # @return [CardRegistration] corresponding CardRegistration entity object
127
+ def parse_registration(response)
128
+ MangoModel::CardRegistration.new.dejsonify response
129
+ end
130
+
131
+ # Parses a JSON-originating hash into the corresponding
132
+ # Card entity object.
133
+ #
134
+ # @param +response+ [Hash] JSON-originating data hash
135
+ # @return [Card] corresponding Card entity object
136
+ def parse_card(response)
137
+ MangoModel::Card.new.dejsonify response
138
+ end
139
+
140
+ # Parses an array of JSON-originating hashes into the corresponding
141
+ # Card entity objects.
142
+ #
143
+ # @param +results+ [Array] JSON-originating data hashes
144
+ # @return [Array] parsed Card entity objects
145
+ def parse_cards(results)
146
+ results.collect do |entity|
147
+ parse_card entity
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,89 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +ClientWallet+ entity
6
+ module ClientWallets
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Retrieves a client wallet entity.
11
+ # Client wallet entity of provided funds' type and currency will be
12
+ # created if it does not yet exist.
13
+ #
14
+ # @param +funds_type+ [FundsType] funds' type of the wallet to retrieve
15
+ # @param +currency+ [CurrencyIso] currency of the wallet to retrieve
16
+ # @return [ClientWallet] the corresponding ClientWallet entity object
17
+ def get(funds_type, currency)
18
+ uri = provide_uri(:get_client_wallet, funds_type, currency)
19
+ response = HttpClient.get(uri)
20
+ parse response
21
+ end
22
+
23
+ # Retrieves client wallet entities. Allows configuration
24
+ # of paging and sorting parameters by yielding a filtering
25
+ # object to a provided block. When no filters are specified,
26
+ # will retrieve the first page of 10 newest results.
27
+ #
28
+ # Allowed +FilterRequest+ params:
29
+ # * page
30
+ # * per_page
31
+ # * sort_field and sort_direction
32
+ #
33
+ # @return [Array] array of hashed client wallet entities
34
+ # corresponding to provided filters
35
+ def all
36
+ uri = provide_uri(:get_client_wallets)
37
+ filter_request = nil
38
+ yield filter_request = FilterRequest.new if block_given?
39
+ results = HttpClient.get(uri, filter_request)
40
+ parse_results results
41
+ end
42
+
43
+ # Retrieves client wallet entities of a certain funds type.
44
+ # Allows configuration of paging and sorting parameters by
45
+ # yielding a filtering object to a provided block. When no
46
+ # filters are specified, will retrieve the first page of
47
+ # 10 newest results.
48
+ #
49
+ # Allowed +FilterRequest+ params:
50
+ # * page
51
+ # * per_page
52
+ # * sort_field and sort_direction
53
+ #
54
+ # @param +funds_type+ [FundsType] funds' type of the client
55
+ # wallets to retrieve
56
+ # @return [Array] array of hashed client wallet entities
57
+ # corresponding to provided filters
58
+ def of_funds_type(funds_type)
59
+ uri = provide_uri(:get_client_wallets_funds_type, funds_type)
60
+ filter_request = nil
61
+ yield filter_request = FilterRequest.new if block_given?
62
+ results = HttpClient.get(uri, filter_request)
63
+ parse_results results
64
+ end
65
+
66
+ private
67
+
68
+ # Parses an array of JSON-originating hashes into the corresponding
69
+ # ClientWallet entity objects.
70
+ #
71
+ # @param +results+ [Array] JSON-originating data hashes
72
+ # @return [Array] parsed ClientWallet entity objects
73
+ def parse_results(results)
74
+ results.collect do |entity|
75
+ parse entity
76
+ end
77
+ end
78
+
79
+ # Parses a JSON-originating hash into the corresponding
80
+ # ClientWallet entity object.
81
+ #
82
+ # @param +response+ [Hash] JSON-originating data hash
83
+ # @return [ClientWallet] corresponding ClientWallet entity object
84
+ def parse(response)
85
+ MangoModel::ClientWallet.new.dejsonify response
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,68 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../util/file_encoder'
3
+ require_relative '../../model/request/upload_file_request'
4
+
5
+ module MangoApi
6
+
7
+ # Provides API method delegates concerning the +Client+ entity
8
+ module Clients
9
+ class << self
10
+ include UriProvider
11
+
12
+ # Updates the current environment's client entity.
13
+ #
14
+ # +Client+ optional properties:
15
+ # * primary_button_colour
16
+ # * primary_theme_colour
17
+ # * admin_emails
18
+ # * tech_emails
19
+ # * billing_emails
20
+ # * fraud_emails
21
+ # * headquarters_address
22
+ # * tax_number
23
+ # * platform_type
24
+ # * platform_description
25
+ # * platform_url
26
+ #
27
+ # @param +client+ [Client] client object with corresponding ID
28
+ # and updated dat
29
+ # @return [Client] updated Client entity object
30
+ def update(client)
31
+ uri = provide_uri(:update_client)
32
+ response = HttpClient.put(uri, client)
33
+ parse response
34
+ end
35
+
36
+ # Uploads the image file specified as the current
37
+ # environment's client's logo.
38
+ #
39
+ # @param +path+ [String] path of the logo image
40
+ def upload_logo(path)
41
+ uri = provide_uri(:upload_client_logo)
42
+ body = UploadFileRequest.new
43
+ body.file = FileEncoder.encode_base64 path
44
+ HttpClient.put(uri, body)
45
+ end
46
+
47
+ # Retrieves the current environment's client entity.
48
+ #
49
+ # @return [Client] current Client entity object
50
+ def get
51
+ uri = provide_uri(:get_client)
52
+ response = HttpClient.get(uri)
53
+ parse response
54
+ end
55
+
56
+ private
57
+
58
+ # Parses a JSON-originating hash into the corresponding
59
+ # Client entity object.
60
+ #
61
+ # @param +response+ [Hash] JSON-originating data hash
62
+ # @return [Client] corresponding Client entity object
63
+ def parse(response)
64
+ MangoModel::Client.new.dejsonify response
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,158 @@
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/upload_file_request'
3
+ require_relative '../../util/file_encoder'
4
+ require_relative '../../model/request/submit_document_request'
5
+
6
+ module MangoApi
7
+
8
+ # Provides API method delegates for the +DisputeDocument+ entity
9
+ module DisputeDocuments
10
+ class << self
11
+ include UriProvider
12
+
13
+ # Creates a new dispute document entity.
14
+ #
15
+ # +DisputeDocument+ properties:
16
+ # * Required
17
+ # * type
18
+ # * Optional
19
+ # * tag
20
+ #
21
+ # @param +document+ [DisputeDocument] model object of the dispute
22
+ # document to be created
23
+ # @param +dispute_id+ [String] ID of the corresponding dispute
24
+ # @return [DisputeDocument] the newly-created DisputeDocument entity object
25
+ def create(document, dispute_id)
26
+ uri = provide_uri(:create_dispute_document, dispute_id)
27
+ response = HttpClient.post(uri, document)
28
+ parse response
29
+ end
30
+
31
+ # Uploads a dispute document page. Allowed extensions:
32
+ # .pdf .jpeg .jpg .gif .png
33
+ #
34
+ # @param +id+ [String] ID of the dispute document entity
35
+ # that the page is being uploaded for
36
+ # @param +dispute_id+ [String] ID of the corresponding dispute entity
37
+ # @param +path+ [String] path to the file to upload
38
+ def upload_page(id, dispute_id, path)
39
+ uri = provide_uri(:upload_dispute_document_page, dispute_id, id)
40
+ body = UploadFileRequest.new
41
+ body.file = FileEncoder.encode_base64 path
42
+ HttpClient.post(uri, body)
43
+ end
44
+
45
+ # Submits a dispute document entity for approval
46
+ #
47
+ # @param +id+ [String] ID of the dispute document to submit
48
+ # @param +dispute_id+ [String] ID of the corresponding dispute
49
+ # @return [DisputeDocument] the submitted DisputeDocument entity object
50
+ def submit(id, dispute_id)
51
+ uri = provide_uri(:submit_dispute_document, dispute_id, id)
52
+ request = SubmitDocumentRequest.new
53
+ response = HttpClient.put(uri, request)
54
+ parse response
55
+ end
56
+
57
+ # Retrieves a dispute document entity.
58
+ #
59
+ # @param +id+ [String] ID of the dispute document to retrieve
60
+ # @return [DisputeDocument] the requested DisputeDocument entity object
61
+ def get(id)
62
+ uri = provide_uri(:get_dispute_document, id)
63
+ response = HttpClient.get(uri)
64
+ parse response
65
+ end
66
+
67
+ # Retrieves dispute documents belonging to a certain dispute.
68
+ # Allows configuration of paging and sorting parameters by
69
+ # yielding a filtering object to a provided block. When no filters are
70
+ # specified, will retrieve the first page of 10 newest results.
71
+ #
72
+ # Allowed +FilterRequest+ params:
73
+ # * page
74
+ # * per_page
75
+ # * sort_field and sort_direction
76
+ # * before_date
77
+ # * after_date
78
+ # * status
79
+ # * type
80
+ #
81
+ # @param +id+ [String] ID of the dispute whose documents to retrieve
82
+ # @return [Array] corresponding DisputeDocument entity objects
83
+ def of_dispute(id)
84
+ uri = provide_uri(:get_disputes_documents, id)
85
+ filter_request = nil
86
+ yield filter_request = FilterRequest.new if block_given?
87
+ results = HttpClient.get(uri, filter_request)
88
+ parse_results results
89
+ end
90
+
91
+ # Retrieves dispute documents belonging to the current environment's
92
+ # client. Allows configuration of paging and sorting parameters by
93
+ # yielding a filtering object to a provided block. When no filters are
94
+ # specified, will retrieve the first page of 10 newest results.
95
+ #
96
+ # Allowed +FilterRequest+ params:
97
+ # * page
98
+ # * per_page
99
+ # * sort_field and sort_direction
100
+ # * before_date
101
+ # * after_date
102
+ # * status
103
+ # * type
104
+ #
105
+ # @return [Array] corresponding DisputeDocument entity objects
106
+ def all
107
+ uri = provide_uri(:get_dispute_documents)
108
+ filter_request = nil
109
+ yield filter_request = FilterRequest.new if block_given?
110
+ results = HttpClient.get(uri, filter_request)
111
+ parse_results results
112
+ end
113
+
114
+ # Creates temporary URLs where each page of a dispute document
115
+ # can be viewed
116
+ #
117
+ # @param +id+ [String] ID of the document whose pages to consult
118
+ # @return [Array] the corresponding DocumentPageConsult objects
119
+ def consult(id)
120
+ uri = provide_uri(:consult_dispute_document, id)
121
+ results = HttpClient.post(uri, nil)
122
+ parse_consults results
123
+ end
124
+
125
+ private
126
+
127
+ # Parses an array of JSON-originating hashes into the corresponding
128
+ # DisputeDocument entity objects.
129
+ #
130
+ # @param +results+ [Array] JSON-originating data hashes
131
+ # @return [Array] parsed DisputeDocument entity objects
132
+ def parse_results(results)
133
+ results.collect do |entity|
134
+ parse entity
135
+ end
136
+ end
137
+
138
+ # Parses a JSON-originating hash into the corresponding
139
+ # DisputeDocument entity object.
140
+ #
141
+ # @param +response+ [Hash] JSON-originating data hash
142
+ # @return [DisputeDocument] corresponding DisputeDocument entity object
143
+ def parse(response)
144
+ MangoModel::DisputeDocument.new.dejsonify response
145
+ end
146
+ # Parses an array of JSON-originating hashes into the corresponding
147
+ # DocumentPageConsult objects.
148
+ #
149
+ # @param +consults+ [Array] JSON-originating data hashes
150
+ # @return [Array] corresponding DocumentPageConsult objects
151
+ def parse_consults(consults)
152
+ consults.collect do |consult|
153
+ MangoModel::DocumentPageConsult.new.dejsonify consult
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end