iban-lookup 1.0.0 → 1.0.1
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.
- data/lib/iban-lookup.rb +118 -49
- data/lib/iban-lookup/version.rb +1 -1
- metadata +73 -115
- checksums.yaml +0 -7
data/lib/iban-lookup.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'active_support/all'
|
2
2
|
require 'faraday'
|
3
|
-
require 'devnull'
|
3
|
+
# require 'devnull'
|
4
4
|
|
5
5
|
# Lookup a new iban number
|
6
6
|
#
|
@@ -13,7 +13,7 @@ module IbanLookup
|
|
13
13
|
attr_accessor :api_key, :service, :cache, :logger
|
14
14
|
|
15
15
|
def initialize
|
16
|
-
@logger ||= Logger.new(
|
16
|
+
@logger ||= Logger.new(STDOUT)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -29,71 +29,140 @@ module IbanLookup
|
|
29
29
|
|
30
30
|
class IbanCom
|
31
31
|
URL = 'https://www.iban.com'
|
32
|
-
ENDPOINT = 'clients/api/ibanv2.php'
|
33
32
|
|
34
|
-
attr_reader :
|
33
|
+
attr_reader :object
|
35
34
|
|
36
|
-
def initialize(iban)
|
37
|
-
@
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
35
|
+
def initialize(iban = nil, options = {})
|
36
|
+
@object = if iban
|
37
|
+
IbanChecker.new(iban)
|
38
|
+
else
|
39
|
+
IbanCalc.new(options)
|
40
|
+
end
|
42
41
|
end
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
json.fetch('validations', []).all? { |v| valid_codes.include? v['code'] }
|
47
|
-
rescue => e
|
48
|
-
logger.error "Unable to validate IBAN from IBAN json response (#{e.class}): #{e.message}"
|
49
|
-
logger.debug e.backtrace.join("\n")
|
50
|
-
false
|
51
|
-
end
|
43
|
+
class IbanCalc
|
44
|
+
attr_reader :params
|
52
45
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
46
|
+
def initialize(options = {})
|
47
|
+
@params = options.merge({
|
48
|
+
:api_key => IbanLookup.configuration.api_key,
|
49
|
+
:format => :json,
|
50
|
+
})
|
51
|
+
end
|
52
|
+
|
53
|
+
def json
|
54
|
+
@json ||= begin
|
55
|
+
logger.info "Looking up #{params.to_query}"
|
56
|
+
body = if cache
|
57
|
+
cache.get(params.to_query).presence ||
|
58
|
+
response.body.presence.tap { |j| cache.set(params.to_query, j) }
|
59
|
+
else
|
60
|
+
response.body.presence
|
61
|
+
end
|
62
|
+
|
63
|
+
JSON.parse(body.presence || '{}')
|
64
|
+
end
|
65
|
+
rescue => e
|
66
|
+
logger.error "Unable to extract JSON from IBAN response (#{e.class}): #{e.message}"
|
67
|
+
logger.debug e.backtrace.join("\n")
|
68
|
+
{}
|
69
|
+
end
|
70
|
+
|
71
|
+
def response
|
72
|
+
url = "#{URL.chomp('/')}/clients/api/calc-api.php?#{params.to_query}"
|
73
|
+
logger.debug "IBAN url: #{url}"
|
74
|
+
Faraday.get(url).tap do |res|
|
75
|
+
logger.debug "IBAN response status: #{res.status}"
|
76
|
+
logger.debug "IBAN response body: #{res.body}"
|
77
|
+
end
|
64
78
|
end
|
65
|
-
rescue => e
|
66
|
-
logger.error "Unable to extract JSON from IBAN response (#{e.class}): #{e.message}"
|
67
|
-
logger.debug e.backtrace.join("\n")
|
68
|
-
{}
|
69
|
-
end
|
70
79
|
|
71
|
-
|
72
|
-
|
73
|
-
logger.debug "IBAN url: #{url}"
|
74
|
-
Faraday.get(url).tap do |res|
|
75
|
-
logger.debug "IBAN response status: #{res.status}"
|
76
|
-
logger.debug "IBAN response body: #{res.body}"
|
80
|
+
def cache
|
81
|
+
IbanLookup.configuration.cache
|
77
82
|
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def method_missing(name, *args)
|
87
|
+
json.fetch(String(name), nil)
|
88
|
+
end
|
89
|
+
|
90
|
+
def logger
|
91
|
+
@logger ||= IbanLookup.configuration.logger
|
92
|
+
end
|
78
93
|
end
|
79
94
|
|
80
|
-
|
81
|
-
|
95
|
+
class IbanChecker
|
96
|
+
attr_reader :params
|
97
|
+
|
98
|
+
def initialize(iban)
|
99
|
+
@params = {
|
100
|
+
:api_key => IbanLookup.configuration.api_key,
|
101
|
+
:format => :json,
|
102
|
+
:iban => iban,
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
def valid?
|
107
|
+
valid_codes = %w(001 002 003 004 005)
|
108
|
+
json.fetch('validations', []).all? { |v| valid_codes.include? v['code'] }
|
109
|
+
rescue => e
|
110
|
+
logger.error "Unable to validate IBAN from IBAN json response (#{e.class}): #{e.message}"
|
111
|
+
logger.debug e.backtrace.join("\n")
|
112
|
+
false
|
113
|
+
end
|
114
|
+
|
115
|
+
def json
|
116
|
+
@json ||= begin
|
117
|
+
logger.info "Looking up #{params[:iban]}"
|
118
|
+
body = if cache
|
119
|
+
cache.get(params[:iban]).presence ||
|
120
|
+
response.body.presence.tap { |j| cache.set(params[:iban], j) }
|
121
|
+
else
|
122
|
+
response.body.presence
|
123
|
+
end
|
124
|
+
|
125
|
+
JSON.parse(body.presence || '{}')
|
126
|
+
end
|
127
|
+
rescue => e
|
128
|
+
logger.error "Unable to extract JSON from IBAN response (#{e.class}): #{e.message}"
|
129
|
+
logger.debug e.backtrace.join("\n")
|
130
|
+
{}
|
131
|
+
end
|
132
|
+
|
133
|
+
def response
|
134
|
+
url = "#{URL.chomp('/')}/clients/api/ibanv2.php?#{params.to_query}"
|
135
|
+
logger.debug "IBAN url: #{url}"
|
136
|
+
Faraday.get(url).tap do |res|
|
137
|
+
logger.debug "IBAN response status: #{res.status}"
|
138
|
+
logger.debug "IBAN response body: #{res.body}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def cache
|
143
|
+
IbanLookup.configuration.cache
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
|
148
|
+
def method_missing(name, *args)
|
149
|
+
json.fetch('bank_data', {}).fetch(String(name), nil)
|
150
|
+
end
|
151
|
+
|
152
|
+
def logger
|
153
|
+
@logger ||= IbanLookup.configuration.logger
|
154
|
+
end
|
82
155
|
end
|
83
156
|
|
84
157
|
private
|
85
158
|
|
86
159
|
def method_missing(name, *args)
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
def logger
|
91
|
-
@logger ||= IbanLookup.configuration.logger
|
160
|
+
object.send(name, *args)
|
92
161
|
end
|
93
162
|
end
|
94
163
|
|
95
|
-
def lookup(
|
96
|
-
"IbanLookup::#{configuration.service.classify}".constantize.new(
|
164
|
+
def lookup(*args)
|
165
|
+
"IbanLookup::#{configuration.service.classify}".constantize.new(*args)
|
97
166
|
end
|
98
167
|
module_function :lookup
|
99
168
|
end
|
data/lib/iban-lookup/version.rb
CHANGED
metadata
CHANGED
@@ -1,143 +1,101 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: iban-lookup
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Emil Kampp
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2016-12-01 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
14
22
|
name: faraday
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.9'
|
20
|
-
type: :runtime
|
21
23
|
prerelease: false
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
version: '4.2'
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 59
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 9
|
33
|
+
- 0
|
34
|
+
version: 0.9.0
|
34
35
|
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: activesupport
|
35
39
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.1'
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 7
|
46
|
+
segments:
|
47
|
+
- 3
|
48
|
+
- 0
|
49
|
+
version: "3.0"
|
48
50
|
type: :runtime
|
49
|
-
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.4'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.4'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: vcr
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: webmock
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '1.24'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '1.24'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: memcache_mock
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.0'
|
51
|
+
version_requirements: *id002
|
111
52
|
description: IBAN Lookup wrapper for iban.com
|
112
|
-
email:
|
53
|
+
email:
|
113
54
|
- emil@kampp.me
|
114
55
|
executables: []
|
56
|
+
|
115
57
|
extensions: []
|
58
|
+
|
116
59
|
extra_rdoc_files: []
|
117
|
-
|
60
|
+
|
61
|
+
files:
|
118
62
|
- lib/iban-lookup.rb
|
119
63
|
- lib/iban-lookup/version.rb
|
64
|
+
has_rdoc: true
|
120
65
|
homepage: https://github.com/Inpay-Services/iban-lookup
|
121
|
-
licenses:
|
122
|
-
|
66
|
+
licenses:
|
67
|
+
- MIT
|
123
68
|
post_install_message:
|
124
69
|
rdoc_options: []
|
125
|
-
|
70
|
+
|
71
|
+
require_paths:
|
126
72
|
- lib
|
127
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - "="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 57
|
79
|
+
segments:
|
80
|
+
- 1
|
81
|
+
- 8
|
82
|
+
- 7
|
83
|
+
version: 1.8.7
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
134
87
|
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
137
93
|
requirements: []
|
94
|
+
|
138
95
|
rubyforge_project:
|
139
|
-
rubygems_version:
|
96
|
+
rubygems_version: 1.6.2
|
140
97
|
signing_key:
|
141
|
-
specification_version:
|
98
|
+
specification_version: 3
|
142
99
|
summary: IBAN Lookup wrapper for iban.com
|
143
100
|
test_files: []
|
101
|
+
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 2779f14a38bcc176964da975b11e28b8190105cb
|
4
|
-
data.tar.gz: 5c03b6f7467831bbeb7f4cc63c5170a8e3b5c81e
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: ae19345b58137c90c3a18ef8eaf94d545b20e914a10587c3501302a744669dda9fd83fe1f31b66669a77e83d82872d6c155687058fa187dd6b8f0ce2784b774f
|
7
|
-
data.tar.gz: ada1d285be36850b296c09302d901064832dd494f23539972cd66fb6ddf9a90a600ad081daccd78838fbdd151a48f263d64563869d0a7728648142eb7cef7dfb
|