genesis_ruby 0.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.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +11 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +158 -0
  5. data/LICENSE +21 -0
  6. data/README.md +343 -0
  7. data/Rakefile +12 -0
  8. data/VERSION +1 -0
  9. data/genesis_ruby.gemspec +43 -0
  10. data/lib/genesis_ruby/api/constants/currencies/iso4217.rb +1106 -0
  11. data/lib/genesis_ruby/api/constants/date_time_formats.rb +45 -0
  12. data/lib/genesis_ruby/api/constants/endpoints.rb +18 -0
  13. data/lib/genesis_ruby/api/constants/environments.rb +17 -0
  14. data/lib/genesis_ruby/api/constants/states/state.rb +43 -0
  15. data/lib/genesis_ruby/api/constants/states.rb +86 -0
  16. data/lib/genesis_ruby/api/constants/transactions/parameters/business/payment_types.rb +24 -0
  17. data/lib/genesis_ruby/api/constants/transactions/parameters/recurring/categories.rb +24 -0
  18. data/lib/genesis_ruby/api/constants/transactions/parameters/recurring/types.rb +28 -0
  19. data/lib/genesis_ruby/api/constants/transactions/parameters/sca_exemptions.rb +34 -0
  20. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/browser/color_depths.rb +46 -0
  21. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/password_change_indicators.rb +37 -0
  22. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/registration_indicators.rb +37 -0
  23. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/shipping_address_usage_indicators.rb +34 -0
  24. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/suspicious_activity_indicators.rb +28 -0
  25. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/card_holder_account/update_indicators.rb +34 -0
  26. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_indicators.rb +34 -0
  27. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/challenge_window_sizes.rb +37 -0
  28. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/control/device_types.rb +28 -0
  29. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/delivery_timeframes.rb +34 -0
  30. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/pre_order_purchase_indicators.rb +28 -0
  31. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/reorder_item_indicators.rb +28 -0
  32. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/merchant_risk/shipping_indicators.rb +46 -0
  33. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/purchase/categories.rb +43 -0
  34. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/interfaces.rb +31 -0
  35. data/lib/genesis_ruby/api/constants/transactions/parameters/threeds/version2/sdk/ui_types.rb +37 -0
  36. data/lib/genesis_ruby/api/constants/transactions.rb +371 -0
  37. data/lib/genesis_ruby/api/mixins/constants/common.rb +27 -0
  38. data/lib/genesis_ruby/api/mixins/requests/address_info_attributes.rb +20 -0
  39. data/lib/genesis_ruby/api/mixins/requests/customer_address/billing_info_attributes.rb +33 -0
  40. data/lib/genesis_ruby/api/mixins/requests/customer_address/customer_info_attributes.rb +26 -0
  41. data/lib/genesis_ruby/api/mixins/requests/customer_address/shipping_info_attributes.rb +33 -0
  42. data/lib/genesis_ruby/api/mixins/requests/document_attributes.rb +14 -0
  43. data/lib/genesis_ruby/api/mixins/requests/financial/async_attributes.rb +34 -0
  44. data/lib/genesis_ruby/api/mixins/requests/financial/base_attributes.rb +16 -0
  45. data/lib/genesis_ruby/api/mixins/requests/financial/business/airlines_air_carriers_attributes.rb +60 -0
  46. data/lib/genesis_ruby/api/mixins/requests/financial/business/business_attributes.rb +56 -0
  47. data/lib/genesis_ruby/api/mixins/requests/financial/business/car_plane_and_boat_rentals_attributes.rb +53 -0
  48. data/lib/genesis_ruby/api/mixins/requests/financial/business/cruise_lines_attributes.rb +50 -0
  49. data/lib/genesis_ruby/api/mixins/requests/financial/business/event_management_attributes.rb +54 -0
  50. data/lib/genesis_ruby/api/mixins/requests/financial/business/furniture_attributes.rb +53 -0
  51. data/lib/genesis_ruby/api/mixins/requests/financial/business/hotels_and_real_estate_rentals_attributes.rb +53 -0
  52. data/lib/genesis_ruby/api/mixins/requests/financial/business/travel_agencies_attributes.rb +88 -0
  53. data/lib/genesis_ruby/api/mixins/requests/financial/cards/credit_card_attributes.rb +31 -0
  54. data/lib/genesis_ruby/api/mixins/requests/financial/cards/fx_rate_attributes.rb +18 -0
  55. data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_category_attributes.rb +31 -0
  56. data/lib/genesis_ruby/api/mixins/requests/financial/cards/recurring/recurring_type_attributes.rb +31 -0
  57. data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_attributes.rb +39 -0
  58. data/lib/genesis_ruby/api/mixins/requests/financial/crypto_attributes.rb +25 -0
  59. data/lib/genesis_ruby/api/mixins/requests/financial/dynamic_descriptor_attributes.rb +114 -0
  60. data/lib/genesis_ruby/api/mixins/requests/financial/gaming_attributes.rb +25 -0
  61. data/lib/genesis_ruby/api/mixins/requests/financial/moto_attributes.rb +25 -0
  62. data/lib/genesis_ruby/api/mixins/requests/financial/notification_attributes.rb +25 -0
  63. data/lib/genesis_ruby/api/mixins/requests/financial/payment_attributes.rb +32 -0
  64. data/lib/genesis_ruby/api/mixins/requests/financial/pending_payment_attributes.rb +25 -0
  65. data/lib/genesis_ruby/api/mixins/requests/financial/reference_attributes.rb +16 -0
  66. data/lib/genesis_ruby/api/mixins/requests/financial/risk_attributes.rb +47 -0
  67. data/lib/genesis_ruby/api/mixins/requests/financial/sca_attributes.rb +37 -0
  68. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/browser.rb +92 -0
  69. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/card_holder_account.rb +183 -0
  70. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/common_attributes.rb +52 -0
  71. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/control.rb +61 -0
  72. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/merchant_risk.rb +114 -0
  73. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/method.rb +44 -0
  74. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/purchase.rb +42 -0
  75. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/recurring.rb +49 -0
  76. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/sdk.rb +107 -0
  77. data/lib/genesis_ruby/api/mixins/requests/financial/threeds/version2/wpf_attributes.rb +61 -0
  78. data/lib/genesis_ruby/api/mixins/requests/restricted_setter.rb +75 -0
  79. data/lib/genesis_ruby/api/request.rb +171 -0
  80. data/lib/genesis_ruby/api/requests/base/financial.rb +44 -0
  81. data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +27 -0
  82. data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +60 -0
  83. data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +76 -0
  84. data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +59 -0
  85. data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +75 -0
  86. data/lib/genesis_ruby/api/requests/wpf/create.rb +142 -0
  87. data/lib/genesis_ruby/api/response.rb +91 -0
  88. data/lib/genesis_ruby/builder.rb +42 -0
  89. data/lib/genesis_ruby/builders/base.rb +18 -0
  90. data/lib/genesis_ruby/builders/xml.rb +95 -0
  91. data/lib/genesis_ruby/configuration.rb +177 -0
  92. data/lib/genesis_ruby/connection.rb +20 -0
  93. data/lib/genesis_ruby/dependencies.rb +19 -0
  94. data/lib/genesis_ruby/errors/builder_error.rb +14 -0
  95. data/lib/genesis_ruby/errors/endpoint_not_set_error.rb +14 -0
  96. data/lib/genesis_ruby/errors/error.rb +18 -0
  97. data/lib/genesis_ruby/errors/invalid_argument_error.rb +14 -0
  98. data/lib/genesis_ruby/errors/network_error.rb +14 -0
  99. data/lib/genesis_ruby/errors/object_formatter_error.rb +14 -0
  100. data/lib/genesis_ruby/errors/parameter_error.rb +12 -0
  101. data/lib/genesis_ruby/errors/parser_error.rb +14 -0
  102. data/lib/genesis_ruby/errors/response_error.rb +14 -0
  103. data/lib/genesis_ruby/network/adapter/base_adapter.rb +31 -0
  104. data/lib/genesis_ruby/network/adapter/net_http_adapter.rb +92 -0
  105. data/lib/genesis_ruby/network/base_network.rb +83 -0
  106. data/lib/genesis_ruby/network/net_http.rb +28 -0
  107. data/lib/genesis_ruby/parser.rb +44 -0
  108. data/lib/genesis_ruby/parsers/base.rb +25 -0
  109. data/lib/genesis_ruby/parsers/xml.rb +120 -0
  110. data/lib/genesis_ruby/utils/common.rb +108 -0
  111. data/lib/genesis_ruby/utils/formatters/base.rb +40 -0
  112. data/lib/genesis_ruby/utils/formatters/response/definitions.rb +21 -0
  113. data/lib/genesis_ruby/utils/formatters/response/formats/amount.rb +34 -0
  114. data/lib/genesis_ruby/utils/formatters/response/formats/timestamp.rb +29 -0
  115. data/lib/genesis_ruby/utils/formatters/response/loader.rb +42 -0
  116. data/lib/genesis_ruby/utils/money/base/strategy.rb +38 -0
  117. data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +22 -0
  118. data/lib/genesis_ruby/utils/money/conversions/exponent_to_amount.rb +22 -0
  119. data/lib/genesis_ruby/utils/money/format.rb +34 -0
  120. data/lib/genesis_ruby/utils/money_format.rb +39 -0
  121. data/lib/genesis_ruby/utils/object_formatter.rb +67 -0
  122. data/lib/genesis_ruby/utils/options/api_config.rb +36 -0
  123. data/lib/genesis_ruby/utils/options/base.rb +35 -0
  124. data/lib/genesis_ruby/utils/options/network_adapter_config.rb +41 -0
  125. data/lib/genesis_ruby/utils/transactions/financial_types.rb +50 -0
  126. data/lib/genesis_ruby/utils/transactions/references/capturable_types.rb +52 -0
  127. data/lib/genesis_ruby/utils/transactions/references/refundable_types.rb +70 -0
  128. data/lib/genesis_ruby/utils/transactions/references/voidable_types.rb +49 -0
  129. data/lib/genesis_ruby/utils/transactions/wpf_types.rb +43 -0
  130. data/lib/genesis_ruby/version.rb +5 -0
  131. data/lib/genesis_ruby.rb +57 -0
  132. metadata +372 -0
