finix 0.7 → 0.8
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 +8 -8
- data/circle.yml +10 -1
- data/lib/finix.rb +8 -13
- data/lib/finix/pagination.rb +5 -4
- data/lib/finix/resources.rb +2 -1
- data/lib/finix/resources/authorization.rb +1 -1
- data/lib/finix/resources/identity.rb +2 -8
- data/lib/finix/resources/merchant.rb +1 -0
- data/lib/finix/resources/payment_instrument.rb +15 -0
- data/lib/finix/resources/resource.rb +8 -8
- data/lib/finix/resources/verifiable.rb +3 -6
- data/lib/finix/utils.rb +0 -69
- data/lib/finix/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Zjg0YmY4ZWE5ZDU2MDdlNzc3Mzg4MGM5YTU2YTAxZmFhY2YwZjNjNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZmM5ODFlMzBlYzZlMWVjZmQwMTVkMGYyY2FjZDU0NDhlYTNjZmVlMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjJmNGRlZmFlZDA2NjAxNTM5NWE0MjNhZGE1ZGVjN2Y2ODM2ZTA2NTRiODRh
|
10
|
+
YzQ2NWQ0MDBmMTNkYjA1NTYwYTIyN2NiOTVkYjVmOTVkM2FiNmFkMTBlNTFi
|
11
|
+
NWVmN2RmYmM2YTViZWI0ZmMyZDQ3NGEyZTYzYTdiZTZlNzNhYjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjIzYzhiMDJhZjNlNDE3OGFiZDU1MjFhYzk1Y2JhYTQwZTk5NThiNGU3NzZi
|
14
|
+
MDZhMzVhOGFkN2M0NjhkYzg1YjRjYWZjZmU1MDI3ZTk0OTNmN2QxMzRmODg1
|
15
|
+
N2IwMjI4MmEzYzMwZmExNWRkNWY2NDFlYmE4ZDBiOWIxNDkyMDc=
|
data/circle.yml
CHANGED
@@ -18,4 +18,13 @@ test:
|
|
18
18
|
- rvm $RUBY_VERSIONS --verbose do bundle exec rake test
|
19
19
|
|
20
20
|
post:
|
21
|
-
- cp -Rf .report/ $CIRCLE_ARTIFACTS
|
21
|
+
- cp -Rf .report/ $CIRCLE_ARTIFACTS
|
22
|
+
|
23
|
+
#deployment:
|
24
|
+
# release:
|
25
|
+
# tag: /v[0-9]+(\.[0-9]+)*/
|
26
|
+
# owner: finix-payments
|
27
|
+
# commands:
|
28
|
+
# - echo "--\n:rubygems_api_key: ${RUBYGEMS_API_KEY}" > ~/.gem/credentials
|
29
|
+
# - gem build *.gemspec
|
30
|
+
# - gem push *.gem
|
data/lib/finix.rb
CHANGED
@@ -5,7 +5,7 @@ require 'finix/error'
|
|
5
5
|
module Finix
|
6
6
|
|
7
7
|
@client = nil
|
8
|
-
@config = {:root_url=>'https://localhost/processing'}
|
8
|
+
@config = {:root_url => 'https://localhost/processing'}
|
9
9
|
@hypermedia_registry = {}
|
10
10
|
|
11
11
|
class << self
|
@@ -30,25 +30,20 @@ module Finix
|
|
30
30
|
URI.parse(href).path.sub(/\/$/, '').split('/')
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
cls
|
33
|
+
def get_href(cls)
|
34
|
+
href = Finix.hypermedia_registry.key(cls)
|
35
|
+
href = Finix.hypermedia_registry.key(cls.superclass) if href.nil?
|
36
|
+
href
|
39
37
|
end
|
40
38
|
|
41
|
-
def
|
39
|
+
def from_hypermedia_registry(href, attributes={})
|
42
40
|
split_uri = split_the_href(href)
|
43
41
|
split_uri.reverse!.each do |resource|
|
44
42
|
cls = Finix.hypermedia_registry[resource]
|
43
|
+
cls = cls.send :hypermedia_subtype, attributes if not cls.nil? and cls.respond_to?(:hypermedia_subtype)
|
45
44
|
return cls unless cls.nil?
|
46
45
|
end
|
47
|
-
|
48
|
-
|
49
|
-
def is_collection(href)
|
50
|
-
split_uri = split_the_href(href)
|
51
|
-
Finix.hypermedia_registry.has_key?(split_uri.last)
|
46
|
+
Finix::UnknownResource
|
52
47
|
end
|
53
48
|
|
54
49
|
def get(*args, &block)
|
data/lib/finix/pagination.rb
CHANGED
@@ -49,9 +49,7 @@ module Finix
|
|
49
49
|
attrs = attrs.attributes if attrs.is_a?(Finix::Resource)
|
50
50
|
attrs = Finix::Utils.indifferent_read_access attrs
|
51
51
|
href = @hyperlinks[:self]
|
52
|
-
|
53
|
-
@resource_class = Finix.from_href(href)
|
54
|
-
end
|
52
|
+
@resource_class = Finix.from_hypermedia_registry href, attrs
|
55
53
|
@resource_class.new(attrs, href).save
|
56
54
|
end
|
57
55
|
|
@@ -70,7 +68,10 @@ module Finix
|
|
70
68
|
if body.has_key? '_embedded'
|
71
69
|
resource_name, resources = body.delete('_embedded').first
|
72
70
|
@resource_class = Finix.from_hypermedia_registry resource_name
|
73
|
-
@attributes['items'] = resources.map
|
71
|
+
@attributes['items'] = resources.map do |attrs|
|
72
|
+
cls = Finix.from_hypermedia_registry resource_name, attrs
|
73
|
+
cls.construct_from_response attrs
|
74
|
+
end
|
74
75
|
@attributes['page'] = body.delete('page')
|
75
76
|
end
|
76
77
|
end
|
data/lib/finix/resources.rb
CHANGED
@@ -6,7 +6,7 @@ module Finix
|
|
6
6
|
|
7
7
|
define_hypermedia_types [:identities]
|
8
8
|
|
9
|
-
def
|
9
|
+
def provision_merchant(attrs={})
|
10
10
|
self.merchants.create(attrs)
|
11
11
|
end
|
12
12
|
|
@@ -15,13 +15,7 @@ module Finix
|
|
15
15
|
attrs.identity = self.id
|
16
16
|
attrs = attrs.attributes
|
17
17
|
else
|
18
|
-
attrs['identity'] = self.id
|
19
|
-
end
|
20
|
-
|
21
|
-
if attrs['type'] == 'PAYMENT_CARD'
|
22
|
-
self.payment_instruments.resource_class = Finix::PaymentCard
|
23
|
-
elsif attrs['type'] == 'BANK_ACCOUNT'
|
24
|
-
self.payment_instruments.resource_class = Finix::BankAccount
|
18
|
+
attrs['identity'] = self.id
|
25
19
|
end
|
26
20
|
|
27
21
|
self.payment_instruments.create(attrs)
|
@@ -2,7 +2,22 @@ module Finix
|
|
2
2
|
class PaymentInstrument
|
3
3
|
include Finix::Resource
|
4
4
|
include Finix::HypermediaRegistry
|
5
|
+
include Finix::Verifiable
|
5
6
|
|
6
7
|
define_hypermedia_types [:payment_instruments]
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def hypermedia_subtype(response)
|
11
|
+
unless response.nil?
|
12
|
+
type = response['instrument_type'] || response['type']
|
13
|
+
if type == 'PAYMENT_CARD'
|
14
|
+
return Finix::PaymentCard
|
15
|
+
elsif type == 'BANK_ACCOUNT'
|
16
|
+
return Finix::BankAccount
|
17
|
+
end
|
18
|
+
end
|
19
|
+
self
|
20
|
+
end
|
21
|
+
end
|
7
22
|
end
|
8
23
|
end
|
@@ -38,10 +38,9 @@ module Finix
|
|
38
38
|
options = options.is_a?(Finix::Resource) ? options.attributes : options
|
39
39
|
@attributes = @attributes.merge options
|
40
40
|
href ||= @hyperlinks[:self]
|
41
|
-
# href = @attributes.delete('href')
|
42
41
|
method = :post
|
43
42
|
if href.nil?
|
44
|
-
href = Finix.
|
43
|
+
href = Finix.get_href self.class
|
45
44
|
elsif not @attributes[:id].nil?
|
46
45
|
method = :put
|
47
46
|
end
|
@@ -59,9 +58,7 @@ module Finix
|
|
59
58
|
def sanitize
|
60
59
|
to_submit = {}
|
61
60
|
@attributes.each do |key, value|
|
62
|
-
|
63
|
-
to_submit[key] = value
|
64
|
-
end
|
61
|
+
to_submit[key] = value unless value.is_a? Finix::Resource
|
65
62
|
end
|
66
63
|
to_submit
|
67
64
|
end
|
@@ -78,14 +75,11 @@ module Finix
|
|
78
75
|
fresh = self.class.construct_from_response the_response.body
|
79
76
|
else
|
80
77
|
fresh = self.find(@hyperlinks[:self])
|
81
|
-
# fresh = self.find(@attributes[:href])
|
82
78
|
end
|
83
79
|
fresh and copy_from fresh
|
84
80
|
self
|
85
81
|
end
|
86
82
|
|
87
|
-
# alias refresh load!
|
88
|
-
|
89
83
|
def copy_from(other)
|
90
84
|
other.instance_variables.each do |ivar|
|
91
85
|
instance_variable_set ivar, other.instance_variable_get(ivar)
|
@@ -96,6 +90,11 @@ module Finix
|
|
96
90
|
"#{self.class.name.split('::').last || ''} #{@attributes}"
|
97
91
|
end
|
98
92
|
|
93
|
+
def inspect
|
94
|
+
insp = super.inspect
|
95
|
+
"#{insp.split('::').last || ''}"
|
96
|
+
end
|
97
|
+
|
99
98
|
def self.included(base)
|
100
99
|
base.extend ClassMethods
|
101
100
|
end
|
@@ -132,6 +131,7 @@ module Finix
|
|
132
131
|
end
|
133
132
|
|
134
133
|
alias find fetch
|
134
|
+
alias retrieve fetch
|
135
135
|
end
|
136
136
|
|
137
137
|
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
module Finix
|
2
2
|
module Verifiable
|
3
|
-
def
|
3
|
+
def verify(attrs={})
|
4
4
|
attrs = attrs.attributes if attrs.is_a?(Finix::Resource)
|
5
|
-
unless self.verifications.nil?
|
6
|
-
|
7
|
-
else
|
8
|
-
raise NotImplementedError.new 'not found `verifications` rel'
|
9
|
-
end
|
5
|
+
return self.verifications.create(attrs) unless self.verifications.nil?
|
6
|
+
raise NotImplementedError.new 'not found `verifications` rel'
|
10
7
|
end
|
11
8
|
end
|
12
9
|
end
|
data/lib/finix/utils.rb
CHANGED
@@ -1,45 +1,10 @@
|
|
1
1
|
module Finix
|
2
|
-
|
3
2
|
module Utils
|
4
3
|
|
5
4
|
def callable(callable_or_not)
|
6
5
|
callable_or_not.respond_to?(:call) ? callable_or_not : lambda { callable_or_not }
|
7
6
|
end
|
8
7
|
|
9
|
-
def camelize(underscored_word)
|
10
|
-
underscored_word.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }
|
11
|
-
end
|
12
|
-
|
13
|
-
def classify(table_name)
|
14
|
-
camelize singularize(table_name.to_s.sub(/.*\./, ''))
|
15
|
-
end
|
16
|
-
|
17
|
-
def demodulize(class_name_in_module)
|
18
|
-
class_name_in_module.to_s.sub(/^.*::/, '')
|
19
|
-
end
|
20
|
-
|
21
|
-
def pluralize(word)
|
22
|
-
word.to_s.sub(/([^s])$/, '\1s')
|
23
|
-
end
|
24
|
-
|
25
|
-
def singularize(word)
|
26
|
-
word.to_s.sub(/s$/, '').sub(/ie$/, 'y')
|
27
|
-
end
|
28
|
-
|
29
|
-
def underscore(camel_cased_word)
|
30
|
-
word = camel_cased_word.to_s.dup
|
31
|
-
word.gsub!(/::/, '/')
|
32
|
-
word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
33
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
34
|
-
word.tr! '-', '_'
|
35
|
-
word.downcase!
|
36
|
-
word
|
37
|
-
end
|
38
|
-
|
39
|
-
# def extract_href_from_object(object)
|
40
|
-
# object.respond_to?(:href) ? object.href : object
|
41
|
-
# end
|
42
|
-
|
43
8
|
def indifferent_read_access(base = {})
|
44
9
|
indifferent = Hash.new do |hash, key|
|
45
10
|
hash[key.to_s] if key.is_a? Symbol
|
@@ -69,40 +34,6 @@ module Finix
|
|
69
34
|
indifferent
|
70
35
|
end
|
71
36
|
|
72
|
-
# def stringify_keys!(hash)
|
73
|
-
# hash.keys.each do |key|
|
74
|
-
# stringify_keys! hash[key] if hash[key].is_a? Hash
|
75
|
-
# hash[key.to_s] = hash.delete key if key.is_a? Symbol
|
76
|
-
# end
|
77
|
-
# end
|
78
|
-
|
79
|
-
# Validate all keys in a hash match *valid keys, raising ArgumentError on a mismatch.
|
80
|
-
# Note that keys are NOT treated indifferently, meaning if you use strings for keys but assert symbols
|
81
|
-
# as keys, this will fail.
|
82
|
-
#
|
83
|
-
# ==== Examples
|
84
|
-
# { :name => "Rob", :years => "28" }.assert_valid_keys(:name, :age) # => raises "ArgumentError: Unknown key(s): years"
|
85
|
-
# { :name => "Rob", :age => "28" }.assert_valid_keys("name", "age") # => raises "ArgumentError: Unknown key(s): name, age"
|
86
|
-
# { :name => "Rob", :age => "28" }.assert_valid_keys(:name, :age) # => passes, raises nothing
|
87
|
-
# def assert_valid_keys(hash, *valid_keys)
|
88
|
-
# unknown_keys = hash.keys - [valid_keys].flatten
|
89
|
-
# raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(', ')}") unless unknown_keys.empty?
|
90
|
-
# end
|
91
|
-
|
92
|
-
# http://pablomanrubia.com/2011/03/extending-ruby-to-validate-required-keys-in-a-hash-table/
|
93
|
-
#def assert_required_keys(hash, params)
|
94
|
-
# params[:required] ||= []
|
95
|
-
# params[:optional] ||= []
|
96
|
-
# assert_valid_keys(hash, params[:required] + params[:optional])
|
97
|
-
# pending_keys = params[:required] - hash.keys
|
98
|
-
# raise(ArgumentError, "Required key(s) not present: #{pending_keys.join(', ')}") unless pending_keys.empty?
|
99
|
-
#end
|
100
|
-
|
101
|
-
# def assert_required_keys(hash, params)
|
102
|
-
# params[:required] ||= []
|
103
|
-
# pending_keys = params[:required] - hash.keys
|
104
|
-
# raise(ArgumentError, "Required key(s) not present: #{pending_keys.join(', ')}") unless pending_keys.empty?
|
105
|
-
# end
|
106
37
|
extend self
|
107
38
|
end
|
108
39
|
end
|
data/lib/finix/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- finix-payments
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|