polish_banks 1.0.2 → 1.1.0
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/.gitignore +3 -0
- data/Gemfile +3 -0
- data/README.md +4 -4
- data/Rakefile +6 -0
- data/lib/data/6110.yml +4 -0
- data/lib/data/7003.yml +1 -1
- data/lib/data/8441.yml +1 -1
- data/lib/data/8471.yml +1 -1
- data/lib/data/9015.yml +1 -1
- data/lib/data_generator.rb +13 -9
- data/lib/polish_banks.rb +3 -0
- data/polish_banks.gemspec +3 -2
- data/spec/polish_banks_spec.rb +81 -0
- metadata +22 -6
- data/lib/data/8606.yml +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a97cbcce56873cba6b53f891adf2e52f659bdfa8c9e852b204738d03cd7352ad
|
|
4
|
+
data.tar.gz: 8908a1b4b6b6d8b6f79b1f0aa639747f9b21e71513b9d596b3027a5386ea36ac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 456c01e8b6ac5287f47650bff89d2e8637172b44e6ca5989a8dbf6d29f064e24400de276dfb604a11da8b03ce8283b8d4eee5221a057d799b39c03dd55cd0ed9
|
|
7
|
+
data.tar.gz: bbc4ece64238ce6f33411d64e11b2d1d1b218e24ff0f6165751499c5bc98e76b67b94d43368d582c6da33e61e19b322af846435fb39aec839fb7295715a32f4f
|
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PolishBanks - A Polish bank lookup Ruby gem.
|
|
2
2
|
|
|
3
|
-
Polish bank name and branch can be read from the IBAN or
|
|
3
|
+
Polish bank name and branch can be read from the IBAN or account number
|
|
4
4
|
|
|
5
5
|
`PLkk BBBB BBBB MMMM MMMM MMMM MMMM`
|
|
6
6
|
|
|
@@ -28,13 +28,13 @@ Or install on your own to test it in irb:
|
|
|
28
28
|
|
|
29
29
|
You can use either IBAN or just account number - as string or as integer. If you don't provide the whole account number, the gem will try to determine at least the bank name. Non-Polish ibans will raise a `UnsupportedCountry` exception.
|
|
30
30
|
|
|
31
|
-
require '
|
|
31
|
+
require 'polish_banks'
|
|
32
32
|
|
|
33
33
|
iban = "PL9912406999"
|
|
34
34
|
bank = PolishBank.new(iban)
|
|
35
35
|
|
|
36
|
-
bank.name #"Bank Polska Kasa Opieki Spółka Akcyjna"
|
|
37
|
-
bank.branch #"Oddział w Tychach ul. Wyszyńskiego 27"
|
|
36
|
+
bank.name # "Bank Polska Kasa Opieki Spółka Akcyjna"
|
|
37
|
+
bank.branch # "Oddział w Tychach ul. Wyszyńskiego 27"
|
|
38
38
|
|
|
39
39
|
If bank is not found, the gem will raise a `BankNotFound` exception.
|
|
40
40
|
|
data/Rakefile
ADDED
data/lib/data/6110.yml
ADDED
data/lib/data/7003.yml
CHANGED
data/lib/data/8441.yml
CHANGED
data/lib/data/8471.yml
CHANGED
data/lib/data/9015.yml
CHANGED
data/lib/data_generator.rb
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
1
3
|
require 'fileutils'
|
|
2
4
|
require 'yaml'
|
|
3
5
|
|
|
4
6
|
BANK_NAME_COL = 1
|
|
5
7
|
BRANCH_IDENTIFIER_COL = 4
|
|
6
8
|
BRANCH_NAME_COL = 5
|
|
7
|
-
DATA_DIR_NAME = 'data'
|
|
8
|
-
|
|
9
|
+
DATA_DIR_NAME = 'data'
|
|
10
|
+
FILENAMES = ['plewibnra.txt', 'PlainDok.txt'].freeze
|
|
11
|
+
|
|
12
|
+
filename = FILENAMES.detect { |file| File.exist?(file) }
|
|
9
13
|
|
|
10
14
|
FileUtils.mkdir_p(DATA_DIR_NAME) unless File.directory?(DATA_DIR_NAME)
|
|
11
15
|
|
|
12
|
-
file = File.open(
|
|
16
|
+
file = File.open(filename, 'r', encoding: 'CP852')
|
|
13
17
|
|
|
14
18
|
file.each_line do |row|
|
|
15
|
-
row = row.encode(Encoding.find('UTF-8'),
|
|
19
|
+
row = row.encode(Encoding.find('UTF-8'), invalid: :replace, undef: :replace, replace: '').split("\t").map(&:strip)
|
|
16
20
|
|
|
17
21
|
branch_identifier = row[BRANCH_IDENTIFIER_COL]
|
|
18
22
|
bank_identifier = branch_identifier.slice(0, 4)
|
|
19
23
|
branch_name = row[BRANCH_NAME_COL]
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
data_file = "#{DATA_DIR_NAME}/#{bank_identifier}.yml"
|
|
22
26
|
|
|
23
27
|
content = {
|
|
24
28
|
branch_identifier.to_i => {
|
|
@@ -26,19 +30,19 @@ file.each_line do |row|
|
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
|
|
29
|
-
if File.exist?(
|
|
30
|
-
yaml_string = File.read(
|
|
33
|
+
if File.exist?(data_file)
|
|
34
|
+
yaml_string = File.read(data_file)
|
|
31
35
|
data = YAML.safe_load(yaml_string)
|
|
32
36
|
|
|
33
37
|
content = data.merge(content)
|
|
34
38
|
else
|
|
35
|
-
File.new(
|
|
39
|
+
File.new(data_file, 'w+')
|
|
36
40
|
|
|
37
41
|
bank_name = row[BANK_NAME_COL].strip
|
|
38
42
|
content = { 'name' => bank_name }.merge(content)
|
|
39
43
|
end
|
|
40
44
|
|
|
41
|
-
File.open(
|
|
45
|
+
File.open(data_file, 'r+') do |f|
|
|
42
46
|
f.write(content.to_yaml(line_width: -1))
|
|
43
47
|
end
|
|
44
48
|
end
|
data/lib/polish_banks.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'yaml'
|
|
2
4
|
require 'errors/bank_not_found'
|
|
3
5
|
require 'errors/unsupported_country'
|
|
@@ -33,6 +35,7 @@ class PolishBank
|
|
|
33
35
|
|
|
34
36
|
def check_country
|
|
35
37
|
return if integer?(country_code)
|
|
38
|
+
|
|
36
39
|
raise UnsupportedCountry, "Iban #{iban} is not Polish" if country_code.casecmp('PL') != 0
|
|
37
40
|
end
|
|
38
41
|
|
data/polish_banks.gemspec
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'polish_banks'
|
|
3
|
-
s.version = '1.0
|
|
4
|
-
s.date = '2019-10-
|
|
3
|
+
s.version = '1.1.0'
|
|
4
|
+
s.date = '2019-10-19'
|
|
5
5
|
s.summary = 'Polish bank detector'
|
|
6
6
|
s.description = 'Get information about a Polish bank based on IBAN or account number.'
|
|
7
7
|
s.authors = ['Maciej Czuchnowski']
|
|
@@ -9,4 +9,5 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.files = `git ls-files -z`.split("\x0")
|
|
10
10
|
s.homepage = 'https://github.com/mczuchnowski/polish_banks'
|
|
11
11
|
s.license = 'MIT'
|
|
12
|
+
s.add_development_dependency 'rspec', '~> 3.0'
|
|
12
13
|
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'polish_banks'
|
|
4
|
+
|
|
5
|
+
RSpec.describe PolishBank do
|
|
6
|
+
subject { described_class.new(iban) }
|
|
7
|
+
|
|
8
|
+
describe "standard iban check" do
|
|
9
|
+
let(:iban) { "PL9912406999" }
|
|
10
|
+
|
|
11
|
+
it "detects bank name" do
|
|
12
|
+
expect(subject.name).to be_a String
|
|
13
|
+
expect(subject.name.length).to be_positive
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "detects bank branch" do
|
|
17
|
+
expect(subject.branch).to be_a String
|
|
18
|
+
expect(subject.branch.length).to be_positive
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "with only partial match" do
|
|
22
|
+
let(:iban) { "PL9912406666" }
|
|
23
|
+
|
|
24
|
+
it "detects bank name" do
|
|
25
|
+
expect(subject.name).to be_a String
|
|
26
|
+
expect(subject.name.length).to be_positive
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "detects bank branch" do
|
|
30
|
+
expect(subject.branch).to be_a String
|
|
31
|
+
expect(subject.branch.length).to be_zero
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "with special characters" do
|
|
36
|
+
let(:iban) { "99-1240 6999" }
|
|
37
|
+
|
|
38
|
+
it "detects bank name" do
|
|
39
|
+
expect(subject.name).to be_a String
|
|
40
|
+
expect(subject.name.length).to be_positive
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "detects bank branch" do
|
|
44
|
+
expect(subject.branch).to be_a String
|
|
45
|
+
expect(subject.branch.length).to be_positive
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "account number check" do
|
|
51
|
+
let(:iban) { "9912406999" }
|
|
52
|
+
|
|
53
|
+
it "detects bank name" do
|
|
54
|
+
expect(subject.name).to be_a String
|
|
55
|
+
expect(subject.name.length).to be_positive
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "detects bank branch" do
|
|
59
|
+
expect(subject.branch).to be_a String
|
|
60
|
+
expect(subject.branch.length).to be_positive
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "error raising" do
|
|
65
|
+
context "foreign iban" do
|
|
66
|
+
let(:iban) { "DE9912406999" }
|
|
67
|
+
|
|
68
|
+
it "raises UnsupportedCountry error" do
|
|
69
|
+
expect { subject }.to raise_error(UnsupportedCountry, "Iban #{iban} is not Polish")
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "unknown bank" do
|
|
74
|
+
let(:iban) { "PL6666666666" }
|
|
75
|
+
|
|
76
|
+
it "raises BankNotFound error" do
|
|
77
|
+
expect { subject }.to raise_error(BankNotFound, "Polish bank not found for #{iban}")
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: polish_banks
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Maciej Czuchnowski
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-10-
|
|
12
|
-
dependencies:
|
|
11
|
+
date: 2019-10-19 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rspec
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '3.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '3.0'
|
|
13
27
|
description: Get information about a Polish bank based on IBAN or account number.
|
|
14
28
|
email: maciej.czuchnowski@gmail.com
|
|
15
29
|
executables: []
|
|
@@ -17,7 +31,9 @@ extensions: []
|
|
|
17
31
|
extra_rdoc_files: []
|
|
18
32
|
files:
|
|
19
33
|
- ".gitignore"
|
|
34
|
+
- Gemfile
|
|
20
35
|
- README.md
|
|
36
|
+
- Rakefile
|
|
21
37
|
- lib/data/1010.yml
|
|
22
38
|
- lib/data/1020.yml
|
|
23
39
|
- lib/data/1030.yml
|
|
@@ -107,6 +123,7 @@ files:
|
|
|
107
123
|
- lib/data/6000.yml
|
|
108
124
|
- lib/data/6040.yml
|
|
109
125
|
- lib/data/6070.yml
|
|
126
|
+
- lib/data/6110.yml
|
|
110
127
|
- lib/data/6200.yml
|
|
111
128
|
- lib/data/6300.yml
|
|
112
129
|
- lib/data/7003.yml
|
|
@@ -369,7 +386,6 @@ files:
|
|
|
369
386
|
- lib/data/8597.yml
|
|
370
387
|
- lib/data/8600.yml
|
|
371
388
|
- lib/data/8602.yml
|
|
372
|
-
- lib/data/8606.yml
|
|
373
389
|
- lib/data/8612.yml
|
|
374
390
|
- lib/data/8614.yml
|
|
375
391
|
- lib/data/8619.yml
|
|
@@ -733,6 +749,7 @@ files:
|
|
|
733
749
|
- lib/errors/unsupported_country.rb
|
|
734
750
|
- lib/polish_banks.rb
|
|
735
751
|
- polish_banks.gemspec
|
|
752
|
+
- spec/polish_banks_spec.rb
|
|
736
753
|
homepage: https://github.com/mczuchnowski/polish_banks
|
|
737
754
|
licenses:
|
|
738
755
|
- MIT
|
|
@@ -752,8 +769,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
752
769
|
- !ruby/object:Gem::Version
|
|
753
770
|
version: '0'
|
|
754
771
|
requirements: []
|
|
755
|
-
|
|
756
|
-
rubygems_version: 2.7.7
|
|
772
|
+
rubygems_version: 3.0.3
|
|
757
773
|
signing_key:
|
|
758
774
|
specification_version: 4
|
|
759
775
|
summary: Polish bank detector
|
data/lib/data/8606.yml
DELETED