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.
Files changed (249) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +59 -0
  4. data/data/banks/AD.yml +58 -0
  5. data/data/banks/AE.yml +2733 -0
  6. data/data/banks/AF.yml +162 -0
  7. data/data/banks/AG.yml +154 -0
  8. data/data/banks/AI.yml +42 -0
  9. data/data/banks/AL.yml +346 -0
  10. data/data/banks/AM.yml +194 -0
  11. data/data/banks/AO.yml +258 -0
  12. data/data/banks/AR.yml +1274 -0
  13. data/data/banks/AS.yml +18 -0
  14. data/data/banks/AT.yml +8237 -0
  15. data/data/banks/AU.yml +5203 -0
  16. data/data/banks/AW.yml +74 -0
  17. data/data/banks/AZ.yml +458 -0
  18. data/data/banks/BA.yml +274 -0
  19. data/data/banks/BB.yml +210 -0
  20. data/data/banks/BD.yml +5418 -0
  21. data/data/banks/BE.yml +3570 -0
  22. data/data/banks/BF.yml +147 -0
  23. data/data/banks/BG.yml +946 -0
  24. data/data/banks/BH.yml +1146 -0
  25. data/data/banks/BI.yml +130 -0
  26. data/data/banks/BJ.yml +106 -0
  27. data/data/banks/BM.yml +394 -0
  28. data/data/banks/BN.yml +90 -0
  29. data/data/banks/BO.yml +434 -0
  30. data/data/banks/BQ.yml +58 -0
  31. data/data/banks/BR.yml +2986 -0
  32. data/data/banks/BS.yml +778 -0
  33. data/data/banks/BT.yml +58 -0
  34. data/data/banks/BW.yml +354 -0
  35. data/data/banks/BY.yml +770 -0
  36. data/data/banks/BZ.yml +122 -0
  37. data/data/banks/CA.yml +3994 -0
  38. data/data/banks/CD.yml +387 -0
  39. data/data/banks/CF.yml +42 -0
  40. data/data/banks/CH.yml +24428 -0
  41. data/data/banks/CI.yml +450 -0
  42. data/data/banks/CK.yml +42 -0
  43. data/data/banks/CL.yml +850 -0
  44. data/data/banks/CM.yml +346 -0
  45. data/data/banks/CN.yml +10061 -0
  46. data/data/banks/CO.yml +1337 -0
  47. data/data/banks/CR.yml +250 -0
  48. data/data/banks/CU.yml +114 -0
  49. data/data/banks/CV.yml +114 -0
  50. data/data/banks/CW.yml +378 -0
  51. data/data/banks/CY.yml +1459 -0
  52. data/data/banks/CZ.yml +987 -0
  53. data/data/banks/DE.yml +44561 -0
  54. data/data/banks/DJ.yml +82 -0
  55. data/data/banks/DK.yml +3387 -0
  56. data/data/banks/DM.yml +66 -0
  57. data/data/banks/DO.yml +1402 -0
  58. data/data/banks/DZ.yml +570 -0
  59. data/data/banks/EC.yml +2864 -0
  60. data/data/banks/EE.yml +250 -0
  61. data/data/banks/EG.yml +4218 -0
  62. data/data/banks/ER.yml +26 -0
  63. data/data/banks/ES.yml +5458 -0
  64. data/data/banks/ET.yml +242 -0
  65. data/data/banks/FI.yml +4059 -0
  66. data/data/banks/FJ.yml +82 -0
  67. data/data/banks/FK.yml +10 -0
  68. data/data/banks/FM.yml +10 -0
  69. data/data/banks/FO.yml +42 -0
  70. data/data/banks/FR.yml +24085 -0
  71. data/data/banks/GA.yml +194 -0
  72. data/data/banks/GB.yml +42510 -0
  73. data/data/banks/GD.yml +58 -0
  74. data/data/banks/GE.yml +514 -0
  75. data/data/banks/GF.yml +42 -0
  76. data/data/banks/GG.yml +603 -0
  77. data/data/banks/GH.yml +698 -0
  78. data/data/banks/GI.yml +226 -0
  79. data/data/banks/GL.yml +10 -0
  80. data/data/banks/GM.yml +114 -0
  81. data/data/banks/GN.yml +138 -0
  82. data/data/banks/GP.yml +122 -0
  83. data/data/banks/GQ.yml +90 -0
  84. data/data/banks/GR.yml +1671 -0
  85. data/data/banks/GT.yml +482 -0
  86. data/data/banks/GU.yml +42 -0
  87. data/data/banks/GW.yml +34 -0
  88. data/data/banks/GY.yml +66 -0
  89. data/data/banks/HK.yml +10032 -0
  90. data/data/banks/HN.yml +370 -0
  91. data/data/banks/HR.yml +618 -0
  92. data/data/banks/HT.yml +106 -0
  93. data/data/banks/HU.yml +1267 -0
  94. data/data/banks/ID.yml +3802 -0
  95. data/data/banks/IE.yml +6155 -0
  96. data/data/banks/IL.yml +594 -0
  97. data/data/banks/IM.yml +650 -0
  98. data/data/banks/IN.yml +10050 -0
  99. data/data/banks/IQ.yml +538 -0
  100. data/data/banks/IR.yml +1370 -0
  101. data/data/banks/IS.yml +258 -0
  102. data/data/banks/IT.yml +49391 -0
  103. data/data/banks/JE.yml +938 -0
  104. data/data/banks/JM.yml +450 -0
  105. data/data/banks/JO.yml +1122 -0
  106. data/data/banks/JP.yml +5114 -0
  107. data/data/banks/KE.yml +1106 -0
  108. data/data/banks/KG.yml +194 -0
  109. data/data/banks/KH.yml +330 -0
  110. data/data/banks/KI.yml +10 -0
  111. data/data/banks/KM.yml +98 -0
  112. data/data/banks/KN.yml +138 -0
  113. data/data/banks/KP.yml +106 -0
  114. data/data/banks/KR.yml +1963 -0
  115. data/data/banks/KW.yml +674 -0
  116. data/data/banks/KY.yml +1316 -0
  117. data/data/banks/KZ.yml +722 -0
  118. data/data/banks/LA.yml +242 -0
  119. data/data/banks/LB.yml +1026 -0
  120. data/data/banks/LC.yml +74 -0
  121. data/data/banks/LI.yml +234 -0
  122. data/data/banks/LK.yml +626 -0
  123. data/data/banks/LR.yml +138 -0
  124. data/data/banks/LS.yml +50 -0
  125. data/data/banks/LT.yml +364 -0
  126. data/data/banks/LU.yml +3484 -0
  127. data/data/banks/LV.yml +434 -0
  128. data/data/banks/LY.yml +866 -0
  129. data/data/banks/MA.yml +682 -0
  130. data/data/banks/MC.yml +466 -0
  131. data/data/banks/MD.yml +202 -0
  132. data/data/banks/ME.yml +98 -0
  133. data/data/banks/MG.yml +130 -0
  134. data/data/banks/MH.yml +26 -0
  135. data/data/banks/MK.yml +370 -0
  136. data/data/banks/ML.yml +138 -0
  137. data/data/banks/MM.yml +170 -0
  138. data/data/banks/MN.yml +122 -0
  139. data/data/banks/MO.yml +258 -0
  140. data/data/banks/MP.yml +26 -0
  141. data/data/banks/MQ.yml +82 -0
  142. data/data/banks/MR.yml +162 -0
  143. data/data/banks/MS.yml +18 -0
  144. data/data/banks/MT.yml +578 -0
  145. data/data/banks/MU.yml +434 -0
  146. data/data/banks/MV.yml +66 -0
  147. data/data/banks/MW.yml +202 -0
  148. data/data/banks/MX.yml +1321 -0
  149. data/data/banks/MY.yml +2908 -0
  150. data/data/banks/MZ.yml +202 -0
  151. data/data/banks/NA.yml +138 -0
  152. data/data/banks/NC.yml +130 -0
  153. data/data/banks/NE.yml +106 -0
  154. data/data/banks/NG.yml +794 -0
  155. data/data/banks/NI.yml +146 -0
  156. data/data/banks/NL.yml +6050 -0
  157. data/data/banks/NO.yml +2882 -0
  158. data/data/banks/NP.yml +298 -0
  159. data/data/banks/NR.yml +18 -0
  160. data/data/banks/NZ.yml +1383 -0
  161. data/data/banks/OM.yml +450 -0
  162. data/data/banks/PA.yml +850 -0
  163. data/data/banks/PE.yml +242 -0
  164. data/data/banks/PF.yml +82 -0
  165. data/data/banks/PG.yml +50 -0
  166. data/data/banks/PH.yml +3154 -0
  167. data/data/banks/PK.yml +2266 -0
  168. data/data/banks/PL.yml +3578 -0
  169. data/data/banks/PM.yml +18 -0
  170. data/data/banks/PR.yml +170 -0
  171. data/data/banks/PS.yml +466 -0
  172. data/data/banks/PT.yml +2666 -0
  173. data/data/banks/PW.yml +10 -0
  174. data/data/banks/PY.yml +290 -0
  175. data/data/banks/QA.yml +578 -0
  176. data/data/banks/RE.yml +82 -0
  177. data/data/banks/RO.yml +1379 -0
  178. data/data/banks/RS.yml +770 -0
  179. data/data/banks/RU.yml +13939 -0
  180. data/data/banks/RW.yml +170 -0
  181. data/data/banks/SA.yml +794 -0
  182. data/data/banks/SB.yml +26 -0
  183. data/data/banks/SC.yml +90 -0
  184. data/data/banks/SD.yml +650 -0
  185. data/data/banks/SE.yml +3138 -0
  186. data/data/banks/SG.yml +4107 -0
  187. data/data/banks/SH.yml +10 -0
  188. data/data/banks/SI.yml +458 -0
  189. data/data/banks/SK.yml +874 -0
  190. data/data/banks/SL.yml +138 -0
  191. data/data/banks/SM.yml +562 -0
  192. data/data/banks/SN.yml +242 -0
  193. data/data/banks/SO.yml +18 -0
  194. data/data/banks/SR.yml +98 -0
  195. data/data/banks/SS.yml +202 -0
  196. data/data/banks/ST.yml +74 -0
  197. data/data/banks/SV.yml +179 -0
  198. data/data/banks/SX.yml +58 -0
  199. data/data/banks/SY.yml +282 -0
  200. data/data/banks/SZ.yml +58 -0
  201. data/data/banks/TC.yml +50 -0
  202. data/data/banks/TD.yml +98 -0
  203. data/data/banks/TG.yml +227 -0
  204. data/data/banks/TH.yml +2132 -0
  205. data/data/banks/TJ.yml +178 -0
  206. data/data/banks/TL.yml +26 -0
  207. data/data/banks/TM.yml +106 -0
  208. data/data/banks/TN.yml +539 -0
  209. data/data/banks/TO.yml +34 -0
  210. data/data/banks/TR.yml +3362 -0
  211. data/data/banks/TT.yml +298 -0
  212. data/data/banks/TV.yml +10 -0
  213. data/data/banks/TW.yml +5746 -0
  214. data/data/banks/TZ.yml +746 -0
  215. data/data/banks/UA.yml +2450 -0
  216. data/data/banks/UG.yml +362 -0
  217. data/data/banks/US.yml +31004 -0
  218. data/data/banks/UY.yml +611 -0
  219. data/data/banks/UZ.yml +474 -0
  220. data/data/banks/VA.yml +26 -0
  221. data/data/banks/VC.yml +98 -0
  222. data/data/banks/VE.yml +754 -0
  223. data/data/banks/VG.yml +203 -0
  224. data/data/banks/VN.yml +1975 -0
  225. data/data/banks/VU.yml +98 -0
  226. data/data/banks/WF.yml +26 -0
  227. data/data/banks/WS.yml +66 -0
  228. data/data/banks/XK.yml +226 -0
  229. data/data/banks/YE.yml +570 -0
  230. data/data/banks/YT.yml +10 -0
  231. data/data/banks/ZA.yml +2645 -0
  232. data/data/banks/ZM.yml +410 -0
  233. data/data/banks/ZW.yml +402 -0
  234. data/data/rules/CH.yml +4 -0
  235. data/data/rules/DE.yml +4 -0
  236. data/lib/banks_registry/loaders/banks_loader.rb +25 -0
  237. data/lib/banks_registry/loaders/rules_loader.rb +28 -0
  238. data/lib/banks_registry/matchers/bic_matcher.rb +25 -0
  239. data/lib/banks_registry/matchers/iban_matcher.rb +62 -0
  240. data/lib/banks_registry/models/bank.rb +51 -0
  241. data/lib/banks_registry/models/rule.rb +23 -0
  242. data/lib/banks_registry/rule_converter.rb +28 -0
  243. data/lib/banks_registry/version.rb +5 -0
  244. metadata +242 -6
  245. data/.idea/iban-to-swift.iml +0 -31
  246. data/.idea/misc.xml +0 -7
  247. data/.idea/modules.xml +0 -8
  248. data/.idea/vcs.xml +0 -6
  249. 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
@@ -0,0 +1,4 @@
1
+ ---
2
+ CH:
3
+ bban: 5!n12!c
4
+ iban: CH2!n5!n12!c
data/data/rules/DE.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ DE:
3
+ bban: 8!n10!n
4
+ iban: DE2!n8!n10!n
@@ -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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BanksRegistry
4
+ VERSION = '0.1.1'
5
+ end