mangopay 3.0.25.pre.alpha.pre.20 → 3.0.25

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +28 -28
  3. data/.rspec +2 -2
  4. data/.travis.yml +4 -13
  5. data/Gemfile +2 -2
  6. data/LICENSE +20 -20
  7. data/README.md +126 -126
  8. data/bin/mangopay +9 -9
  9. data/lib/generators/mangopay/install_generator.rb +60 -60
  10. data/lib/generators/templates/mangopay.rb.erb +5 -5
  11. data/lib/mangopay.rb +225 -225
  12. data/lib/mangopay/authorization_token.rb +88 -88
  13. data/lib/mangopay/bank_account.rb +38 -38
  14. data/lib/mangopay/card.rb +8 -8
  15. data/lib/mangopay/card_registration.rb +9 -9
  16. data/lib/mangopay/client.rb +74 -74
  17. data/lib/mangopay/dispute.rb +130 -130
  18. data/lib/mangopay/errors.rb +61 -61
  19. data/lib/mangopay/event.rb +18 -18
  20. data/lib/mangopay/filter_parameters.rb +46 -46
  21. data/lib/mangopay/hook.rb +9 -9
  22. data/lib/mangopay/http_calls.rb +85 -85
  23. data/lib/mangopay/json.rb +14 -14
  24. data/lib/mangopay/kyc_document.rb +70 -70
  25. data/lib/mangopay/legal_user.rb +15 -15
  26. data/lib/mangopay/mandate.rb +32 -32
  27. data/lib/mangopay/natural_user.rb +14 -14
  28. data/lib/mangopay/pay_in.rb +85 -85
  29. data/lib/mangopay/pay_out.rb +14 -14
  30. data/lib/mangopay/pre_authorization.rb +13 -13
  31. data/lib/mangopay/refund.rb +7 -7
  32. data/lib/mangopay/report.rb +17 -17
  33. data/lib/mangopay/resource.rb +21 -21
  34. data/lib/mangopay/temp.rb +74 -74
  35. data/lib/mangopay/transaction.rb +24 -24
  36. data/lib/mangopay/transfer.rb +9 -9
  37. data/lib/mangopay/user.rb +43 -43
  38. data/lib/mangopay/version.rb +3 -3
  39. data/lib/mangopay/wallet.rb +17 -17
  40. data/mangopay.gemspec +30 -31
  41. data/spec/mangopay/authorization_token_spec.rb +70 -70
  42. data/spec/mangopay/bank_account_spec.rb +97 -97
  43. data/spec/mangopay/card_registration_spec.rb +73 -73
  44. data/spec/mangopay/client_spec.rb +110 -110
  45. data/spec/mangopay/configuration_spec.rb +95 -95
  46. data/spec/mangopay/dispute_spec.rb +262 -262
  47. data/spec/mangopay/event_spec.rb +31 -31
  48. data/spec/mangopay/fetch_filters_spec.rb +63 -63
  49. data/spec/mangopay/hook_spec.rb +37 -37
  50. data/spec/mangopay/idempotency_spec.rb +41 -41
  51. data/spec/mangopay/kyc_document_spec.rb +103 -103
  52. data/spec/mangopay/log_requests_filter_spec.rb +25 -25
  53. data/spec/mangopay/mandate_spec.rb +92 -92
  54. data/spec/mangopay/payin_bankwire_direct_spec.rb +74 -74
  55. data/spec/mangopay/payin_card_direct_spec.rb +68 -68
  56. data/spec/mangopay/payin_card_web_spec.rb +38 -38
  57. data/spec/mangopay/payin_directdebit_direct_spec.rb +37 -37
  58. data/spec/mangopay/payin_directdebit_web_spec.rb +38 -38
  59. data/spec/mangopay/payin_paypal_web_spec.rb +38 -38
  60. data/spec/mangopay/payin_preauthorized_direct_spec.rb +68 -68
  61. data/spec/mangopay/payout_bankwire_spec.rb +54 -54
  62. data/spec/mangopay/preauthorization_spec.rb +42 -42
  63. data/spec/mangopay/refund_spec.rb +21 -21
  64. data/spec/mangopay/report_spec.rb +39 -39
  65. data/spec/mangopay/shared_resources.rb +381 -381
  66. data/spec/mangopay/temp_paymentcard_spec.rb +31 -31
  67. data/spec/mangopay/transaction_spec.rb +54 -54
  68. data/spec/mangopay/transfer_spec.rb +69 -69
  69. data/spec/mangopay/user_spec.rb +137 -137
  70. data/spec/mangopay/wallet_spec.rb +80 -80
  71. data/spec/spec_helper.rb +31 -31
  72. metadata +5 -5