@@ -0,0 +1,1106 @@
1
+ require 'genesis_ruby/errors/invalid_argument_error'
2
+
3
+ module GenesisRuby
4
+ module Api
5
+ module Constants
6
+ module Currencies
7
+ # List of currencies, defined by ISO-4217
8
+ class Iso4217 # rubocop:disable Metrics/ClassLength
9
+
10
+ extend Mixins::Constants::Common
11
+
12
+ # List of currencies, defined by ISO-4217
13
+ ISO4217 = {
14
+ AED: {
15
+ name: 'UAE Dirham',
16
+ code: '784',
17
+ country: 'UNITED ARAB EMIRATES (THE)',
18
+ exponent: '2'
19
+ },
20
+ AFN: {
21
+ name: 'Afghani',
22
+ code: '971',
23
+ country: 'AFGHANISTAN',
24
+ exponent: '2'
25
+ },
26
+ ALL: {
27
+ name: 'Lek',
28
+ code: '008',
29
+ country: 'ALBANIA',
30
+ exponent: '2'
31
+ },
32
+ AMD: {
33
+ name: 'Armenian Dram',
34
+ code: '051',
35
+ country: 'ARMENIA',
36
+ exponent: '2'
37
+ },
38
+ ANG: {
39
+ name: 'Netherlands Antillean Guilder',
40
+ code: '532',
41
+ country: 'SINT MAARTEN (DUTCH PART)',
42
+ exponent: '2'
43
+ },
44
+ AOA: {
45
+ name: 'Kwanza',
46
+ code: '973',
47
+ country: 'ANGOLA',
48
+ exponent: '2'
49
+ },
50
+ ARS: {
51
+ name: 'Argentine Peso',
52
+ code: '032',
53
+ country: 'ARGENTINA',
54
+ exponent: '2'
55
+ },
56
+ AUD: {
57
+ name: 'Australian Dollar',
58
+ code: '036',
59
+ country: 'TUVALU',
60
+ exponent: '2'
61
+ },
62
+ AWG: {
63
+ name: 'Aruban Florin',
64
+ code: '533',
65
+ country: 'ARUBA',
66
+ exponent: '2'
67
+ },
68
+ AZN: {
69
+ name: 'Azerbaijanian Manat',
70
+ code: '944',
71
+ country: 'AZERBAIJAN',
72
+ exponent: '2'
73
+ },
74
+ BAM: {
75
+ name: 'Convertible Mark',
76
+ code: '977',
77
+ country: 'BOSNIA AND HERZEGOVINA',
78
+ exponent: '2'
79
+ },
80
+ BBD: {
81
+ name: 'Barbados Dollar',
82
+ code: '052',
83
+ country: 'BARBADOS',
84
+ exponent: '2'
85
+ },
86
+ BDT: {
87
+ name: 'Taka',
88
+ code: '050',
89
+ country: 'BANGLADESH',
90
+ exponent: '2'
91
+ },
92
+ BGN: {
93
+ name: 'Bulgarian Lev',
94
+ code: '975',
95
+ country: 'BULGARIA',
96
+ exponent: '2'
97
+ },
98
+ BHD: {
99
+ name: 'Bahraini Dinar',
100
+ code: '048',
101
+ country: 'BAHRAIN',
102
+ exponent: '3'
103
+ },
104
+ BIF: {
105
+ name: 'Burundi Franc',
106
+ code: '108',
107
+ country: 'BURUNDI',
108
+ exponent: '0'
109
+ },
110
+ BMD: {
111
+ name: 'Bermudian Dollar',
112
+ code: '060',
113
+ country: 'BERMUDA',
114
+ exponent: '2'
115
+ },
116
+ BND: {
117
+ name: 'Brunei Dollar',
118
+ code: '096',
119
+ country: 'BRUNEI DARUSSALAM',
120
+ exponent: '2'
121
+ },
122
+ BOB: {
123
+ name: 'Boliviano',
124
+ code: '068',
125
+ country: 'BOLIVIA (PLURINATIONAL STATE OF)',
126
+ exponent: '2'
127
+ },
128
+ BOV: {
129
+ name: 'Mvdol',
130
+ code: '984',
131
+ country: 'BOLIVIA (PLURINATIONAL STATE OF)',
132
+ exponent: '2'
133
+ },
134
+ BRL: {
135
+ name: 'Brazilian Real',
136
+ code: '986',
137
+ country: 'BRAZIL',
138
+ exponent: '2'
139
+ },
140
+ BSD: {
141
+ name: 'Bahamian Dollar',
142
+ code: '044',
143
+ country: 'BAHAMAS (THE)',
144
+ exponent: '2'
145
+ },
146
+ BTN: {
147
+ name: 'Ngultrum',
148
+ code: '064',
149
+ country: 'BHUTAN',
150
+ exponent: '2'
151
+ },
152
+ BWP: {
153
+ name: 'Pula',
154
+ code: '072',
155
+ country: 'BOTSWANA',
156
+ exponent: '2'
157
+ },
158
+ BYR: {
159
+ name: 'Belarussian Ruble',
160
+ code: '974',
161
+ country: 'BELARUS',
162
+ exponent: '0'
163
+ },
164
+ BZD: {
165
+ name: 'Belize Dollar',
166
+ code: '084',
167
+ country: 'BELIZE',
168
+ exponent: '2'
169
+ },
170
+ CAD: {
171
+ name: 'Canadian Dollar',
172
+ code: '124',
173
+ country: 'CANADA',
174
+ exponent: '2'
175
+ },
176
+ CDF: {
177
+ name: 'Congolese Franc',
178
+ code: '976',
179
+ country: 'CONGO (THE DEMOCRATIC REPUBLIC OF THE)',
180
+ exponent: '2'
181
+ },
182
+ CHE: {
183
+ name: 'WIR Euro',
184
+ code: '947',
185
+ country: 'SWITZERLAND',
186
+ exponent: '2'
187
+ },
188
+ CHF: {
189
+ name: 'Swiss Franc',
190
+ code: '756',
191
+ country: 'SWITZERLAND',
192
+ exponent: '2'
193
+ },
194
+ CHW: {
195
+ name: 'WIR Franc',
196
+ code: '948',
197
+ country: 'SWITZERLAND',
198
+ exponent: '2'
199
+ },
200
+ CLF: {
201
+ name: 'Unidad de Fomento',
202
+ code: '990',
203
+ country: 'CHILE',
204
+ exponent: '4'
205
+ },
206
+ CLP: {
207
+ name: 'Chilean Peso',
208
+ code: '152',
209
+ country: 'CHILE',
210
+ exponent: '0'
211
+ },
212
+ CNY: {
213
+ name: 'Yuan Renminbi',
214
+ code: '156',
215
+ country: 'CHINA',
216
+ exponent: '2'
217
+ },
218
+ COP: {
219
+ name: 'Colombian Peso',
220
+ code: '170',
221
+ country: 'COLOMBIA',
222
+ exponent: '2'
223
+ },
224
+ COU: {
225
+ name: 'Unidad de Valor Real',
226
+ code: '970',
227
+ country: 'COLOMBIA',
228
+ exponent: '2'
229
+ },
230
+ CRC: {
231
+ name: 'Costa Rican Colon',
232
+ code: '188',
233
+ country: 'COSTA RICA',
234
+ exponent: '2'
235
+ },
236
+ CUC: {
237
+ name: 'Peso Convertible',
238
+ code: '931',
239
+ country: 'CUBA',
240
+ exponent: '2'
241
+ },
242
+ CUP: {
243
+ name: 'Cuban Peso',
244
+ code: '192',
245
+ country: 'CUBA',
246
+ exponent: '2'
247
+ },
248
+ CVE: {
249
+ name: 'Cabo Verde Escudo',
250
+ code: '132',
251
+ country: 'CABO VERDE',
252
+ exponent: '2'
253
+ },
254
+ CZK: {
255
+ name: 'Czech Koruna',
256
+ code: '203',
257
+ country: 'CZECH REPUBLIC (THE)',
258
+ exponent: '2'
259
+ },
260
+ DJF: {
261
+ name: 'Djibouti Franc',
262
+ code: '262',
263
+ country: 'DJIBOUTI',
264
+ exponent: '0'
265
+ },
266
+ DKK: {
267
+ name: 'Danish Krone',
268
+ code: '208',
269
+ country: 'GREENLAND',
270
+ exponent: '2'
271
+ },
272
+ DOP: {
273
+ name: 'Dominican Peso',
274
+ code: '214',
275
+ country: 'DOMINICAN REPUBLIC (THE)',
276
+ exponent: '2'
277
+ },
278
+ DZD: {
279
+ name: 'Algerian Dinar',
280
+ code: '012',
281
+ country: 'ALGERIA',
282
+ exponent: '2'
283
+ },
284
+ EGP: {
285
+ name: 'Egyptian Pound',
286
+ code: '818',
287
+ country: 'EGYPT',
288
+ exponent: '2'
289
+ },
290
+ ERN: {
291
+ name: 'Nakfa',
292
+ code: '232',
293
+ country: 'ERITREA',
294
+ exponent: '2'
295
+ },
296
+ ETB: {
297
+ name: 'Ethiopian Birr',
298
+ code: '230',
299
+ country: 'ETHIOPIA',
300
+ exponent: '2'
301
+ },
302
+ EUR: {
303
+ name: 'Euro',
304
+ code: '978',
305
+ country: 'SPAIN',
306
+ exponent: '2'
307
+ },
308
+ FJD: {
309
+ name: 'Fiji Dollar',
310
+ code: '242',
311
+ country: 'FIJI',
312
+ exponent: '2'
313
+ },
314
+ FKP: {
315
+ name: 'Falkland Islands Pound',
316
+ code: '238',
317
+ country: 'FALKLAND ISLANDS (THE) [MALVINAS]',
318
+ exponent: '2'
319
+ },
320
+ GBP: {
321
+ name: 'Pound Sterling',
322
+ code: '826',
323
+ country: 'UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)',
324
+ exponent: '2'
325
+ },
326
+ GEL: {
327
+ name: 'Lari',
328
+ code: '981',
329
+ country: 'GEORGIA',
330
+ exponent: '2'
331
+ },
332
+ GHS: {
333
+ name: 'Ghana Cedi',
334
+ code: '936',
335
+ country: 'GHANA',
336
+ exponent: '2'
337
+ },
338
+ GIP: {
339
+ name: 'Gibraltar Pound',
340
+ code: '292',
341
+ country: 'GIBRALTAR',
342
+ exponent: '2'
343
+ },
344
+ GMD: {
345
+ name: 'Dalasi',
346
+ code: '270',
347
+ country: 'GAMBIA (THE)',
348
+ exponent: '2'
349
+ },
350
+ GNF: {
351
+ name: 'Guinea Franc',
352
+ code: '324',
353
+ country: 'GUINEA',
354
+ exponent: '0'
355
+ },
356
+ GTQ: {
357
+ name: 'Quetzal',
358
+ code: '320',
359
+ country: 'GUATEMALA',
360
+ exponent: '2'
361
+ },
362
+ GYD: {
363
+ name: 'Guyana Dollar',
364
+ code: '328',
365
+ country: 'GUYANA',
366
+ exponent: '2'
367
+ },
368
+ HKD: {
369
+ name: 'Hong Kong Dollar',
370
+ code: '344',
371
+ country: 'HONG KONG',
372
+ exponent: '2'
373
+ },
374
+ HNL: {
375
+ name: 'Lempira',
376
+ code: '340',
377
+ country: 'HONDURAS',
378
+ exponent: '2'
379
+ },
380
+ HRK: {
381
+ name: 'Kuna',
382
+ code: '191',
383
+ country: 'CROATIA',
384
+ exponent: '2'
385
+ },
386
+ HTG: {
387
+ name: 'Gourde',
388
+ code: '332',
389
+ country: 'HAITI',
390
+ exponent: '2'
391
+ },
392
+ HUF: {
393
+ name: 'Forint',
394
+ code: '348',
395
+ country: 'HUNGARY',
396
+ exponent: '2'
397
+ },
398
+ IDR: {
399
+ name: 'Rupiah',
400
+ code: '360',
401
+ country: 'INDONESIA',
402
+ exponent: '2'
403
+ },
404
+ ILS: {
405
+ name: 'New Israeli Sheqel',
406
+ code: '376',
407
+ country: 'ISRAEL',
408
+ exponent: '2'
409
+ },
410
+ INR: {
411
+ name: 'Indian Rupee',
412
+ code: '356',
413
+ country: 'INDIA',
414
+ exponent: '2'
415
+ },
416
+ IQD: {
417
+ name: 'Iraqi Dinar',
418
+ code: '368',
419
+ country: 'IRAQ',
420
+ exponent: '3'
421
+ },
422
+ IRR: {
423
+ name: 'Iranian Rial',
424
+ code: '364',
425
+ country: 'IRAN (ISLAMIC REPUBLIC OF)',
426
+ exponent: '2'
427
+ },
428
+ ISK: {
429
+ name: 'Iceland Krona',
430
+ code: '352',
431
+ country: 'ICELAND',
432
+ exponent: '0'
433
+ },
434
+ JMD: {
435
+ name: 'Jamaican Dollar',
436
+ code: '388',
437
+ country: 'JAMAICA',
438
+ exponent: '2'
439
+ },
440
+ JOD: {
441
+ name: 'Jordanian Dinar',
442
+ code: '400',
443
+ country: 'JORDAN',
444
+ exponent: '3'
445
+ },
446
+ JPY: {
447
+ name: 'Yen',
448
+ code: '392',
449
+ country: 'JAPAN',
450
+ exponent: '0'
451
+ },
452
+ KES: {
453
+ name: 'Kenyan Shilling',
454
+ code: '404',
455
+ country: 'KENYA',
456
+ exponent: '2'
457
+ },
458
+ KGS: {
459
+ name: 'Som',
460
+ code: '417',
461
+ country: 'KYRGYZSTAN',
462
+ exponent: '2'
463
+ },
464
+ KHR: {
465
+ name: 'Riel',
466
+ code: '116',
467
+ country: 'CAMBODIA',
468
+ exponent: '2'
469
+ },
470
+ KMF: {
471
+ name: 'Comoro Franc',
472
+ code: '174',
473
+ country: 'COMOROS (THE)',
474
+ exponent: '0'
475
+ },
476
+ KPW: {
477
+ name: 'North Korean Won',
478
+ code: '408',
479
+ country: 'KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF)',
480
+ exponent: '2'
481
+ },
482
+ KRW: {
483
+ name: 'Won',
484
+ code: '410',
485
+ country: 'KOREA (THE REPUBLIC OF)',
486
+ exponent: '0'
487
+ },
488
+ KWD: {
489
+ name: 'Kuwaiti Dinar',
490
+ code: '414',
491
+ country: 'KUWAIT',
492
+ exponent: '3'
493
+ },
494
+ KYD: {
495
+ name: 'Cayman Islands Dollar',
496
+ code: '136',
497
+ country: 'CAYMAN ISLANDS (THE)',
498
+ exponent: '2'
499
+ },
500
+ KZT: {
501
+ name: 'Tenge',
502
+ code: '398',
503
+ country: 'KAZAKHSTAN',
504
+ exponent: '2'
505
+ },
506
+ LAK: {
507
+ name: 'Kip',
508
+ code: '418',
509
+ country: 'LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE)',
510
+ exponent: '2'
511
+ },
512
+ LBP: {
513
+ name: 'Lebanese Pound',
514
+ code: '422',
515
+ country: 'LEBANON',
516
+ exponent: '2'
517
+ },
518
+ LKR: {
519
+ name: 'Sri Lanka Rupee',
520
+ code: '144',
521
+ country: 'SRI LANKA',
522
+ exponent: '2'
523
+ },
524
+ LRD: {
525
+ name: 'Liberian Dollar',
526
+ code: '430',
527
+ country: 'LIBERIA',
528
+ exponent: '2'
529
+ },
530
+ LSL: {
531
+ name: 'Loti',
532
+ code: '426',
533
+ country: 'LESOTHO',
534
+ exponent: '2'
535
+ },
536
+ LYD: {
537
+ name: 'Libyan Dinar',
538
+ code: '434',
539
+ country: 'LIBYA',
540
+ exponent: '3'
541
+ },
542
+ MAD: {
543
+ name: 'Moroccan Dirham',
544
+ code: '504',
545
+ country: 'WESTERN SAHARA',
546
+ exponent: '2'
547
+ },
548
+ MDL: {
549
+ name: 'Moldovan Leu',
550
+ code: '498',
551
+ country: 'MOLDOVA (THE REPUBLIC OF)',
552
+ exponent: '2'
553
+ },
554
+ MGA: {
555
+ name: 'Malagasy Ariary',
556
+ code: '969',
557
+ country: 'MADAGASCAR',
558
+ exponent: '2'
559
+ },
560
+ MKD: {
561
+ name: 'Denar',
562
+ code: '807',
563
+ country: 'MACEDONIA (THE FORMER YUGOSLAV REPUBLIC OF)',
564
+ exponent: '2'
565
+ },
566
+ MMK: {
567
+ name: 'Kyat',
568
+ code: '104',
569
+ country: 'MYANMAR',
570
+ exponent: '2'
571
+ },
572
+ MNT: {
573
+ name: 'Tugrik',
574
+ code: '496',
575
+ country: 'MONGOLIA',
576
+ exponent: '2'
577
+ },
578
+ MOP: {
579
+ name: 'Pataca',
580
+ code: '446',
581
+ country: 'MACAO',
582
+ exponent: '2'
583
+ },
584
+ MRO: {
585
+ name: 'Ouguiya',
586
+ code: '478',
587
+ country: 'MAURITANIA',
588
+ exponent: '2'
589
+ },
590
+ MUR: {
591
+ name: 'Mauritius Rupee',
592
+ code: '480',
593
+ country: 'MAURITIUS',
594
+ exponent: '2'
595
+ },
596
+ MVR: {
597
+ name: 'Rufiyaa',
598
+ code: '462',
599
+ country: 'MALDIVES',
600
+ exponent: '2'
601
+ },
602
+ MWK: {
603
+ name: 'Kwacha',
604
+ code: '454',
605
+ country: 'MALAWI',
606
+ exponent: '2'
607
+ },
608
+ MXN: {
609
+ name: 'Mexican Peso',
610
+ code: '484',
611
+ country: 'MEXICO',
612
+ exponent: '2'
613
+ },
614
+ MXV: {
615
+ name: 'Mexican Unidad de Inversion (UDI)',
616
+ code: '979',
617
+ country: 'MEXICO',
618
+ exponent: '2'
619
+ },
620
+ MYR: {
621
+ name: 'Malaysian Ringgit',
622
+ code: '458',
623
+ country: 'MALAYSIA',
624
+ exponent: '2'
625
+ },
626
+ MZN: {
627
+ name: 'Mozambique Metical',
628
+ code: '943',
629
+ country: 'MOZAMBIQUE',
630
+ exponent: '2'
631
+ },
632
+ NAD: {
633
+ name: 'Namibia Dollar',
634
+ code: '516',
635
+ country: 'NAMIBIA',
636
+ exponent: '2'
637
+ },
638
+ NGN: {
639
+ name: 'Naira',
640
+ code: '566',
641
+ country: 'NIGERIA',
642
+ exponent: '2'
643
+ },
644
+ NIO: {
645
+ name: 'Cordoba Oro',
646
+ code: '558',
647
+ country: 'NICARAGUA',
648
+ exponent: '2'
649
+ },
650
+ NOK: {
651
+ name: 'Norwegian Krone',
652
+ code: '578',
653
+ country: 'SVALBARD AND JAN MAYEN',
654
+ exponent: '2'
655
+ },
656
+ NPR: {
657
+ name: 'Nepalese Rupee',
658
+ code: '524',
659
+ country: 'NEPAL',
660
+ exponent: '2'
661
+ },
662
+ NZD: {
663
+ name: 'New Zealand Dollar',
664
+ code: '554',
665
+ country: 'TOKELAU',
666
+ exponent: '2'
667
+ },
668
+ OMR: {
669
+ name: 'Rial Omani',
670
+ code: '512',
671
+ country: 'OMAN',
672
+ exponent: '3'
673
+ },
674
+ PAB: {
675
+ name: 'Balboa',
676
+ code: '590',
677
+ country: 'PANAMA',
678
+ exponent: '2'
679
+ },
680
+ PEN: {
681
+ name: 'Nuevo Sol',
682
+ code: '604',
683
+ country: 'PERU',
684
+ exponent: '2'
685
+ },
686
+ PGK: {
687
+ name: 'Kina',
688
+ code: '598',
689
+ country: 'PAPUA NEW GUINEA',
690
+ exponent: '2'
691
+ },
692
+ PHP: {
693
+ name: 'Philippine Peso',
694
+ code: '608',
695
+ country: 'PHILIPPINES (THE)',
696
+ exponent: '2'
697
+ },
698
+ PKR: {
699
+ name: 'Pakistan Rupee',
700
+ code: '586',
701
+ country: 'PAKISTAN',
702
+ exponent: '2'
703
+ },
704
+ PLN: {
705
+ name: 'Zloty',
706
+ code: '985',
707
+ country: 'POLAND',
708
+ exponent: '2'
709
+ },
710
+ PYG: {
711
+ name: 'Guarani',
712
+ code: '600',
713
+ country: 'PARAGUAY',
714
+ exponent: '0'
715
+ },
716
+ QAR: {
717
+ name: 'Qatari Rial',
718
+ code: '634',
719
+ country: 'QATAR',
720
+ exponent: '2'
721
+ },
722
+ RON: {
723
+ name: 'Romanian Leu',
724
+ code: '946',
725
+ country: 'ROMANIA',
726
+ exponent: '2'
727
+ },
728
+ RSD: {
729
+ name: 'Serbian Dinar',
730
+ code: '941',
731
+ country: 'SERBIA',
732
+ exponent: '2'
733
+ },
734
+ RUB: {
735
+ name: 'Russian Ruble',
736
+ code: '643',
737
+ country: 'RUSSIAN FEDERATION (THE)',
738
+ exponent: '2'
739
+ },
740
+ RWF: {
741
+ name: 'Rwanda Franc',
742
+ code: '646',
743
+ country: 'RWANDA',
744
+ exponent: '0'
745
+ },
746
+ SAR: {
747
+ name: 'Saudi Riyal',
748
+ code: '682',
749
+ country: 'SAUDI ARABIA',
750
+ exponent: '2'
751
+ },
752
+ SBD: {
753
+ name: 'Solomon Islands Dollar',
754
+ code: '090',
755
+ country: 'SOLOMON ISLANDS',
756
+ exponent: '2'
757
+ },
758
+ SCR: {
759
+ name: 'Seychelles Rupee',
760
+ code: '690',
761
+ country: 'SEYCHELLES',
762
+ exponent: '2'
763
+ },
764
+ SDG: {
765
+ name: 'Sudanese Pound',
766
+ code: '938',
767
+ country: 'SUDAN (THE)',
768
+ exponent: '2'
769
+ },
770
+ SEK: {
771
+ name: 'Swedish Krona',
772
+ code: '752',
773
+ country: 'SWEDEN',
774
+ exponent: '2'
775
+ },
776
+ SGD: {
777
+ name: 'Singapore Dollar',
778
+ code: '702',
779
+ country: 'SINGAPORE',
780
+ exponent: '2'
781
+ },
782
+ SHP: {
783
+ name: 'Saint Helena Pound',
784
+ code: '654',
785
+ country: 'SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA',
786
+ exponent: '2'
787
+ },
788
+ SLL: {
789
+ name: 'Leone',
790
+ code: '694',
791
+ country: 'SIERRA LEONE',
792
+ exponent: '2'
793
+ },
794
+ SOS: {
795
+ name: 'Somali Shilling',
796
+ code: '706',
797
+ country: 'SOMALIA',
798
+ exponent: '2'
799
+ },
800
+ SRD: {
801
+ name: 'Surinam Dollar',
802
+ code: '968',
803
+ country: 'SURINAME',
804
+ exponent: '2'
805
+ },
806
+ SSP: {
807
+ name: 'South Sudanese Pound',
808
+ code: '728',
809
+ country: 'SOUTH SUDAN',
810
+ exponent: '2'
811
+ },
812
+ STD: {
813
+ name: 'Dobra',
814
+ code: '678',
815
+ country: 'SAO TOME AND PRINCIPE',
816
+ exponent: '2'
817
+ },
818
+ SVC: {
819
+ name: 'El Salvador Colon',
820
+ code: '222',
821
+ country: 'EL SALVADOR',
822
+ exponent: '2'
823
+ },
824
+ SYP: {
825
+ name: 'Syrian Pound',
826
+ code: '760',
827
+ country: 'SYRIAN ARAB REPUBLIC',
828
+ exponent: '2'
829
+ },
830
+ SZL: {
831
+ name: 'Lilangeni',
832
+ code: '748',
833
+ country: 'SWAZILAND',
834
+ exponent: '2'
835
+ },
836
+ THB: {
837
+ name: 'Baht',
838
+ code: '764',
839
+ country: 'THAILAND',
840
+ exponent: '2'
841
+ },
842
+ TJS: {
843
+ name: 'Somoni',
844
+ code: '972',
845
+ country: 'TAJIKISTAN',
846
+ exponent: '2'
847
+ },
848
+ TMT: {
849
+ name: 'Turkmenistan New Manat',
850
+ code: '934',
851
+ country: 'TURKMENISTAN',
852
+ exponent: '2'
853
+ },
854
+ TND: {
855
+ name: 'Tunisian Dinar',
856
+ code: '788',
857
+ country: 'TUNISIA',
858
+ exponent: '3'
859
+ },
860
+ TOP: {
861
+ name: 'Pa’anga',
862
+ code: '776',
863
+ country: 'TONGA',
864
+ exponent: '2'
865
+ },
866
+ TRY: {
867
+ name: 'Turkish Lira',
868
+ code: '949',
869
+ country: 'TURKEY',
870
+ exponent: '2'
871
+ },
872
+ TTD: {
873
+ name: 'Trinidad and Tobago Dollar',
874
+ code: '780',
875
+ country: 'TRINIDAD AND TOBAGO',
876
+ exponent: '2'
877
+ },
878
+ TWD: {
879
+ name: 'New Taiwan Dollar',
880
+ code: '901',
881
+ country: 'TAIWAN (PROVINCE OF CHINA)',
882
+ exponent: '2'
883
+ },
884
+ TZS: {
885
+ name: 'Tanzanian Shilling',
886
+ code: '834',
887
+ country: 'TANZANIA, UNITED REPUBLIC OF',
888
+ exponent: '2'
889
+ },
890
+ UAH: {
891
+ name: 'Hryvnia',
892
+ code: '980',
893
+ country: 'UKRAINE',
894
+ exponent: '2'
895
+ },
896
+ UGX: {
897
+ name: 'Uganda Shilling',
898
+ code: '800',
899
+ country: 'UGANDA',
900
+ exponent: '0'
901
+ },
902
+ USD: {
903
+ name: 'US Dollar',
904
+ code: '840',
905
+ country: 'VIRGIN ISLANDS (U.S.)',
906
+ exponent: '2'
907
+ },
908
+ USN: {
909
+ name: 'US Dollar (Next day)',
910
+ code: '997',
911
+ country: 'UNITED STATES OF AMERICA (THE)',
912
+ exponent: '2'
913
+ },
914
+ UYI: {
915
+ name: 'Uruguay Peso en Unidades Indexadas (URUIURUI)',
916
+ code: '940',
917
+ country: 'URUGUAY',
918
+ exponent: '0'
919
+ },
920
+ UYU: {
921
+ name: 'Peso Uruguayo',
922
+ code: '858',
923
+ country: 'URUGUAY',
924
+ exponent: '2'
925
+ },
926
+ UZS: {
927
+ name: 'Uzbekistan Sum',
928
+ code: '860',
929
+ country: 'UZBEKISTAN',
930
+ exponent: '2'
931
+ },
932
+ VEF: {
933
+ name: 'Bolivar',
934
+ code: '937',
935
+ country: 'VENEZUELA (BOLIVARIAN REPUBLIC OF)',
936
+ exponent: '2'
937
+ },
938
+ VND: {
939
+ name: 'Dong',
940
+ code: '704',
941
+ country: 'VIET NAM',
942
+ exponent: '0'
943
+ },
944
+ VUV: {
945
+ name: 'Vatu',
946
+ code: '548',
947
+ country: 'VANUATU',
948
+ exponent: '0'
949
+ },
950
+ WST: {
951
+ name: 'Tala',
952
+ code: '882',
953
+ country: 'SAMOA',
954
+ exponent: '2'
955
+ },
956
+ XAF: {
957
+ name: 'CFA Franc BEAC',
958
+ code: '950',
959
+ country: 'GABON',
960
+ exponent: '0'
961
+ },
962
+ XAG: {
963
+ name: 'Silver',
964
+ code: '961',
965
+ country: 'ZZ11_Silver',
966
+ exponent: 'N.A.'
967
+ },
968
+ XAU: {
969
+ name: 'Gold',
970
+ code: '959',
971
+ country: 'ZZ08_Gold',
972
+ exponent: 'N.A.'
973
+ },
974
+ XBA: {
975
+ name: 'Bond Markets Unit European Composite Unit (EURCO)',
976
+ code: '955',
977
+ country: 'ZZ01_Bond Markets Unit European_EURCO',
978
+ exponent: 'N.A.'
979
+ },
980
+ XBB: {
981
+ name: 'Bond Markets Unit European Monetary Unit (E.M.U.-6)',
982
+ code: '956',
983
+ country: 'ZZ02_Bond Markets Unit European_EMU-6',
984
+ exponent: 'N.A.'
985
+ },
986
+ XBC: {
987
+ name: 'Bond Markets Unit European Unit of Account 9 (E.U.A.-9)',
988
+ code: '957',
989
+ country: 'ZZ03_Bond Markets Unit European_EUA-9',
990
+ exponent: 'N.A.'
991
+ },
992
+ XBD: {
993
+ name: 'Bond Markets Unit European Unit of Account 17 (E.U.A.-17)',
994
+ code: '958',
995
+ country: 'ZZ04_Bond Markets Unit European_EUA-17',
996
+ exponent: 'N.A.'
997
+ },
998
+ XCD: {
999
+ name: 'East Caribbean Dollar',
1000
+ code: '951',
1001
+ country: 'SAINT VINCENT AND THE GRENADINES',
1002
+ exponent: '2'
1003
+ },
1004
+ XDR: {
1005
+ name: 'SDR (Special Drawing Right)',
1006
+ code: '960',
1007
+ country: 'INTERNATIONAL MONETARY FUND (IMF)Â ',
1008
+ exponent: 'N.A.'
1009
+ },
1010
+ XOF: {
1011
+ name: 'CFA Franc BCEAO',
1012
+ code: '952',
1013
+ country: 'TOGO',
1014
+ exponent: '0'
1015
+ },
1016
+ XPD: {
1017
+ name: 'Palladium',
1018
+ code: '964',
1019
+ country: 'ZZ09_Palladium',
1020
+ exponent: 'N.A.'
1021
+ },
1022
+ XPF: {
1023
+ name: 'CFP Franc',
1024
+ code: '953',
1025
+ country: 'WALLIS AND FUTUNA',
1026
+ exponent: '0'
1027
+ },
1028
+ XPT: {
1029
+ name: 'Platinum',
1030
+ code: '962',
1031
+ country: 'ZZ10_Platinum',
1032
+ exponent: 'N.A.'
1033
+ },
1034
+ XSU: {
1035
+ name: 'Sucre',
1036
+ code: '994',
1037
+ country: 'SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS "SUCRE"',
1038
+ exponent: 'N.A.'
1039
+ },
1040
+ XTS: {
1041
+ name: 'Codes specifically reserved for testing purposes',
1042
+ code: '963',
1043
+ country: 'ZZ06_Testing_Code',
1044
+ exponent: 'N.A.'
1045
+ },
1046
+ XUA: {
1047
+ name: 'ADB Unit of Account',
1048
+ code: '965',
1049
+ country: 'MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP',
1050
+ exponent: 'N.A.'
1051
+ },
1052
+ XXX: {
1053
+ name: 'The codes assigned for transactions where no currency is involved',
1054
+ code: '999',
1055
+ country: 'ZZ07_No_Currency',
1056
+ exponent: 'N.A.'
1057
+ },
1058
+ YER: {
1059
+ name: 'Yemeni Rial',
1060
+ code: '886',
1061
+ country: 'YEMEN',
1062
+ exponent: '2'
1063
+ },
1064
+ ZAR: {
1065
+ name: 'Rand',
1066
+ code: '710',
1067
+ country: 'SOUTH AFRICA',
1068
+ exponent: '2'
1069
+ },
1070
+ ZMW: {
1071
+ name: 'Zambian Kwacha',
1072
+ code: '967',
1073
+ country: 'ZAMBIA',
1074
+ exponent: '2'
1075
+ },
1076
+ ZWL: {
1077
+ name: 'Zimbabwe Dollar',
1078
+ code: '932',
1079
+ country: 'ZIMBABWE',
1080
+ exponent: '2'
1081
+ }
1082
+ }.freeze
1083
+
1084
+ class << self
1085
+
1086
+ # Get all Iso-4217 Currencies
1087
+ def all
1088
+ ISO4217.keys.map { |currency| currency.to_s.downcase }
1089
+ end
1090
+
1091
+ # Fetch the exponent for the given currency
1092
+ def fetch_exponent(iso_currency)
1093
+ raise InvalidArgumentError, 'Nil Currency value given' if iso_currency.nil?
1094
+
1095
+ iso_currency.to_s.upcase!
1096
+
1097
+ ISO4217.key?(iso_currency.to_sym) ? ISO4217[iso_currency.to_sym][:exponent].to_i : 0
1098
+ end
1099
+
1100
+ end
1101
+
1102
+ end
1103
+ end
1104
+ end
1105
+ end
1106
+ end