banks_registry 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +59 -0
- data/data/banks/AD.yml +58 -0
- data/data/banks/AE.yml +2733 -0
- data/data/banks/AF.yml +162 -0
- data/data/banks/AG.yml +154 -0
- data/data/banks/AI.yml +42 -0
- data/data/banks/AL.yml +346 -0
- data/data/banks/AM.yml +194 -0
- data/data/banks/AO.yml +258 -0
- data/data/banks/AR.yml +1274 -0
- data/data/banks/AS.yml +18 -0
- data/data/banks/AT.yml +8237 -0
- data/data/banks/AU.yml +5203 -0
- data/data/banks/AW.yml +74 -0
- data/data/banks/AZ.yml +458 -0
- data/data/banks/BA.yml +274 -0
- data/data/banks/BB.yml +210 -0
- data/data/banks/BD.yml +5418 -0
- data/data/banks/BE.yml +3570 -0
- data/data/banks/BF.yml +147 -0
- data/data/banks/BG.yml +946 -0
- data/data/banks/BH.yml +1146 -0
- data/data/banks/BI.yml +130 -0
- data/data/banks/BJ.yml +106 -0
- data/data/banks/BM.yml +394 -0
- data/data/banks/BN.yml +90 -0
- data/data/banks/BO.yml +434 -0
- data/data/banks/BQ.yml +58 -0
- data/data/banks/BR.yml +2986 -0
- data/data/banks/BS.yml +778 -0
- data/data/banks/BT.yml +58 -0
- data/data/banks/BW.yml +354 -0
- data/data/banks/BY.yml +770 -0
- data/data/banks/BZ.yml +122 -0
- data/data/banks/CA.yml +3994 -0
- data/data/banks/CD.yml +387 -0
- data/data/banks/CF.yml +42 -0
- data/data/banks/CH.yml +24428 -0
- data/data/banks/CI.yml +450 -0
- data/data/banks/CK.yml +42 -0
- data/data/banks/CL.yml +850 -0
- data/data/banks/CM.yml +346 -0
- data/data/banks/CN.yml +10061 -0
- data/data/banks/CO.yml +1337 -0
- data/data/banks/CR.yml +250 -0
- data/data/banks/CU.yml +114 -0
- data/data/banks/CV.yml +114 -0
- data/data/banks/CW.yml +378 -0
- data/data/banks/CY.yml +1459 -0
- data/data/banks/CZ.yml +987 -0
- data/data/banks/DE.yml +44561 -0
- data/data/banks/DJ.yml +82 -0
- data/data/banks/DK.yml +3387 -0
- data/data/banks/DM.yml +66 -0
- data/data/banks/DO.yml +1402 -0
- data/data/banks/DZ.yml +570 -0
- data/data/banks/EC.yml +2864 -0
- data/data/banks/EE.yml +250 -0
- data/data/banks/EG.yml +4218 -0
- data/data/banks/ER.yml +26 -0
- data/data/banks/ES.yml +5458 -0
- data/data/banks/ET.yml +242 -0
- data/data/banks/FI.yml +4059 -0
- data/data/banks/FJ.yml +82 -0
- data/data/banks/FK.yml +10 -0
- data/data/banks/FM.yml +10 -0
- data/data/banks/FO.yml +42 -0
- data/data/banks/FR.yml +24085 -0
- data/data/banks/GA.yml +194 -0
- data/data/banks/GB.yml +42510 -0
- data/data/banks/GD.yml +58 -0
- data/data/banks/GE.yml +514 -0
- data/data/banks/GF.yml +42 -0
- data/data/banks/GG.yml +603 -0
- data/data/banks/GH.yml +698 -0
- data/data/banks/GI.yml +226 -0
- data/data/banks/GL.yml +10 -0
- data/data/banks/GM.yml +114 -0
- data/data/banks/GN.yml +138 -0
- data/data/banks/GP.yml +122 -0
- data/data/banks/GQ.yml +90 -0
- data/data/banks/GR.yml +1671 -0
- data/data/banks/GT.yml +482 -0
- data/data/banks/GU.yml +42 -0
- data/data/banks/GW.yml +34 -0
- data/data/banks/GY.yml +66 -0
- data/data/banks/HK.yml +10032 -0
- data/data/banks/HN.yml +370 -0
- data/data/banks/HR.yml +618 -0
- data/data/banks/HT.yml +106 -0
- data/data/banks/HU.yml +1267 -0
- data/data/banks/ID.yml +3802 -0
- data/data/banks/IE.yml +6155 -0
- data/data/banks/IL.yml +594 -0
- data/data/banks/IM.yml +650 -0
- data/data/banks/IN.yml +10050 -0
- data/data/banks/IQ.yml +538 -0
- data/data/banks/IR.yml +1370 -0
- data/data/banks/IS.yml +258 -0
- data/data/banks/IT.yml +49391 -0
- data/data/banks/JE.yml +938 -0
- data/data/banks/JM.yml +450 -0
- data/data/banks/JO.yml +1122 -0
- data/data/banks/JP.yml +5114 -0
- data/data/banks/KE.yml +1106 -0
- data/data/banks/KG.yml +194 -0
- data/data/banks/KH.yml +330 -0
- data/data/banks/KI.yml +10 -0
- data/data/banks/KM.yml +98 -0
- data/data/banks/KN.yml +138 -0
- data/data/banks/KP.yml +106 -0
- data/data/banks/KR.yml +1963 -0
- data/data/banks/KW.yml +674 -0
- data/data/banks/KY.yml +1316 -0
- data/data/banks/KZ.yml +722 -0
- data/data/banks/LA.yml +242 -0
- data/data/banks/LB.yml +1026 -0
- data/data/banks/LC.yml +74 -0
- data/data/banks/LI.yml +234 -0
- data/data/banks/LK.yml +626 -0
- data/data/banks/LR.yml +138 -0
- data/data/banks/LS.yml +50 -0
- data/data/banks/LT.yml +364 -0
- data/data/banks/LU.yml +3484 -0
- data/data/banks/LV.yml +434 -0
- data/data/banks/LY.yml +866 -0
- data/data/banks/MA.yml +682 -0
- data/data/banks/MC.yml +466 -0
- data/data/banks/MD.yml +202 -0
- data/data/banks/ME.yml +98 -0
- data/data/banks/MG.yml +130 -0
- data/data/banks/MH.yml +26 -0
- data/data/banks/MK.yml +370 -0
- data/data/banks/ML.yml +138 -0
- data/data/banks/MM.yml +170 -0
- data/data/banks/MN.yml +122 -0
- data/data/banks/MO.yml +258 -0
- data/data/banks/MP.yml +26 -0
- data/data/banks/MQ.yml +82 -0
- data/data/banks/MR.yml +162 -0
- data/data/banks/MS.yml +18 -0
- data/data/banks/MT.yml +578 -0
- data/data/banks/MU.yml +434 -0
- data/data/banks/MV.yml +66 -0
- data/data/banks/MW.yml +202 -0
- data/data/banks/MX.yml +1321 -0
- data/data/banks/MY.yml +2908 -0
- data/data/banks/MZ.yml +202 -0
- data/data/banks/NA.yml +138 -0
- data/data/banks/NC.yml +130 -0
- data/data/banks/NE.yml +106 -0
- data/data/banks/NG.yml +794 -0
- data/data/banks/NI.yml +146 -0
- data/data/banks/NL.yml +6050 -0
- data/data/banks/NO.yml +2882 -0
- data/data/banks/NP.yml +298 -0
- data/data/banks/NR.yml +18 -0
- data/data/banks/NZ.yml +1383 -0
- data/data/banks/OM.yml +450 -0
- data/data/banks/PA.yml +850 -0
- data/data/banks/PE.yml +242 -0
- data/data/banks/PF.yml +82 -0
- data/data/banks/PG.yml +50 -0
- data/data/banks/PH.yml +3154 -0
- data/data/banks/PK.yml +2266 -0
- data/data/banks/PL.yml +3578 -0
- data/data/banks/PM.yml +18 -0
- data/data/banks/PR.yml +170 -0
- data/data/banks/PS.yml +466 -0
- data/data/banks/PT.yml +2666 -0
- data/data/banks/PW.yml +10 -0
- data/data/banks/PY.yml +290 -0
- data/data/banks/QA.yml +578 -0
- data/data/banks/RE.yml +82 -0
- data/data/banks/RO.yml +1379 -0
- data/data/banks/RS.yml +770 -0
- data/data/banks/RU.yml +13939 -0
- data/data/banks/RW.yml +170 -0
- data/data/banks/SA.yml +794 -0
- data/data/banks/SB.yml +26 -0
- data/data/banks/SC.yml +90 -0
- data/data/banks/SD.yml +650 -0
- data/data/banks/SE.yml +3138 -0
- data/data/banks/SG.yml +4107 -0
- data/data/banks/SH.yml +10 -0
- data/data/banks/SI.yml +458 -0
- data/data/banks/SK.yml +874 -0
- data/data/banks/SL.yml +138 -0
- data/data/banks/SM.yml +562 -0
- data/data/banks/SN.yml +242 -0
- data/data/banks/SO.yml +18 -0
- data/data/banks/SR.yml +98 -0
- data/data/banks/SS.yml +202 -0
- data/data/banks/ST.yml +74 -0
- data/data/banks/SV.yml +179 -0
- data/data/banks/SX.yml +58 -0
- data/data/banks/SY.yml +282 -0
- data/data/banks/SZ.yml +58 -0
- data/data/banks/TC.yml +50 -0
- data/data/banks/TD.yml +98 -0
- data/data/banks/TG.yml +227 -0
- data/data/banks/TH.yml +2132 -0
- data/data/banks/TJ.yml +178 -0
- data/data/banks/TL.yml +26 -0
- data/data/banks/TM.yml +106 -0
- data/data/banks/TN.yml +539 -0
- data/data/banks/TO.yml +34 -0
- data/data/banks/TR.yml +3362 -0
- data/data/banks/TT.yml +298 -0
- data/data/banks/TV.yml +10 -0
- data/data/banks/TW.yml +5746 -0
- data/data/banks/TZ.yml +746 -0
- data/data/banks/UA.yml +2450 -0
- data/data/banks/UG.yml +362 -0
- data/data/banks/US.yml +31004 -0
- data/data/banks/UY.yml +611 -0
- data/data/banks/UZ.yml +474 -0
- data/data/banks/VA.yml +26 -0
- data/data/banks/VC.yml +98 -0
- data/data/banks/VE.yml +754 -0
- data/data/banks/VG.yml +203 -0
- data/data/banks/VN.yml +1975 -0
- data/data/banks/VU.yml +98 -0
- data/data/banks/WF.yml +26 -0
- data/data/banks/WS.yml +66 -0
- data/data/banks/XK.yml +226 -0
- data/data/banks/YE.yml +570 -0
- data/data/banks/YT.yml +10 -0
- data/data/banks/ZA.yml +2645 -0
- data/data/banks/ZM.yml +410 -0
- data/data/banks/ZW.yml +402 -0
- data/data/rules/CH.yml +4 -0
- data/data/rules/DE.yml +4 -0
- data/lib/banks_registry/loaders/banks_loader.rb +25 -0
- data/lib/banks_registry/loaders/rules_loader.rb +28 -0
- data/lib/banks_registry/matchers/bic_matcher.rb +25 -0
- data/lib/banks_registry/matchers/iban_matcher.rb +62 -0
- data/lib/banks_registry/models/bank.rb +51 -0
- data/lib/banks_registry/models/rule.rb +23 -0
- data/lib/banks_registry/rule_converter.rb +28 -0
- data/lib/banks_registry/version.rb +5 -0
- metadata +242 -6
- data/.idea/iban-to-swift.iml +0 -31
- data/.idea/misc.xml +0 -7
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -6
- data/.idea/workspace.xml +0 -611
data/data/banks/ZW.yml
ADDED
@@ -0,0 +1,402 @@
|
|
1
|
+
---
|
2
|
+
ZW:
|
3
|
+
- name: Beverley Building Society
|
4
|
+
swift: BVBSZWH1XXX
|
5
|
+
swift8: BVBSZWH1
|
6
|
+
branch_name: Head Office
|
7
|
+
branch_address: Beverley Place Harare
|
8
|
+
branch_code: XXX
|
9
|
+
city: Harare
|
10
|
+
country: Zimbabwe
|
11
|
+
- name: African Banking Corp.of Zimbabwe Ltd.
|
12
|
+
swift: FMBZZWHXXXX
|
13
|
+
swift8: FMBZZWHX
|
14
|
+
branch_name: Head Office
|
15
|
+
branch_address: Banc Abc Harare
|
16
|
+
branch_code: XXX
|
17
|
+
city: Harare
|
18
|
+
country: Zimbabwe
|
19
|
+
- name: Agricultural Bank Of Zimbabwe Ltd
|
20
|
+
swift: AGRZZWHAXXX
|
21
|
+
swift8: AGRZZWHA
|
22
|
+
branch_name: Head Office
|
23
|
+
branch_address: Hurudza House Harare
|
24
|
+
branch_code: XXX
|
25
|
+
city: Harare
|
26
|
+
country: Zimbabwe
|
27
|
+
- name: Barclays Bank Of Zimbabwe
|
28
|
+
swift: BARCZWHXXXX
|
29
|
+
swift8: BARCZWHX
|
30
|
+
branch_name: Head Office
|
31
|
+
branch_address: Kurima House Harare
|
32
|
+
branch_code: XXX
|
33
|
+
city: Harare
|
34
|
+
country: Zimbabwe
|
35
|
+
- name: Bard Discount House Limited
|
36
|
+
swift: BDHLZWH1XXX
|
37
|
+
swift8: BDHLZWH1
|
38
|
+
branch_name: Head Office
|
39
|
+
branch_address: Club House Harare
|
40
|
+
branch_code: XXX
|
41
|
+
city: Harare
|
42
|
+
country: Zimbabwe
|
43
|
+
- name: Bard Stockbrokers
|
44
|
+
swift: BSTKZWH1XXX
|
45
|
+
swift8: BSTKZWH1
|
46
|
+
branch_name: Head Office
|
47
|
+
branch_address: Bard House Harare
|
48
|
+
branch_code: XXX
|
49
|
+
city: Harare
|
50
|
+
country: Zimbabwe
|
51
|
+
- name: Central Africa Building Society
|
52
|
+
swift: CABSZWHAXXX
|
53
|
+
swift8: CABSZWHA
|
54
|
+
branch_name: Head Office
|
55
|
+
branch_address: Cabs Head Office Harare
|
56
|
+
branch_code: XXX
|
57
|
+
city: Harare
|
58
|
+
country: Zimbabwe
|
59
|
+
- name: Cfx Merchant Bank Limited
|
60
|
+
swift: CFXBZWH1XXX
|
61
|
+
swift8: CFXBZWH1
|
62
|
+
branch_name: Head Office
|
63
|
+
branch_address: Tendeseka Office Park Harare
|
64
|
+
branch_code: XXX
|
65
|
+
city: Harare
|
66
|
+
country: Zimbabwe
|
67
|
+
- name: Cfx Merchant Bank Limited
|
68
|
+
swift: CFXBZWHAXXX
|
69
|
+
swift8: CFXBZWHA
|
70
|
+
branch_name: Head Office
|
71
|
+
branch_address: Tendeseka Office Park Harare
|
72
|
+
branch_code: XXX
|
73
|
+
city: Harare
|
74
|
+
country: Zimbabwe
|
75
|
+
- name: Comesa Clearing House
|
76
|
+
swift: COCUZWHAXXX
|
77
|
+
swift8: COCUZWHA
|
78
|
+
branch_name: Head Office
|
79
|
+
branch_address: 4 Purbeck Close Highlands Harare
|
80
|
+
branch_code: XXX
|
81
|
+
city: Harare
|
82
|
+
country: Zimbabwe
|
83
|
+
- name: Commercial Bank Of Zimbabwe Limited
|
84
|
+
swift: COBZZWHAXXX
|
85
|
+
swift8: COBZZWHA
|
86
|
+
branch_name: Head Office
|
87
|
+
branch_address: Union House Harare
|
88
|
+
branch_code: XXX
|
89
|
+
city: Harare
|
90
|
+
country: Zimbabwe
|
91
|
+
- name: Ecobank Zimbabwe Limited
|
92
|
+
swift: ECOCZWHXXXX
|
93
|
+
swift8: ECOCZWHX
|
94
|
+
branch_name: Head Office
|
95
|
+
branch_address: Sam Levys Office Park Harare
|
96
|
+
branch_code: XXX
|
97
|
+
city: Harare
|
98
|
+
country: Zimbabwe
|
99
|
+
- name: Edwards And Company
|
100
|
+
swift: EDCPZWH1XXX
|
101
|
+
swift8: EDCPZWH1
|
102
|
+
branch_name: Head Office
|
103
|
+
branch_address: Club Chambers Harare
|
104
|
+
branch_code: XXX
|
105
|
+
city: Harare
|
106
|
+
country: Zimbabwe
|
107
|
+
- name: Fbc Bank Ltd
|
108
|
+
swift: FBCPZWHAXXX
|
109
|
+
swift8: FBCPZWHA
|
110
|
+
branch_name: Head Office
|
111
|
+
branch_address: Fbc Centre Harare
|
112
|
+
branch_code: XXX
|
113
|
+
city: Harare
|
114
|
+
country: Zimbabwe
|
115
|
+
- name: Genesis Securities
|
116
|
+
swift: USPTZWH1XXX
|
117
|
+
swift8: USPTZWH1
|
118
|
+
branch_name: Head Office
|
119
|
+
branch_address: Corner House Harare
|
120
|
+
branch_code: XXX
|
121
|
+
city: Harare
|
122
|
+
country: Zimbabwe
|
123
|
+
- name: Industrial Development Corporation Of Zimbabwe Limited
|
124
|
+
swift: IDCZZWH1XXX
|
125
|
+
swift8: IDCZZWH1
|
126
|
+
branch_name: Head Office
|
127
|
+
branch_address: 93 Parklane Harare
|
128
|
+
branch_code: XXX
|
129
|
+
city: Harare
|
130
|
+
country: Zimbabwe
|
131
|
+
- name: Infrastructure Development Bank Of Zimbabwe Ed
|
132
|
+
swift: ZDBLZWHAXXX
|
133
|
+
swift8: ZDBLZWHA
|
134
|
+
branch_name: Head Office
|
135
|
+
branch_address: Z.D.B. House Harare
|
136
|
+
branch_code: XXX
|
137
|
+
city: Harare
|
138
|
+
country: Zimbabwe
|
139
|
+
- name: Intermarket Discount House
|
140
|
+
swift: INDHZWH1XXX
|
141
|
+
swift8: INDHZWH1
|
142
|
+
branch_name: Head Office
|
143
|
+
branch_address: Udc Centre Harare
|
144
|
+
branch_code: XXX
|
145
|
+
city: Harare
|
146
|
+
country: Zimbabwe
|
147
|
+
- name: Mast Stockbrokers (pvt) Ltd
|
148
|
+
swift: MSTPZWH1XXX
|
149
|
+
swift8: MSTPZWH1
|
150
|
+
branch_name: Head Office
|
151
|
+
branch_address: Ncr House Harare
|
152
|
+
branch_code: XXX
|
153
|
+
city: Harare
|
154
|
+
country: Zimbabwe
|
155
|
+
- name: Mbca Bank Limited
|
156
|
+
swift: MBCAZWHXXXX
|
157
|
+
swift8: MBCAZWHX
|
158
|
+
branch_name: Head Office
|
159
|
+
branch_address: Old Mutual Centre Harare
|
160
|
+
branch_code: XXX
|
161
|
+
city: Harare
|
162
|
+
country: Zimbabwe
|
163
|
+
- name: Metropolitan Bank Of Zimbabwe Ltd
|
164
|
+
swift: MBOZZWHAXXX
|
165
|
+
swift8: MBOZZWHA
|
166
|
+
branch_name: Head Office
|
167
|
+
branch_address: Central House Harare
|
168
|
+
branch_code: XXX
|
169
|
+
city: Harare
|
170
|
+
country: Zimbabwe
|
171
|
+
- name: Msasa Stockbrokers (pvt) Ltd
|
172
|
+
swift: MSSTZWH1XXX
|
173
|
+
swift8: MSSTZWH1
|
174
|
+
branch_name: Head Office
|
175
|
+
branch_address: Msasa House Harare
|
176
|
+
branch_code: XXX
|
177
|
+
city: Harare
|
178
|
+
country: Zimbabwe
|
179
|
+
- name: Nmb Bank Limited
|
180
|
+
swift: NMBLZWHXBYO
|
181
|
+
swift8: NMBLZWHX
|
182
|
+
branch_name: Bulawayo Branch
|
183
|
+
branch_address: Bulawayo
|
184
|
+
branch_code: BYO
|
185
|
+
city: Bulawayo
|
186
|
+
country: Zimbabwe
|
187
|
+
- name: Nmb Bank Limited
|
188
|
+
swift: NMBLZWHXXXX
|
189
|
+
swift8: NMBLZWHX
|
190
|
+
branch_name: Head Office
|
191
|
+
branch_address: Unity Court Harare
|
192
|
+
branch_code: XXX
|
193
|
+
city: Harare
|
194
|
+
country: Zimbabwe
|
195
|
+
- name: P.t.a. Clearing House
|
196
|
+
swift: PTAHZWH1XXX
|
197
|
+
swift8: PTAHZWH1
|
198
|
+
branch_name: Head Office
|
199
|
+
branch_address: 101 Union Avenue Harare
|
200
|
+
branch_code: XXX
|
201
|
+
city: Harare
|
202
|
+
country: Zimbabwe
|
203
|
+
- name: People's Own Savings Bank
|
204
|
+
swift: PWSBZWHXXXX
|
205
|
+
swift8: PWSBZWHX
|
206
|
+
branch_name: Head Office
|
207
|
+
branch_address: Causeway Harare
|
208
|
+
branch_code: XXX
|
209
|
+
city: Harare
|
210
|
+
country: Zimbabwe
|
211
|
+
- name: Premier Banking Corporation Ltd.
|
212
|
+
swift: PRDHZWH1XXX
|
213
|
+
swift8: PRDHZWH1
|
214
|
+
branch_name: Head Office
|
215
|
+
branch_address: Block a Harare
|
216
|
+
branch_code: XXX
|
217
|
+
city: Harare
|
218
|
+
country: Zimbabwe
|
219
|
+
- name: Renaissance Securities (private) Limited
|
220
|
+
swift: BSPVZWH1XXX
|
221
|
+
swift8: BSPVZWH1
|
222
|
+
branch_name: Head Office
|
223
|
+
branch_address: Social Security Centre Harare
|
224
|
+
branch_code: XXX
|
225
|
+
city: Harare
|
226
|
+
country: Zimbabwe
|
227
|
+
- name: Reserve Bank Of Zimbabwe
|
228
|
+
swift: REBZZWHQXXX
|
229
|
+
swift8: REBZZWHQ
|
230
|
+
branch_name: Head Office
|
231
|
+
branch_address: 80 Samora Machel Avenue Harare
|
232
|
+
branch_code: XXX
|
233
|
+
city: Harare
|
234
|
+
country: Zimbabwe
|
235
|
+
- name: Reserve Bank Of Zimbabwe
|
236
|
+
swift: REBZZWHXPCH
|
237
|
+
swift8: REBZZWHX
|
238
|
+
branch_name: Harare
|
239
|
+
branch_address: 80 Samora Machel Avenue Harare
|
240
|
+
branch_code: PCH
|
241
|
+
city: Harare
|
242
|
+
country: Zimbabwe
|
243
|
+
- name: Reserve Bank Of Zimbabwe
|
244
|
+
swift: REBZZWHXXXX
|
245
|
+
swift8: REBZZWHX
|
246
|
+
branch_name: Head Office
|
247
|
+
branch_address: 76 Samora Machel Avenue Harare
|
248
|
+
branch_code: XXX
|
249
|
+
city: Harare
|
250
|
+
country: Zimbabwe
|
251
|
+
- name: Sagit Stockbrokers (private) Limited
|
252
|
+
swift: SAGSZWH1XXX
|
253
|
+
swift8: SAGSZWH1
|
254
|
+
branch_name: Head Office
|
255
|
+
branch_address: Southampton Life Centre Harare
|
256
|
+
branch_code: XXX
|
257
|
+
city: Harare
|
258
|
+
country: Zimbabwe
|
259
|
+
- name: Scotfin Limited
|
260
|
+
swift: SCLIZWH102B
|
261
|
+
swift8: SCLIZWH1
|
262
|
+
branch_name: Bulawayo
|
263
|
+
branch_address: Old Mutual Center Bulawayo
|
264
|
+
branch_code: 02B
|
265
|
+
city: Bulawayo
|
266
|
+
country: Zimbabwe
|
267
|
+
- name: Scotfin Limited
|
268
|
+
swift: SCLIZWH102C
|
269
|
+
swift8: SCLIZWH1
|
270
|
+
branch_name: Chinhoyi
|
271
|
+
branch_address: Chinhoyi
|
272
|
+
branch_code: 02C
|
273
|
+
city: Chinhoyi
|
274
|
+
country: Zimbabwe
|
275
|
+
- name: Scotfin Limited
|
276
|
+
swift: SCLIZWH102G
|
277
|
+
swift8: SCLIZWH1
|
278
|
+
branch_name: Gweru
|
279
|
+
branch_address: Gweru
|
280
|
+
branch_code: 02G
|
281
|
+
city: Gweru
|
282
|
+
country: Zimbabwe
|
283
|
+
- name: Scotfin Limited
|
284
|
+
swift: SCLIZWH102M
|
285
|
+
swift8: SCLIZWH1
|
286
|
+
branch_name: Mutare
|
287
|
+
branch_address: Mutare
|
288
|
+
branch_code: 02M
|
289
|
+
city: Mutare
|
290
|
+
country: Zimbabwe
|
291
|
+
- name: Scotfin Limited
|
292
|
+
swift: SCLIZWH1XXX
|
293
|
+
swift8: SCLIZWH1
|
294
|
+
branch_name: Head Office
|
295
|
+
branch_address: Zb House Harare
|
296
|
+
branch_code: XXX
|
297
|
+
city: Harare
|
298
|
+
country: Zimbabwe
|
299
|
+
- name: Stanbic Bank Zimbabwe Limited
|
300
|
+
swift: SBICZWH102B
|
301
|
+
swift8: SBICZWH1
|
302
|
+
branch_name: Bulawayo
|
303
|
+
branch_address: Bulawayo
|
304
|
+
branch_code: 02B
|
305
|
+
city: Bulawayo
|
306
|
+
country: Zimbabwe
|
307
|
+
- name: Stanbic Bank Zimbabwe Limited
|
308
|
+
swift: SBICZWH102G
|
309
|
+
swift8: SBICZWH1
|
310
|
+
branch_name: Gweru
|
311
|
+
branch_address: Gweru
|
312
|
+
branch_code: 02G
|
313
|
+
city: Gweru
|
314
|
+
country: Zimbabwe
|
315
|
+
- name: Stanbic Bank Zimbabwe Limited
|
316
|
+
swift: SBICZWHXXXX
|
317
|
+
swift8: SBICZWHX
|
318
|
+
branch_name: Head Office
|
319
|
+
branch_address: Ottoman House Harare
|
320
|
+
branch_code: XXX
|
321
|
+
city: Harare
|
322
|
+
country: Zimbabwe
|
323
|
+
- name: Standard Chartered Bank Zimbabwe Limited
|
324
|
+
swift: SCBLZWHXSSU
|
325
|
+
swift8: SCBLZWHX
|
326
|
+
branch_name: Securities Services Unit
|
327
|
+
branch_address: Harare
|
328
|
+
branch_code: SSU
|
329
|
+
city: Harare
|
330
|
+
country: Zimbabwe
|
331
|
+
- name: Standard Chartered Bank Zimbabwe Limited
|
332
|
+
swift: SCBLZWHXXXX
|
333
|
+
swift8: SCBLZWHX
|
334
|
+
branch_name: Head Office
|
335
|
+
branch_address: 38 Speke Avenue Harare
|
336
|
+
branch_code: XXX
|
337
|
+
city: Harare
|
338
|
+
country: Zimbabwe
|
339
|
+
- name: Steward Bank Limited
|
340
|
+
swift: STBLZWHXXXX
|
341
|
+
swift8: STBLZWHX
|
342
|
+
branch_name: No branch name
|
343
|
+
branch_address: No branch address
|
344
|
+
branch_code: XXX
|
345
|
+
city: Harare
|
346
|
+
country: Zimbabwe
|
347
|
+
- name: Tetrad Investment Bank Limited
|
348
|
+
swift: TTSLZWHXXXX
|
349
|
+
swift8: TTSLZWHX
|
350
|
+
branch_name: Head Office
|
351
|
+
branch_address: Arundel Office Park 263 Harare
|
352
|
+
branch_code: XXX
|
353
|
+
city: Harare
|
354
|
+
country: Zimbabwe
|
355
|
+
- name: The Discount Company Of Zimbabwe Limited
|
356
|
+
swift: DCZWZWH1XXX
|
357
|
+
swift8: DCZWZWH1
|
358
|
+
branch_name: Head Office
|
359
|
+
branch_address: 70 Parklane Harare
|
360
|
+
branch_code: XXX
|
361
|
+
city: Harare
|
362
|
+
country: Zimbabwe
|
363
|
+
- name: The Tetrad Group
|
364
|
+
swift: TEGRZWH1XXX
|
365
|
+
swift8: TEGRZWH1
|
366
|
+
branch_name: Head Office
|
367
|
+
branch_address: Pegasus House Harare
|
368
|
+
branch_code: XXX
|
369
|
+
city: Harare
|
370
|
+
country: Zimbabwe
|
371
|
+
- name: Trust Corporate Securities (private) Limited
|
372
|
+
swift: TCSPZWH1XXX
|
373
|
+
swift8: TCSPZWH1
|
374
|
+
branch_name: Head Office
|
375
|
+
branch_address: Livingstone House Harare
|
376
|
+
branch_code: XXX
|
377
|
+
city: Harare
|
378
|
+
country: Zimbabwe
|
379
|
+
- name: Zimbabwe Banking Corporation Ltd.
|
380
|
+
swift: ZBCOZWHXBYO
|
381
|
+
swift8: ZBCOZWHX
|
382
|
+
branch_name: Bulawayo
|
383
|
+
branch_address: Bulawayo
|
384
|
+
branch_code: BYO
|
385
|
+
city: Bulawayo
|
386
|
+
country: Zimbabwe
|
387
|
+
- name: Zimbabwe Banking Corporation Ltd.
|
388
|
+
swift: ZBCOZWHXXXX
|
389
|
+
swift8: ZBCOZWHX
|
390
|
+
branch_name: Head Office
|
391
|
+
branch_address: Corner First Street and Speke Harare
|
392
|
+
branch_code: XXX
|
393
|
+
city: Harare
|
394
|
+
country: Zimbabwe
|
395
|
+
- name: Zimbabwe Stock Exchange
|
396
|
+
swift: XZIMZWH1XXX
|
397
|
+
swift8: XZIMZWH1
|
398
|
+
branch_name: Head Office
|
399
|
+
branch_address: Chiyedza House Harare
|
400
|
+
branch_code: XXX
|
401
|
+
city: Harare
|
402
|
+
country: Zimbabwe
|
data/data/rules/CH.yml
ADDED
data/data/rules/DE.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'banks_registry/models/bank'
|
5
|
+
|
6
|
+
module BanksRegistry
|
7
|
+
module Loaders
|
8
|
+
class BanksLoader
|
9
|
+
BANKS_FOLDER = 'data/banks'
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@cache = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(code)
|
16
|
+
return @cache[code] if @cache.key?(code)
|
17
|
+
|
18
|
+
@cache[code] =
|
19
|
+
YAML.load_file("#{BANKS_FOLDER}/#{code}.yml")[code].map do |bank|
|
20
|
+
Models::Bank.new(bank)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'banks_registry/models/rule'
|
5
|
+
|
6
|
+
module BanksRegistry
|
7
|
+
module Loaders
|
8
|
+
class RulesLoader
|
9
|
+
RULES_FOLDER = 'data/rules'
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@cache = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(code)
|
16
|
+
return @cache[code] if @cache.key?(code)
|
17
|
+
|
18
|
+
@cache[code] = Models::Rule.new(load_rule_yml(code))
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def load_rule_yml(code)
|
24
|
+
YAML.load_file("#{RULES_FOLDER}/#{code}.yml")[code]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'banks_registry/loaders/banks_loader'
|
4
|
+
|
5
|
+
module BanksRegistry
|
6
|
+
module Matchers
|
7
|
+
class BicMatcher
|
8
|
+
def call(bic)
|
9
|
+
banks_loader.call(country_from_bic(bic)).find do |bank|
|
10
|
+
bank.bic == bic
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def country_from_bic(bic)
|
17
|
+
bic[4..5].upcase
|
18
|
+
end
|
19
|
+
|
20
|
+
def banks_loader
|
21
|
+
@banks_loader ||= ::BanksRegistry::Loaders::BanksLoader.new
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'banks_registry/rule_converter'
|
4
|
+
require 'banks_registry/loaders/rules_loader'
|
5
|
+
|
6
|
+
module BanksRegistry
|
7
|
+
module Matchers
|
8
|
+
class IbanMatcher
|
9
|
+
LEADING_ZEROS_REGEX = /\A0+([^0])/.freeze
|
10
|
+
EXTRA_ZEROS_REGEX = /\A0+\z/.freeze
|
11
|
+
CLEAR_IBAN_REGEX = /\s/.freeze
|
12
|
+
|
13
|
+
def call(iban)
|
14
|
+
bank_code_from_iban = bank_code(iban)
|
15
|
+
|
16
|
+
return unless bank_code_from_iban
|
17
|
+
|
18
|
+
banks_loader.call(country_from_iban(iban)).find do |bank|
|
19
|
+
clear_code(bank.code) == clear_code(bank_code_from_iban)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def country_from_iban(iban)
|
26
|
+
iban[0..1].upcase
|
27
|
+
end
|
28
|
+
|
29
|
+
def clear_code(bank_code)
|
30
|
+
bank_code.gsub(LEADING_ZEROS_REGEX, '\1').gsub(EXTRA_ZEROS_REGEX, '0')
|
31
|
+
end
|
32
|
+
|
33
|
+
def clear_iban(iban)
|
34
|
+
iban.gsub(CLEAR_IBAN_REGEX, '')
|
35
|
+
end
|
36
|
+
|
37
|
+
def bank_code(iban)
|
38
|
+
bank_code_regexp(iban)&.match(clear_iban(iban))&.[](2)
|
39
|
+
end
|
40
|
+
|
41
|
+
def bank_code_regexp(iban)
|
42
|
+
rule_converter.call(iban_rule(country_from_iban(iban)))
|
43
|
+
end
|
44
|
+
|
45
|
+
def iban_rule(code)
|
46
|
+
rules_loader.call(code).iban
|
47
|
+
end
|
48
|
+
|
49
|
+
def rule_converter
|
50
|
+
@rule_converter ||= ::BanksRegistry::RuleConverter.new
|
51
|
+
end
|
52
|
+
|
53
|
+
def rules_loader
|
54
|
+
@rules_loader ||= ::BanksRegistry::Loaders::RulesLoader.new
|
55
|
+
end
|
56
|
+
|
57
|
+
def banks_loader
|
58
|
+
@banks_loader ||= ::BanksRegistry::Loaders::BanksLoader.new
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BanksRegistry
|
4
|
+
module Models
|
5
|
+
class Bank
|
6
|
+
def initialize(attributes = {})
|
7
|
+
@attributes = attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
def name
|
11
|
+
attributes['name']
|
12
|
+
end
|
13
|
+
|
14
|
+
def code
|
15
|
+
attributes['code']
|
16
|
+
end
|
17
|
+
|
18
|
+
def bic
|
19
|
+
attributes['swift']
|
20
|
+
end
|
21
|
+
|
22
|
+
def bic8
|
23
|
+
attributes['swift8']
|
24
|
+
end
|
25
|
+
|
26
|
+
def branch_name
|
27
|
+
attributes['branch_name']
|
28
|
+
end
|
29
|
+
|
30
|
+
def branch_address
|
31
|
+
attributes['branch_address']
|
32
|
+
end
|
33
|
+
|
34
|
+
def branch_code
|
35
|
+
attributes['branch_code']
|
36
|
+
end
|
37
|
+
|
38
|
+
def city
|
39
|
+
attributes['city']
|
40
|
+
end
|
41
|
+
|
42
|
+
def country
|
43
|
+
attributes['country']
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
attr_reader :attributes
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BanksRegistry
|
4
|
+
module Models
|
5
|
+
class Rule
|
6
|
+
def initialize(attributes = {})
|
7
|
+
@attributes = attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
def iban
|
11
|
+
attributes['iban']
|
12
|
+
end
|
13
|
+
|
14
|
+
def bban
|
15
|
+
attributes['bban']
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
attr_reader :attributes
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BanksRegistry
|
4
|
+
class RuleConverter
|
5
|
+
CONVENTIONS = {
|
6
|
+
'(\d+)!n' => '(\d{\1})',
|
7
|
+
'(\d+)!c' => '([A-Za-z0-9]{\1})',
|
8
|
+
'(\d+)!e' => '(\s{\1})',
|
9
|
+
'(\d+)!a' => '([A-Z]{\1})',
|
10
|
+
'(\d+)n' => '(\d{1,\1})',
|
11
|
+
'(\d+)c' => '([A-Za-z0-9]{1,\1})',
|
12
|
+
'(\d+)e' => '(\s{1,\1})',
|
13
|
+
'(\d+)a' => '([A-Z]{1,\1})'
|
14
|
+
}.freeze
|
15
|
+
|
16
|
+
def call(rule)
|
17
|
+
Regexp.new("\\A#{prepare_for_regexp(rule)}\\z")
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def prepare_for_regexp(rule)
|
23
|
+
CONVENTIONS.each.inject(rule) do |memo, (k, v)|
|
24
|
+
memo.gsub(Regexp.new(k), v)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|