@@ -1,61 +1,61 @@
1
- module MangoPay
2
-
3
- # Generic error superclass for MangoPay specific errors.
4
- # Currently never instantiated directly.
5
- # Currently only single subclass used.
6
- class Error < StandardError
7
- end
8
-
9
- # See http://docs.mangopay.com/api-references/response-codes-rules/
10
- # and http://docs.mangopay.com/api-references/error-codes/
11
- #
12
- # Thrown from any MangoPay API call whenever
13
- # it returns response with HTTP code != 200.
14
- # Check @details hash for further info.
15
- #
16
- # Two example exceptions with details:
17
- #
18
- # #<MangoPay::ResponseError:
19
- # One or several required parameters are missing or incorrect. [...]
20
- # Email: The Email field is required.>
21
- # {"Message"=>"One or several required parameters are missing or incorrect.
22
- # An incorrect resource ID also raises this kind of error.",
23
- # "Type"=>"param_error",
24
- # "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
25
- # "Date"=>1409047252.0,
26
- # "errors"=>{"Email"=>"The Email field is required."},
27
- # "Code"=>"400",
28
- # "Url"=>"/v2/sdk-unit-tests/users/natural"}
29
- #
30
- # #<MangoPay::ResponseError: Internal Server Error>
31
- # {"Message"=>"Internal Server Error",
32
- # "Type"=>"other",
33
- # "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
34
- # "Date"=>1409047251.0,
35
- # "errors"=>nil,
36
- # "Code"=>"500",
37
- # "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
38
- class ResponseError < Error
39
-
40
- attr_reader :request_url, :code, :details
41
-
42
- def initialize(request_url, code, details)
43
- @request_url, @code, @details = request_url, code, details
44
-
45
- @details['Code'] = code
46
- @details['Url'] = request_url.request_uri
47
-
48
- super(message) if message
49
- end
50
-
51
- def type; @details['Type']; end
52
- def errors; @details['errors']; end
53
-
54
- def message;
55
- msg = @details['Message']
56
- msg += errors.sort.map {|k,v| " #{k}: #{v}"}.join if (errors && errors.is_a?(Hash))
57
- msg
58
- end
59
-
60
- end
61
- end
1
+ module MangoPay
2
+
3
+ # Generic error superclass for MangoPay specific errors.
4
+ # Currently never instantiated directly.
5
+ # Currently only single subclass used.
6
+ class Error < StandardError
7
+ end
8
+
9
+ # See http://docs.mangopay.com/api-references/response-codes-rules/
10
+ # and http://docs.mangopay.com/api-references/error-codes/
11
+ #
12
+ # Thrown from any MangoPay API call whenever
13
+ # it returns response with HTTP code != 200.
14
+ # Check @details hash for further info.
15
+ #
16
+ # Two example exceptions with details:
17
+ #
18
+ # #<MangoPay::ResponseError:
19
+ # One or several required parameters are missing or incorrect. [...]
20
+ # Email: The Email field is required.>
21
+ # {"Message"=>"One or several required parameters are missing or incorrect.
22
+ # An incorrect resource ID also raises this kind of error.",
23
+ # "Type"=>"param_error",
24
+ # "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
25
+ # "Date"=>1409047252.0,
26
+ # "errors"=>{"Email"=>"The Email field is required."},
27
+ # "Code"=>"400",
28
+ # "Url"=>"/v2/sdk-unit-tests/users/natural"}
29
+ #
30
+ # #<MangoPay::ResponseError: Internal Server Error>
31
+ # {"Message"=>"Internal Server Error",
32
+ # "Type"=>"other",
33
+ # "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
34
+ # "Date"=>1409047251.0,
35
+ # "errors"=>nil,
36
+ # "Code"=>"500",
37
+ # "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
38
+ class ResponseError < Error
39
+
40
+ attr_reader :request_url, :code, :details
41
+
42
+ def initialize(request_url, code, details)
43
+ @request_url, @code, @details = request_url, code, details
44
+
45
+ @details['Code'] = code
46
+ @details['Url'] = request_url.request_uri
47
+
48
+ super(message) if message
49
+ end
50
+
51
+ def type; @details['Type']; end
52
+ def errors; @details['errors']; end
53
+
54
+ def message;
55
+ msg = @details['Message']
56
+ msg += errors.sort.map {|k,v| " #{k}: #{v}"}.join if (errors && errors.is_a?(Hash))
57
+ msg
58
+ end
59
+
60
+ end
61
+ end
@@ -1,18 +1,18 @@
1
- module MangoPay
2
-
3
- # See http://docs.mangopay.com/api-references/events/
4
- class Event < Resource
5
-
6
- # Fetches list of events (PayIns, PayOuts, Transfers).
7
- #
8
- # Optional +filters+ is a hash accepting following keys:
9
- # - +page+, +per_page+, +sort+: pagination and sorting params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
10
- # - +EventType+: {PAYIN_NORMAL_CREATED, PAYIN_NORMAL_SUCCEEDED, PAYIN_NORMAL_FAILED etc...} (see http://docs.mangopay.com/api-references/events/)
11
- # - +BeforeDate+ (timestamp): filters events with Date _before_ this date
12
- # - +AfterDate+ (timestamp): filters events with Date _after_ this date
13
- #
14
- def self.fetch(filters={})
15
- MangoPay.request(:get, url(), {}, filters)
16
- end
17
- end
18
- end
1
+ module MangoPay
2
+
3
+ # See http://docs.mangopay.com/api-references/events/
4
+ class Event < Resource
5
+
6
+ # Fetches list of events (PayIns, PayOuts, Transfers).
7
+ #
8
+ # Optional +filters+ is a hash accepting following keys:
9
+ # - +page+, +per_page+, +sort+: pagination and sorting params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
10
+ # - +EventType+: {PAYIN_NORMAL_CREATED, PAYIN_NORMAL_SUCCEEDED, PAYIN_NORMAL_FAILED etc...} (see http://docs.mangopay.com/api-references/events/)
11
+ # - +BeforeDate+ (timestamp): filters events with Date _before_ this date
12
+ # - +AfterDate+ (timestamp): filters events with Date _after_ this date
13
+ #
14
+ def self.fetch(filters={})
15
+ MangoPay.request(:get, url(), {}, filters)
16
+ end
17
+ end
18
+ end
@@ -1,46 +1,46 @@
1
- module MangoPay
2
- module FilterParameters
3
-
4
- def self.request(body)
5
- begin
6
- body = JSON.load(body)
7
- rescue MultiJson::LoadError => e
8
- return body
9
- end
10
- filter_hash(body, req_confidential_params)
11
- JSON.dump(body)
12
- end
13
-
14
- def self.response(body)
15
- return '' if body.to_s.empty?
16
- body = JSON.load(body)
17
- filter_hash(body, res_confidential_params)
18
- JSON.dump(body)
19
- end
20
-
21
- private
22
-
23
- def self.filter_hash(hash, to_filter)
24
- hash.each do |k,v|
25
- if v.is_a?(Hash)
26
- filter_hash(v, to_filter)
27
- else
28
- hash[k] = '[FILTERED]' if to_filter.include?(k)
29
- end
30
- end
31
- end
32
-
33
- def self.res_confidential_params
34
- @@res_confidential_params ||= [
35
- 'access_token', 'AccessKey', 'IBAN', 'CardRegistrationURL',
36
- 'PreregistrationData', 'RedirectURL', 'RegistrationData',
37
- 'SecureModeRedirectUrl'
38
- ].freeze
39
- end
40
-
41
- def self.req_confidential_params
42
- @@req_confidential_params ||= ['File', 'IBAN'].freeze
43
- end
44
-
45
- end
46
- end
1
+ module MangoPay
2
+ module FilterParameters
3
+
4
+ def self.request(body)
5
+ begin
6
+ body = JSON.load(body)
7
+ rescue MultiJson::LoadError => e
8
+ return body
9
+ end
10
+ filter_hash(body, req_confidential_params)
11
+ JSON.dump(body)
12
+ end
13
+
14
+ def self.response(body)
15
+ return '' if body.to_s.empty?
16
+ body = JSON.load(body)
17
+ filter_hash(body, res_confidential_params)
18
+ JSON.dump(body)
19
+ end
20
+
21
+ private
22
+
23
+ def self.filter_hash(hash, to_filter)
24
+ hash.each do |k,v|
25
+ if v.is_a?(Hash)
26
+ filter_hash(v, to_filter)
27
+ else
28
+ hash[k] = '[FILTERED]' if to_filter.include?(k)
29
+ end
30
+ end
31
+ end
32
+
33
+ def self.res_confidential_params
34
+ @@res_confidential_params ||= [
35
+ 'access_token', 'AccessKey', 'IBAN', 'CardRegistrationURL',
36
+ 'PreregistrationData', 'RedirectURL', 'RegistrationData',
37
+ 'SecureModeRedirectUrl'
38
+ ].freeze
39
+ end
40
+
41
+ def self.req_confidential_params
42
+ @@req_confidential_params ||= ['File', 'IBAN'].freeze
43
+ end
44
+
45
+ end
46
+ end
data/lib/mangopay/hook.rb CHANGED
@@ -1,9 +1,9 @@
1
- module MangoPay
2
-
3
- # See http://docs.mangopay.com/api-references/notifications/
4
- class Hook < Resource
5
- include HTTPCalls::Create
6
- include HTTPCalls::Update
7
- include HTTPCalls::Fetch
8
- end
9
- end
1
+ module MangoPay
2
+
3
+ # See http://docs.mangopay.com/api-references/notifications/
4
+ class Hook < Resource
5
+ include HTTPCalls::Create
6
+ include HTTPCalls::Update
7
+ include HTTPCalls::Fetch
8
+ end
9
+ end
@@ -1,85 +1,85 @@
1
- module MangoPay
2
- module HTTPCalls
3
- module Create
4
- module ClassMethods
5
-
6
- def create(params, id = nil, idempotency_key = nil)
7
- # LEGACY SUPPORT FOR OLD SIGNATURE: def create(*id, params)
8
- if !params.is_a?(Hash) && id.is_a?(Hash)
9
- temp = params
10
- params = id
11
- id = temp
12
- end
13
- MangoPay.request(:post, url(id), params, {}, idempotency_key)
14
- end
15
- end
16
-
17
- def self.included(base)
18
- base.extend(ClassMethods)
19
- end
20
- end
21
-
22
- module Update
23
- module ClassMethods
24
- def update(id = nil, params = {})
25
- MangoPay.request(:put, url(id), params)
26
- end
27
- end
28
-
29
- def self.included(base)
30
- base.extend(ClassMethods)
31
- end
32
- end
33
-
34
- module Fetch
35
- module ClassMethods
36
-
37
- # - Fetching _single_entity_ by +id+:
38
- #
39
- # MangoPay::User.fetch("user-id") # => {"FirstName"=>"Mango", "LastName"=>"Pay", ...}
40
- #
41
- # - or fetching _multiple_entities_ with _optional_ +filters+ hash,
42
- # including _pagination_ and _sorting_ params
43
- # +page+, +per_page+, +sort+ (see http://docs.mangopay.com/api-references/pagination/):
44
- #
45
- # MangoPay::User.fetch() # => [{...}, ...]: list of user data hashes (10 per page by default)
46
- # MangoPay::User.fetch({'page' => 2, 'per_page' => 3}) # => list of 3 hashes from 2nd page
47
- # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc'}) # => bank accounts by user, sorting by date descending (with default pagination)
48
- # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc', 'page' => 2, 'per_page' => 3}) # both sorting and pagination params provided
49
- #
50
- # - For paginated queries the +filters+ param will be supplemented by +total_pages+ and +total_items+ info:
51
- #
52
- # MangoPay::User.fetch(filter = {'page' => 2, 'per_page' => 3})
53
- # filter # => {"page"=>2, "per_page"=>3, "total_pages"=>1969, "total_items"=>5905}
54
- #
55
- def fetch(id_or_filters = nil)
56
- id, filters = HTTPCalls::Fetch.parse_id_or_filters(id_or_filters)
57
- response = MangoPay.request(:get, url(id), {}, filters)
58
- end
59
- end
60
-
61
- def self.included(base)
62
- base.extend(ClassMethods)
63
- end
64
-
65
- def self.parse_id_or_filters(id_or_filters = nil)
66
- id_or_filters.is_a?(Hash) ? [nil, id_or_filters] : [id_or_filters, {}]
67
- end
68
- end
69
-
70
- module Refund
71
- module ClassMethods
72
-
73
- # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-pay-in/
74
- # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-transfer/
75
- def refund(id = nil, params = {}, idempotency_key = nil)
76
- MangoPay.request(:post, url(id) + '/refunds', params, {}, idempotency_key)
77
- end
78
- end
79
-
80
- def self.included(base)
81
- base.extend(ClassMethods)
82
- end
83
- end
84
- end
85
- end
1
+ module MangoPay
2
+ module HTTPCalls
3
+ module Create
4
+ module ClassMethods
5
+
6
+ def create(params, id = nil, idempotency_key = nil)
7
+ # LEGACY SUPPORT FOR OLD SIGNATURE: def create(*id, params)
8
+ if !params.is_a?(Hash) && id.is_a?(Hash)
9
+ temp = params
10
+ params = id
11
+ id = temp
12
+ end
13
+ MangoPay.request(:post, url(id), params, {}, idempotency_key)
14
+ end
15
+ end
16
+
17
+ def self.included(base)
18
+ base.extend(ClassMethods)
19
+ end
20
+ end
21
+
22
+ module Update
23
+ module ClassMethods
24
+ def update(id = nil, params = {})
25
+ MangoPay.request(:put, url(id), params)
26
+ end
27
+ end
28
+
29
+ def self.included(base)
30
+ base.extend(ClassMethods)
31
+ end
32
+ end
33
+
34
+ module Fetch
35
+ module ClassMethods
36
+
37
+ # - Fetching _single_entity_ by +id+:
38
+ #
39
+ # MangoPay::User.fetch("user-id") # => {"FirstName"=>"Mango", "LastName"=>"Pay", ...}
40
+ #
41
+ # - or fetching _multiple_entities_ with _optional_ +filters+ hash,
42
+ # including _pagination_ and _sorting_ params
43
+ # +page+, +per_page+, +sort+ (see http://docs.mangopay.com/api-references/pagination/):
44
+ #
45
+ # MangoPay::User.fetch() # => [{...}, ...]: list of user data hashes (10 per page by default)
46
+ # MangoPay::User.fetch({'page' => 2, 'per_page' => 3}) # => list of 3 hashes from 2nd page
47
+ # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc'}) # => bank accounts by user, sorting by date descending (with default pagination)
48
+ # MangoPay::BankAccount.fetch(user_id, {'sort' => 'CreationDate:desc', 'page' => 2, 'per_page' => 3}) # both sorting and pagination params provided
49
+ #
50
+ # - For paginated queries the +filters+ param will be supplemented by +total_pages+ and +total_items+ info:
51
+ #
52
+ # MangoPay::User.fetch(filter = {'page' => 2, 'per_page' => 3})
53
+ # filter # => {"page"=>2, "per_page"=>3, "total_pages"=>1969, "total_items"=>5905}
54
+ #
55
+ def fetch(id_or_filters = nil)
56
+ id, filters = HTTPCalls::Fetch.parse_id_or_filters(id_or_filters)
57
+ response = MangoPay.request(:get, url(id), {}, filters)
58
+ end
59
+ end
60
+
61
+ def self.included(base)
62
+ base.extend(ClassMethods)
63
+ end
64
+
65
+ def self.parse_id_or_filters(id_or_filters = nil)
66
+ id_or_filters.is_a?(Hash) ? [nil, id_or_filters] : [id_or_filters, {}]
67
+ end
68
+ end
69
+
70
+ module Refund
71
+ module ClassMethods
72
+
73
+ # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-pay-in/
74
+ # See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-transfer/
75
+ def refund(id = nil, params = {}, idempotency_key = nil)
76
+ MangoPay.request(:post, url(id) + '/refunds', params, {}, idempotency_key)
77
+ end
78
+ end
79
+
80
+ def self.included(base)
81
+ base.extend(ClassMethods)
82
+ end
83
+ end
84
+ end
85
+ end
data/lib/mangopay/json.rb CHANGED
@@ -1,14 +1,14 @@
1
- # We can use MultiJson directly , why do we even have this module ?
2
- module MangoPay
3
- module JSON
4
- class << self
5
- def dump(*args)
6
- MultiJson.dump(*args)
7
- end
8
-
9
- def load(*args)
10
- MultiJson.load(*args)
11
- end
12
- end
13
- end
14
- end
1
+ # We can use MultiJson directly , why do we even have this module ?
2
+ module MangoPay
3
+ module JSON
4
+ class << self
5
+ def dump(*args)
6
+ MultiJson.dump(*args)
7
+ end
8
+
9
+ def load(*args)
10
+ MultiJson.load(*args)
11
+ end
12
+ end
13
+ end
14
+ end