mangopay 3.0.11 → 3.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/README.md +26 -0
- data/lib/mangopay.rb +97 -105
- data/lib/mangopay/bank_account.rb +4 -4
- data/lib/mangopay/card.rb +2 -2
- data/lib/mangopay/card_registration.rb +3 -3
- data/lib/mangopay/client.rb +1 -1
- data/lib/mangopay/errors.rb +35 -1
- data/lib/mangopay/event.rb +16 -16
- data/lib/mangopay/hook.rb +3 -3
- data/lib/mangopay/http_calls.rb +1 -1
- data/lib/mangopay/json.rb +6 -15
- data/lib/mangopay/kyc_document.rb +3 -3
- data/lib/mangopay/legal_user.rb +2 -2
- data/lib/mangopay/natural_user.rb +2 -2
- data/lib/mangopay/pay_in.rb +47 -0
- data/lib/mangopay/pay_out.rb +13 -0
- data/lib/mangopay/pre_authorization.rb +11 -0
- data/lib/mangopay/refund.rb +1 -1
- data/lib/mangopay/resource.rb +3 -3
- data/lib/mangopay/transaction.rb +1 -1
- data/lib/mangopay/transfer.rb +3 -3
- data/lib/mangopay/user.rb +3 -3
- data/lib/mangopay/version.rb +1 -1
- data/lib/mangopay/wallet.rb +5 -5
- data/mangopay.gemspec +3 -6
- data/spec/{lib/mangopay → mangopay}/authorization_token_spec.rb +70 -72
- data/spec/{lib/mangopay → mangopay}/bank_account_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/card_registration_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/client_spec.rb +2 -4
- data/spec/{lib/mangopay → mangopay}/configuration_spec.rb +18 -20
- data/spec/{lib/mangopay → mangopay}/event_spec.rb +31 -33
- data/spec/{lib/mangopay → mangopay}/fetch_filters_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/hook_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/kyc_document_spec.rb +58 -60
- data/spec/{lib/mangopay → mangopay}/payin_bankwire_direct_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/payin_card_direct_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/payin_card_web_spec.rb +54 -56
- data/spec/{lib/mangopay → mangopay}/payin_preauthorized_direct_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/payout_bankwire_spec.rb +54 -56
- data/spec/{lib/mangopay → mangopay}/preauthorization_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/refund_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/shared_resources.rb +0 -4
- data/spec/{lib/mangopay → mangopay}/transaction_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/transfer_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/user_spec.rb +0 -2
- data/spec/{lib/mangopay → mangopay}/wallet_spec.rb +87 -89
- data/spec/spec_helper.rb +28 -20
- metadata +53 -95
- data/lib/mangopay/payin.rb +0 -47
- data/lib/mangopay/payout.rb +0 -13
- data/lib/mangopay/preauthorization.rb +0 -11
data/lib/mangopay/hook.rb
CHANGED
data/lib/mangopay/http_calls.rb
CHANGED
@@ -46,7 +46,7 @@ module MangoPay
|
|
46
46
|
# filter # => {"page"=>2, "per_page"=>3, "total_pages"=>1969, "total_items"=>5905}
|
47
47
|
#
|
48
48
|
def fetch(id_or_filters = nil)
|
49
|
-
id, filters =
|
49
|
+
id, filters = HTTPCalls::Fetch.parse_id_or_filters(id_or_filters)
|
50
50
|
response = MangoPay.request(:get, url(id), {}, filters)
|
51
51
|
end
|
52
52
|
end
|
data/lib/mangopay/json.rb
CHANGED
@@ -1,22 +1,13 @@
|
|
1
|
+
# We can use MultiJson directly , why do we even have this module ?
|
1
2
|
module MangoPay
|
2
3
|
module JSON
|
3
4
|
class << self
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def load(*args)
|
10
|
-
MultiJson.load(*args)
|
11
|
-
end
|
12
|
-
else
|
13
|
-
def dump(*args)
|
14
|
-
MultiJson.encode(*args)
|
15
|
-
end
|
5
|
+
def dump(*args)
|
6
|
+
MultiJson.dump(*args)
|
7
|
+
end
|
16
8
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
9
|
+
def load(*args)
|
10
|
+
MultiJson.load(*args)
|
20
11
|
end
|
21
12
|
end
|
22
13
|
end
|
@@ -31,16 +31,16 @@ module MangoPay
|
|
31
31
|
# normally it returns 204 HTTP code on success
|
32
32
|
begin
|
33
33
|
MangoPay.request(:post, url(user_id, document_id) + '/pages', {'File' => base64})
|
34
|
-
rescue
|
34
|
+
rescue ResponseError => ex
|
35
35
|
raise ex unless ex.code == '204'
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
def url(user_id, document_id = nil)
|
40
40
|
if document_id
|
41
|
-
"
|
41
|
+
"#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents/#{CGI.escape(document_id.to_s)}"
|
42
42
|
else
|
43
|
-
"
|
43
|
+
"#{MangoPay.api_path}/users/#{CGI.escape(user_id.to_s)}/KYC/documents"
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/lib/mangopay/legal_user.rb
CHANGED
@@ -3,9 +3,9 @@ module MangoPay
|
|
3
3
|
|
4
4
|
def self.url(id = nil)
|
5
5
|
if id
|
6
|
-
"
|
6
|
+
"#{MangoPay.api_path}/users/legal/#{CGI.escape(id.to_s)}"
|
7
7
|
else
|
8
|
-
"
|
8
|
+
"#{MangoPay.api_path}/users/legal"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -3,9 +3,9 @@ module MangoPay
|
|
3
3
|
|
4
4
|
def self.url(id = nil)
|
5
5
|
if id
|
6
|
-
"
|
6
|
+
"#{MangoPay.api_path}/users/natural/#{CGI.escape(id.to_s)}"
|
7
7
|
else
|
8
|
-
"
|
8
|
+
"#{MangoPay.api_path}/users/natural"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module MangoPay
|
2
|
+
class PayIn < Resource
|
3
|
+
include HTTPCalls::Fetch
|
4
|
+
include HTTPCalls::Refund
|
5
|
+
|
6
|
+
module Card
|
7
|
+
|
8
|
+
class Web < Resource
|
9
|
+
include HTTPCalls::Create
|
10
|
+
def self.url(*)
|
11
|
+
"#{MangoPay.api_path}/payins/card/#{CGI.escape(class_name.downcase)}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Direct < Resource
|
16
|
+
include HTTPCalls::Create
|
17
|
+
def self.url(*)
|
18
|
+
"#{MangoPay.api_path}/payins/card/#{CGI.escape(class_name.downcase)}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
module PreAuthorized
|
25
|
+
|
26
|
+
class Direct < Resource
|
27
|
+
include HTTPCalls::Create
|
28
|
+
def self.url(*)
|
29
|
+
"#{MangoPay.api_path}/payins/preauthorized/direct"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
module BankWire
|
36
|
+
|
37
|
+
class Direct < Resource
|
38
|
+
include HTTPCalls::Create
|
39
|
+
def self.url(*)
|
40
|
+
"#{MangoPay.api_path}/payins/bankwire/direct"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/mangopay/refund.rb
CHANGED
data/lib/mangopay/resource.rb
CHANGED
@@ -3,7 +3,7 @@ module MangoPay
|
|
3
3
|
class Resource
|
4
4
|
class << self
|
5
5
|
def class_name
|
6
|
-
name.split('::')
|
6
|
+
name.split('::').last
|
7
7
|
end
|
8
8
|
|
9
9
|
def url(id = nil)
|
@@ -11,9 +11,9 @@ module MangoPay
|
|
11
11
|
raise NotImplementedError.new('Resource is an abstract class. Do not use it directly.')
|
12
12
|
end
|
13
13
|
if id
|
14
|
-
"
|
14
|
+
"#{MangoPay.api_path}/#{CGI.escape(class_name.downcase)}s/#{CGI.escape(id.to_s)}"
|
15
15
|
else
|
16
|
-
"
|
16
|
+
"#{MangoPay.api_path}/#{CGI.escape(class_name.downcase)}s"
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/lib/mangopay/transaction.rb
CHANGED
data/lib/mangopay/transfer.rb
CHANGED
data/lib/mangopay/user.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module MangoPay
|
2
2
|
class User < Resource
|
3
|
-
include
|
4
|
-
include
|
5
|
-
include
|
3
|
+
include HTTPCalls::Create
|
4
|
+
include HTTPCalls::Update
|
5
|
+
include HTTPCalls::Fetch
|
6
6
|
class << self
|
7
7
|
# Fetches list of wallets belonging to the given +user_id+.
|
8
8
|
# Optional +filters+ is a hash accepting following keys:
|
data/lib/mangopay/version.rb
CHANGED
data/lib/mangopay/wallet.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
module MangoPay
|
2
2
|
class Wallet < Resource
|
3
|
-
include
|
4
|
-
include
|
5
|
-
include
|
3
|
+
include HTTPCalls::Create
|
4
|
+
include HTTPCalls::Update
|
5
|
+
include HTTPCalls::Fetch
|
6
6
|
|
7
7
|
# Fetches list of transactions belonging to the given +wallet_id+.
|
8
8
|
# Optional +filters+ is a hash accepting following keys:
|
9
9
|
# - +page+, +per_page+: pagination params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
|
10
10
|
# - other keys specific for transactions filtering (see MangoPay::Transaction.fetch)
|
11
|
-
def self.transactions(wallet_id, filters={})
|
12
|
-
|
11
|
+
def self.transactions(wallet_id, filters = {})
|
12
|
+
Transaction.fetch(wallet_id, filters)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/mangopay.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
2
2
|
|
3
3
|
require 'mangopay/version'
|
4
4
|
|
@@ -20,11 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_dependency('multi_json', '>= 1.7.7')
|
22
22
|
|
23
|
-
s.add_development_dependency('rake', '
|
24
|
-
s.add_development_dependency('rspec', '
|
25
|
-
s.add_development_dependency('capybara', '~> 2.1.0')
|
26
|
-
s.add_development_dependency('capybara-webkit', '~> 1.0.0')
|
27
|
-
s.add_development_dependency('rails', '~> 4.0.0')
|
23
|
+
s.add_development_dependency('rake', '>= 10.1.0')
|
24
|
+
s.add_development_dependency('rspec', '>= 3.0.0')
|
28
25
|
|
29
26
|
s.files = `git ls-files`.split("\n")
|
30
27
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
@@ -1,72 +1,70 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
MangoPay::AuthorizationToken::Manager.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
token2
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
MangoPay::
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
token2
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
file_path
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
f
|
65
|
-
txt
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
1
|
+
describe MangoPay::AuthorizationToken do
|
2
|
+
|
3
|
+
_default_static_storage = MangoPay::AuthorizationToken::Manager.storage
|
4
|
+
_new_file_storage = MangoPay::AuthorizationToken::FileStorage.new
|
5
|
+
|
6
|
+
it 'uses StaticStorage strategy by default' do
|
7
|
+
storage = _default_static_storage
|
8
|
+
expect(storage).to be_kind_of MangoPay::AuthorizationToken::StaticStorage
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'allows set different storage strategies' do
|
12
|
+
|
13
|
+
# set to FileStorage
|
14
|
+
file_storage = _new_file_storage
|
15
|
+
MangoPay::AuthorizationToken::Manager.storage = file_storage
|
16
|
+
storage = MangoPay::AuthorizationToken::Manager.storage
|
17
|
+
expect(storage).to be file_storage
|
18
|
+
|
19
|
+
# reset to StaticStorage
|
20
|
+
static_storage = _default_static_storage
|
21
|
+
MangoPay::AuthorizationToken::Manager.storage = static_storage
|
22
|
+
storage = MangoPay::AuthorizationToken::Manager.storage
|
23
|
+
expect(storage).to be static_storage
|
24
|
+
end
|
25
|
+
|
26
|
+
describe MangoPay::AuthorizationToken::StaticStorage do
|
27
|
+
it 'shares tokens between calls' do
|
28
|
+
MangoPay::AuthorizationToken::Manager.storage = _default_static_storage
|
29
|
+
users1 = MangoPay::User.fetch
|
30
|
+
token1 = MangoPay::AuthorizationToken::Manager.get_token
|
31
|
+
users2 = MangoPay::User.fetch
|
32
|
+
token2 = MangoPay::AuthorizationToken::Manager.get_token
|
33
|
+
expect(token1).to eq token2
|
34
|
+
expect(token1).to be token2 # moreover, it's the same instance
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe MangoPay::AuthorizationToken::FileStorage do
|
39
|
+
it 'shares tokens between calls' do
|
40
|
+
MangoPay::AuthorizationToken::Manager.storage = _new_file_storage
|
41
|
+
|
42
|
+
users1 = MangoPay::User.fetch
|
43
|
+
token1 = MangoPay::AuthorizationToken::Manager.get_token
|
44
|
+
users2 = MangoPay::User.fetch
|
45
|
+
token2 = MangoPay::AuthorizationToken::Manager.get_token
|
46
|
+
expect(token1).to eq token2
|
47
|
+
expect(token1).not_to be token2 # it's NOT the same instance
|
48
|
+
|
49
|
+
MangoPay::AuthorizationToken::Manager.storage = _default_static_storage # cleanup
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'uses temp file with serialized token' do
|
53
|
+
MangoPay::AuthorizationToken::Manager.storage = _new_file_storage
|
54
|
+
|
55
|
+
file_path = _new_file_storage.file_path
|
56
|
+
dir_path = MangoPay.configuration.temp_dir
|
57
|
+
expect(file_path.start_with? dir_path).to be(true)
|
58
|
+
|
59
|
+
token = MangoPay::AuthorizationToken::Manager.get_token
|
60
|
+
expect(File.exists? file_path).to be(true)
|
61
|
+
|
62
|
+
f = File.open(file_path, File::RDONLY)
|
63
|
+
txt = f.read
|
64
|
+
f.close
|
65
|
+
expect(txt.include? token['access_token']).to be(true)
|
66
|
+
|
67
|
+
MangoPay::AuthorizationToken::Manager.storage = _default_static_storage # cleanup
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|