mangopay 3.0.11 → 3.0.12
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.
- 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
|