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

Sign up to get free protection for your applications and to get access to all the features.
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