eml 1.0.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 (116) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +10 -0
  3. data/.env.example +6 -0
  4. data/.gitignore +5 -0
  5. data/.rspec +5 -0
  6. data/.rubocop.yml +90 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE +21 -0
  9. data/README.md +87 -0
  10. data/eml.gemspec +37 -0
  11. data/lib/eml.rb +22 -0
  12. data/lib/eml/config.rb +49 -0
  13. data/lib/eml/data/countries.rb +260 -0
  14. data/lib/eml/data/currencies.rb +176 -0
  15. data/lib/eml/data/states.rb +4055 -0
  16. data/lib/eml/environment.rb +54 -0
  17. data/lib/eml/error.rb +25 -0
  18. data/lib/eml/error/rest.rb +42 -0
  19. data/lib/eml/error/rest/authentication.rb +21 -0
  20. data/lib/eml/error/rest/bad_request.rb +20 -0
  21. data/lib/eml/error/rest/daily_funding_limit.rb +19 -0
  22. data/lib/eml/error/rest/forbidden.rb +20 -0
  23. data/lib/eml/error/rest/internal_server.rb +9 -0
  24. data/lib/eml/error/rest/not_found.rb +20 -0
  25. data/lib/eml/error/rest/unprocessable_entity.rb +20 -0
  26. data/lib/eml/lib/endpoint_class.rb +42 -0
  27. data/lib/eml/parameters.rb +153 -0
  28. data/lib/eml/payload.rb +137 -0
  29. data/lib/eml/response.rb +103 -0
  30. data/lib/eml/uk.rb +51 -0
  31. data/lib/eml/uk/api_resource.rb +94 -0
  32. data/lib/eml/uk/config.rb +52 -0
  33. data/lib/eml/uk/lib/endpoint_class.rb +19 -0
  34. data/lib/eml/uk/lib/parse_date.rb +35 -0
  35. data/lib/eml/uk/model/transaction.rb +56 -0
  36. data/lib/eml/uk/parameters.rb +99 -0
  37. data/lib/eml/uk/parameters/agreement/show.rb +22 -0
  38. data/lib/eml/uk/parameters/card/activation.rb +24 -0
  39. data/lib/eml/uk/parameters/card/lock.rb +26 -0
  40. data/lib/eml/uk/parameters/card/register.rb +24 -0
  41. data/lib/eml/uk/parameters/card/reload.rb +24 -0
  42. data/lib/eml/uk/parameters/card/show.rb +102 -0
  43. data/lib/eml/uk/parameters/card/transaction.rb +59 -0
  44. data/lib/eml/uk/parameters/card/unload.rb +26 -0
  45. data/lib/eml/uk/parameters/card/unlock.rb +26 -0
  46. data/lib/eml/uk/parameters/card/void.rb +26 -0
  47. data/lib/eml/uk/payload.rb +94 -0
  48. data/lib/eml/uk/payload/agreement/show.rb +46 -0
  49. data/lib/eml/uk/payload/card/activation.rb +73 -0
  50. data/lib/eml/uk/payload/card/lock.rb +34 -0
  51. data/lib/eml/uk/payload/card/register.rb +70 -0
  52. data/lib/eml/uk/payload/card/reload.rb +38 -0
  53. data/lib/eml/uk/payload/card/show.rb +12 -0
  54. data/lib/eml/uk/payload/card/transaction.rb +12 -0
  55. data/lib/eml/uk/payload/card/unload.rb +38 -0
  56. data/lib/eml/uk/payload/card/unlock.rb +23 -0
  57. data/lib/eml/uk/payload/card/void.rb +23 -0
  58. data/lib/eml/uk/payload/contactentity.rb +64 -0
  59. data/lib/eml/uk/payload/iso.rb +48 -0
  60. data/lib/eml/uk/payload/location.rb +30 -0
  61. data/lib/eml/uk/resources/agreement.rb +32 -0
  62. data/lib/eml/uk/resources/card.rb +181 -0
  63. data/lib/eml/uk/response.rb +29 -0
  64. data/lib/eml/uk/responses/agreement/show.rb +16 -0
  65. data/lib/eml/uk/responses/card/reload.rb +19 -0
  66. data/lib/eml/uk/responses/card/show.rb +53 -0
  67. data/lib/eml/uk/responses/card/transaction.rb +24 -0
  68. data/lib/eml/version.rb +6 -0
  69. data/sorbet/config +2 -0
  70. data/sorbet/rbi/gems/addressable.rbi +198 -0
  71. data/sorbet/rbi/gems/ast.rbi +47 -0
  72. data/sorbet/rbi/gems/concurrent-ruby.rbi +218 -0
  73. data/sorbet/rbi/gems/crack.rbi +47 -0
  74. data/sorbet/rbi/gems/docile.rbi +31 -0
  75. data/sorbet/rbi/gems/domain_name.rbi +51 -0
  76. data/sorbet/rbi/gems/dotenv.rbi +67 -0
  77. data/sorbet/rbi/gems/faker.rbi +1350 -0
  78. data/sorbet/rbi/gems/hashdiff.rbi +65 -0
  79. data/sorbet/rbi/gems/http-cookie.rbi +92 -0
  80. data/sorbet/rbi/gems/http-form_data.rbi +73 -0
  81. data/sorbet/rbi/gems/http.rbi +609 -0
  82. data/sorbet/rbi/gems/http_parser.rb.rbi +36 -0
  83. data/sorbet/rbi/gems/i18n.rbi +191 -0
  84. data/sorbet/rbi/gems/jaro_winkler.rbi +14 -0
  85. data/sorbet/rbi/gems/parallel.rbi +81 -0
  86. data/sorbet/rbi/gems/parser.rbi +835 -0
  87. data/sorbet/rbi/gems/public_suffix.rbi +103 -0
  88. data/sorbet/rbi/gems/rainbow.rbi +117 -0
  89. data/sorbet/rbi/gems/rspec-core.rbi +1655 -0
  90. data/sorbet/rbi/gems/rspec-support.rbi +126 -0
  91. data/sorbet/rbi/gems/rspec.rbi +14 -0
  92. data/sorbet/rbi/gems/rubocop-performance.rbi +276 -0
  93. data/sorbet/rbi/gems/rubocop-rspec.rbi +860 -0
  94. data/sorbet/rbi/gems/rubocop.rbi +6943 -0
  95. data/sorbet/rbi/gems/ruby-progressbar.rbi +304 -0
  96. data/sorbet/rbi/gems/simplecov-html.rbi +30 -0
  97. data/sorbet/rbi/gems/simplecov.rbi +225 -0
  98. data/sorbet/rbi/gems/unf.rbi +18 -0
  99. data/sorbet/rbi/gems/unicode-display_width.rbi +16 -0
  100. data/sorbet/rbi/gems/vcr.rbi +503 -0
  101. data/sorbet/rbi/gems/webmock.rbi +521 -0
  102. data/sorbet/rbi/hidden-definitions/errors.txt +4802 -0
  103. data/sorbet/rbi/hidden-definitions/hidden.rbi +10700 -0
  104. data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +8682 -0
  105. data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +4222 -0
  106. data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +111 -0
  107. data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +543 -0
  108. data/sorbet/rbi/todo.rbi +24 -0
  109. data/spec/config_spec.rb +26 -0
  110. data/spec/helpers/config_helper.rb +21 -0
  111. data/spec/helpers/vcr_helper.rb +19 -0
  112. data/spec/spec_helper.rb +120 -0
  113. data/spec/uk/api_resource_spec.rb +39 -0
  114. data/spec/uk/resources/agreement_spec.rb +23 -0
  115. data/spec/uk/resources/card_spec.rb +197 -0
  116. metadata +339 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 30ad0813939d2523225e35e0696d13fedacc43a17151257d979607fb89dc61e1
4
+ data.tar.gz: ffc2484a9269e9996d11e91ab308498ba33d1e8a6201a55fdda3c6145e2f339d
5
+ SHA512:
6
+ metadata.gz: dd60379793b8c4e2ad4c266e46c102cd42713aa6f947da825e5e4d0f500a6d44adef6ff1ba01ff6117ff162b39d5bbfe27b6ef189e9a0d6d5dde8afc1831f35a
7
+ data.tar.gz: 1aee829d0b399f6809c92f30f6c22cfe9791ccf15374a222548877ef2bd8ccc1b58f40c82715cf9aa006c3fbcc679542b584ea5442b88eea2ae036213d103390
@@ -0,0 +1,10 @@
1
+ # see http://editorconfig.org/
2
+
3
+ root = true
4
+
5
+ [*]
6
+ indent_style = space
7
+ indent_size = 2
8
+ end_of_line = lf
9
+ charset = utf-8
10
+ insert_final_newline = true
@@ -0,0 +1,6 @@
1
+ UK_CARD_EXTERNAL_ID='ABCDEFGHIJKLM123'
2
+
3
+ UK_REST_API_USERNAME='username'
4
+ UK_REST_API_PASSWORD='password'
5
+ UK_REST_API_MERCHANT_GROUP='tag'
6
+ UK_REST_API_PROGRAM='tag'
@@ -0,0 +1,5 @@
1
+ .env
2
+ coverage
3
+ Gemfile.lock
4
+ spec/examples.txt
5
+ spec/vcr_cassettes
data/.rspec ADDED
@@ -0,0 +1,5 @@
1
+ --color
2
+ --fail-fast
3
+ --format documentation
4
+ --profile
5
+ --require spec_helper
@@ -0,0 +1,90 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rspec
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 2.6.4
7
+
8
+ Layout/AlignParameters:
9
+ EnforcedStyle: with_fixed_indentation
10
+
11
+ Layout/DotPosition:
12
+ EnforcedStyle: trailing
13
+
14
+ Layout/EndAlignment:
15
+ AutoCorrect: true
16
+ EnforcedStyleAlignWith: variable
17
+
18
+ Layout/IndentFirstArrayElement:
19
+ EnforcedStyle: consistent
20
+
21
+ Layout/MultilineMethodCallIndentation:
22
+ EnforcedStyle: indented
23
+
24
+ Layout/MultilineOperationIndentation:
25
+ EnforcedStyle: indented
26
+
27
+ Lint/AmbiguousBlockAssociation:
28
+ Exclude:
29
+ - spec/**/*
30
+
31
+ Metrics/BlockLength:
32
+ Exclude:
33
+ - spec/**/*
34
+
35
+ RSpec/BeforeAfterAll:
36
+ Enabled: false
37
+
38
+ RSpec/ExampleLength:
39
+ Max: 10
40
+
41
+ RSpec/MultipleExpectations:
42
+ Enabled: false
43
+
44
+ RSpec/NestedGroups:
45
+ Max: 4
46
+
47
+ RSpec/FilePath:
48
+ Enabled: false
49
+
50
+ Security/Eval:
51
+ Enabled: false
52
+
53
+ Style/Documentation:
54
+ Enabled: false
55
+
56
+ Style/GuardClause:
57
+ Enabled: false
58
+
59
+ Style/LambdaCall:
60
+ Enabled: false
61
+
62
+ Style/NegatedIf:
63
+ Enabled: false
64
+
65
+ Style/OptionalArguments:
66
+ Exclude:
67
+ - lib/eml/error/**/*
68
+
69
+ Style/RaiseArgs:
70
+ Enabled: false
71
+
72
+ Style/Send:
73
+ Enabled: true
74
+
75
+ Style/StringLiterals:
76
+ EnforcedStyle: double_quotes
77
+
78
+ Style/StringLiteralsInInterpolation:
79
+ EnforcedStyle: double_quotes
80
+
81
+ Style/TrailingCommaInArrayLiteral:
82
+ EnforcedStyleForMultiline: consistent_comma
83
+
84
+ Style/TrailingCommaInHashLiteral:
85
+ EnforcedStyleForMultiline: consistent_comma
86
+
87
+ Style/TrivialAccessors:
88
+ Exclude:
89
+ - lib/eml/uk/payload.rb
90
+ - lib/eml/uk/payload/**/*
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Declare your dependencies in eml.gemspec
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2019- Morning Coffee Pty Ltd (https://morningcoffee.com.au)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,87 @@
1
+ # EML API integration library for Ruby
2
+
3
+ The EML API integration library provides convenient access to EML's REST Web
4
+ Services and Transaction Notification Service for applications written in
5
+ the Ruby language.
6
+
7
+ Version 1 supports the UK APIs with Australian support coming as existing code
8
+ is extracted.
9
+
10
+ ## Installation
11
+
12
+ You don't need this source code unless you want to modify the gem. If you just
13
+ want to use the package, just include the following in your Gemfile:
14
+
15
+ ```sh
16
+ gem "eml", github: "MorningCoffeeDev/eml_ruby"
17
+ ```
18
+
19
+ If you are debugging or developing this gem and wish to use it within the
20
+ context of an existing application, modify your Gemfile to read:
21
+
22
+ ```sh
23
+ gem "eml", path: "../path_to_gem"
24
+ ```
25
+
26
+ ### Requirements
27
+
28
+ - Ruby 2.6+ (untested in prior versions)
29
+
30
+ ## Usage
31
+
32
+ Each geographical region is a separate module and will need to be configured
33
+ with your supplied credentials.
34
+
35
+ ```ruby
36
+ require "eml"
37
+
38
+ EML::UK.configure do |config|
39
+ config.username = "username"
40
+ config.password = "password"
41
+ config.merchant_group = "merchant_id"
42
+ config.program = "program_id"
43
+ end
44
+ ```
45
+
46
+ Make sure you never commit your credentials to git. If you are using Ruby on
47
+ Rails, it is usually best to keep your secrets in your
48
+ [credentials file]: https://edgeguides.rubyonrails.org/security.html#custom-credentials
49
+
50
+ ## Development
51
+
52
+ Since it is necessary to authenticate with EML to test API resources,
53
+ credentials and a test card ID are required. The dotenv gem is loaded when tests
54
+ are run and will look for a .env file in the root directory. A .env.example file
55
+ has been supplied so you copy it to .env and replace the example values:
56
+
57
+ ```sh
58
+ cp .env.example .env
59
+ ```
60
+
61
+ The .env file has been added to the .gitignore list and should never been
62
+ commited to the repository.
63
+
64
+ Run all tests:
65
+
66
+ ```sh
67
+ bundle exec rspec
68
+ ```
69
+
70
+ Run a single test suite:
71
+
72
+ ```sh
73
+ bundle exec rspec spec/path/to/file.rb
74
+ ```
75
+
76
+ Run a single test, include the line number:
77
+
78
+ ```sh
79
+ bundle exec rspec spec/path/to/file.rb:123
80
+ ```
81
+
82
+ Please ensure that all changes have been run by the Rubocop before creating a
83
+ pull request:
84
+
85
+ ```sh
86
+ bundle exec rubocop
87
+ ```
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift(::File.join(::File.dirname(__FILE__), "lib"))
4
+
5
+ require "eml/version"
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "eml"
9
+ s.version = EML::VERSION
10
+ s.required_ruby_version = ">= 2.6.0"
11
+ s.summary = "Ruby bindings for the EML API"
12
+ s.description = "Connect to the EML payments APIs and " \
13
+ "Transaction Notification Serices"
14
+ s.author = "Morning Coffee"
15
+ s.email = "developers@morningcoffee.com.au"
16
+ s.homepage = "https://github.com/MorningCoffeeDev/eml_ruby"
17
+ s.license = "MIT"
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- test/*`.split("\n")
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency "http", "~> 4.0.0"
24
+ s.add_dependency "sorbet-runtime"
25
+
26
+ s.add_development_dependency "dotenv"
27
+ s.add_development_dependency "faker"
28
+ s.add_development_dependency "pry-byebug"
29
+ s.add_development_dependency "rspec", "~> 3.8"
30
+ s.add_development_dependency "rubocop", "~> 0.71"
31
+ s.add_development_dependency "rubocop-performance"
32
+ s.add_development_dependency "rubocop-rspec"
33
+ s.add_development_dependency "simplecov"
34
+ s.add_development_dependency "sorbet"
35
+ s.add_development_dependency "vcr"
36
+ s.add_development_dependency "webmock"
37
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "http"
5
+ require "sorbet-runtime"
6
+
7
+ module EML
8
+ end
9
+
10
+ require "eml/data/countries"
11
+ require "eml/data/currencies"
12
+ require "eml/data/states"
13
+
14
+ require "eml/config"
15
+ require "eml/environment"
16
+ require "eml/error"
17
+ require "eml/lib/endpoint_class"
18
+ require "eml/parameters"
19
+ require "eml/payload"
20
+ require "eml/response"
21
+ require "eml/uk"
22
+ require "eml/version"
@@ -0,0 +1,49 @@
1
+ # typed: ignore
2
+ # frozen_string_literal: true
3
+
4
+ module EML
5
+ class Config
6
+ extend T::Sig
7
+
8
+ sig { returns(EML::Environment.class) }
9
+ def environment
10
+ EML::Environment
11
+ end
12
+
13
+ sig { params(value: Symbol).void }
14
+ def environment=(value)
15
+ EML::Environment.set(value)
16
+ end
17
+
18
+ sig { params(param: Symbol).returns(String) }
19
+ def require(param)
20
+ value = public_send(param)
21
+ return value unless value.nil? || value.empty?
22
+
23
+ require_error(param)
24
+ end
25
+
26
+ sig { params(param: Symbol).returns(String) }
27
+ def require_parameter(param)
28
+ require(param)
29
+ rescue ArgumentError => e
30
+ message = e.message + "\n" \
31
+ "Alternatively, you can pass dynamic values with your request " \
32
+ "parameters"
33
+ raise ArgumentError, message
34
+ end
35
+
36
+ private
37
+
38
+ sig { params(param: Symbol).void }
39
+ def require_error(param)
40
+ raise(
41
+ ArgumentError,
42
+ "#{param} is required but hasn't been set.\n" \
43
+ "EML::Config.configuration do |config|\n" +
44
+ %( config.#{param} = "value") + "\n" \
45
+ "end"
46
+ )
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,260 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ # rubocop:disable Metrics/ModuleLength
5
+ # rubocop:disable Style/AsciiComments
6
+ module EML
7
+ COUNTRIES = T.let(
8
+ [
9
+ "ABW", # Aruba
10
+ "AFG", # Afghanistan
11
+ "AGO", # Angola
12
+ "AIA", # Anguilla
13
+ "ALA", # Åland Islands
14
+ "ALB", # Albania
15
+ "AND", # Andorra
16
+ "ANT", # Netherlands Antilles
17
+ "ARE", # United Arab Emirates
18
+ "ARG", # Argentina
19
+ "ARM", # Armenia
20
+ "ASM", # American Samoa
21
+ "ATA", # Antarctica
22
+ "ATF", # French Southern Territories
23
+ "ATG", # Antigua and Barbuda
24
+ "AUS", # Australia
25
+ "AUT", # Austria
26
+ "AZE", # Azerbaijan
27
+ "BDI", # Burundi
28
+ "BEL", # Belgium
29
+ "BEN", # Benin
30
+ "BFA", # Burkina Faso
31
+ "BGD", # Bangladesh
32
+ "BGR", # Bulgaria
33
+ "BHR", # Bahrain
34
+ "BHS", # Bahamas
35
+ "BIH", # Bosnia and Herzegovina
36
+ "BLM", # Saint Barthélemy
37
+ "BLR", # Belarus
38
+ "BLZ", # Belize
39
+ "BMU", # Bermuda
40
+ "BOL", # Bolivia, Plurinational State of
41
+ "BRA", # Brazil
42
+ "BRB", # Barbados
43
+ "BRN", # Brunei Darussalam
44
+ "BTN", # Bhutan
45
+ "BVT", # Bouvet Island
46
+ "BWA", # Botswana
47
+ "CAF", # Central African Republic
48
+ "CAN", # Canada
49
+ "CCK", # Cocos (Keeling) Islands
50
+ "CHE", # Switzerland
51
+ "CHL", # Chile
52
+ "CHN", # China
53
+ "CIV", # Côte d'Ivoire
54
+ "CMR", # Cameroon
55
+ "COD", # Congo, the Democratic Republic of the
56
+ "COG", # Congo
57
+ "COK", # Cook Islands
58
+ "COL", # Colombia
59
+ "COM", # Comoros
60
+ "CPV", # Cape Verde
61
+ "CRI", # Costa Rica
62
+ "CUB", # Cuba
63
+ "CXR", # Christmas Island
64
+ "CYM", # Cayman Islands
65
+ "CYP", # Cyprus
66
+ "CZE", # Czech Republic
67
+ "DEU", # Germany
68
+ "DJI", # Djibouti
69
+ "DMA", # Dominica
70
+ "DNK", # Denmark
71
+ "DOM", # Dominican Republic
72
+ "DZA", # Algeria
73
+ "ECU", # Ecuador
74
+ "EGY", # Egypt
75
+ "ERI", # Eritrea
76
+ "ESH", # Western Sahara
77
+ "ESP", # Spain
78
+ "EST", # Estonia
79
+ "ETH", # Ethiopia
80
+ "FIN", # Finland
81
+ "FJI", # Fiji
82
+ "FLK", # Falkland Islands (Malvinas)
83
+ "FRA", # France
84
+ "FRO", # Faroe Islands
85
+ "FSM", # Micronesia, Federated States of
86
+ "GAB", # Gabon
87
+ "GBR", # United Kingdom
88
+ "GEO", # Georgia
89
+ "GGY", # Guernsey
90
+ "GHA", # Ghana
91
+ "GIB", # Gibraltar
92
+ "GIN", # Guinea
93
+ "GLP", # Guadeloupe
94
+ "GMB", # Gambia
95
+ "GNB", # Guinea-Bissau
96
+ "GNQ", # Equatorial Guinea
97
+ "GRC", # Greece
98
+ "GRD", # Grenada
99
+ "GRL", # Greenland
100
+ "GTM", # Guatemala
101
+ "GUF", # French Guiana
102
+ "GUM", # Guam
103
+ "GUY", # Guyana
104
+ "HKG", # Hong Kong
105
+ "HMD", # Heard Island and McDonald Islands
106
+ "HND", # Honduras
107
+ "HRV", # Croatia
108
+ "HTI", # Haiti
109
+ "HUN", # Hungary
110
+ "IDN", # Indonesia
111
+ "IMN", # Isle of Man
112
+ "IND", # India
113
+ "IOT", # British Indian Ocean Territory
114
+ "IRL", # Ireland
115
+ "IRN", # Iran, Islamic Republic of
116
+ "IRQ", # Iraq
117
+ "ISL", # Iceland
118
+ "ISR", # Israel
119
+ "ITA", # Italy
120
+ "JAM", # Jamaica
121
+ "JEY", # Jersey
122
+ "JOR", # Jordan
123
+ "JPN", # Japan
124
+ "KAZ", # Kazakhstan
125
+ "KEN", # Kenya
126
+ "KGZ", # Kyrgyzstan
127
+ "KHM", # Cambodia
128
+ "KIR", # Kiribati
129
+ "KNA", # Saint Kitts and Nevis
130
+ "KOR", # Korea, Republic of
131
+ "KWT", # Kuwait
132
+ "LAO", # Lao People's Democratic Republic
133
+ "LBN", # Lebanon
134
+ "LBR", # Liberia
135
+ "LBY", # Libyan Arab Jamahiriya
136
+ "LCA", # Saint Lucia
137
+ "LIE", # Liechtenstein
138
+ "LKA", # Sri Lanka
139
+ "LSO", # Lesotho
140
+ "LTU", # Lithuania
141
+ "LUX", # Luxembourg
142
+ "LVA", # Latvia
143
+ "MAC", # Macao
144
+ "MAF", # Saint Martin (French part)
145
+ "MAR", # Morocco
146
+ "MCO", # Monaco
147
+ "MDA", # Moldova, Republic of
148
+ "MDG", # Madagascar
149
+ "MDV", # Maldives
150
+ "MEX", # Mexico
151
+ "MHL", # Marshall Islands
152
+ "MKD", # Macedonia, the former Yugoslav Republic of
153
+ "MLI", # Mali
154
+ "MLT", # Malta
155
+ "MMR", # Myanmar
156
+ "MNE", # Montenegro
157
+ "MNG", # Mongolia
158
+ "MNP", # Northern Mariana Islands
159
+ "MOZ", # Mozambique
160
+ "MRT", # Mauritania
161
+ "MSR", # Montserrat
162
+ "MTQ", # Martinique
163
+ "MUS", # Mauritius
164
+ "MWI", # Malawi
165
+ "MYS", # Malaysia
166
+ "MYT", # Mayotte
167
+ "NAM", # Namibia
168
+ "NCL", # New Caledonia
169
+ "NER", # Niger
170
+ "NFK", # Norfolk Island
171
+ "NGA", # Nigeria
172
+ "NIC", # Nicaragua
173
+ "NIU", # Niue
174
+ "NLD", # Netherlands
175
+ "NOR", # Norway
176
+ "NPL", # Nepal
177
+ "NRU", # Nauru
178
+ "NZL", # New Zealand
179
+ "OMN", # Oman
180
+ "PAK", # Pakistan
181
+ "PAN", # Panama
182
+ "PCN", # Pitcairn
183
+ "PER", # Peru
184
+ "PHL", # Philippines
185
+ "PLW", # Palau
186
+ "PNG", # Papua New Guinea
187
+ "POL", # Poland
188
+ "PRI", # Puerto Rico
189
+ "PRK", # Korea, Democratic People's Republic of
190
+ "PRT", # Portugal
191
+ "PRY", # Paraguay
192
+ "PSE", # Palestinian Territory, Occupied
193
+ "PYF", # French Polynesia
194
+ "QAT", # Qatar
195
+ "REU", # Réunion
196
+ "ROU", # Romania
197
+ "RUS", # Russian Federation
198
+ "RWA", # Rwanda
199
+ "SAU", # Saudi Arabia
200
+ "SDN", # Sudan
201
+ "SEN", # Senegal
202
+ "SGP", # Singapore
203
+ "SGS", # South Georgia and the South Sandwich Islands
204
+ "SHN", # Saint Helena, Ascension and Tristan da Cunha
205
+ "SJM", # Svalbard and Jan Mayen
206
+ "SLB", # Solomon Islands
207
+ "SLE", # Sierra Leone
208
+ "SLV", # El Salvador
209
+ "SMR", # San Marino
210
+ "SOM", # Somalia
211
+ "SPM", # Saint Pierre and Miquelon
212
+ "SRB", # Serbia
213
+ "STP", # Sao Tome and Principe
214
+ "SUR", # Suriname
215
+ "SVK", # Slovakia
216
+ "SVN", # Slovenia
217
+ "SWE", # Sweden
218
+ "SWZ", # Swaziland
219
+ "SYC", # Seychelles
220
+ "SYR", # Syrian Arab Republic
221
+ "TCA", # Turks and Caicos Islands
222
+ "TCD", # Chad
223
+ "TGO", # Togo
224
+ "THA", # Thailand
225
+ "TJK", # Tajikistan
226
+ "TKL", # Tokelau
227
+ "TKM", # Turkmenistan
228
+ "TLS", # Timor-Leste
229
+ "TON", # Tonga
230
+ "TTO", # Trinidad and Tobago
231
+ "TUN", # Tunisia
232
+ "TUR", # Turkey
233
+ "TUV", # Tuvalu
234
+ "TWN", # Taiwan, Province of China
235
+ "TZA", # Tanzania, United Republic of
236
+ "UGA", # Uganda
237
+ "UKR", # Ukraine
238
+ "UMI", # United States Minor Outlying Islands
239
+ "URY", # Uruguay
240
+ "USA", # United States
241
+ "UZB", # Uzbekistan
242
+ "VAT", # Holy See (Vatican City State)
243
+ "VCT", # Saint Vincent and the Grenadines
244
+ "VEN", # Venezuela, Bolivarian Republic of
245
+ "VGB", # Virgin Islands, British
246
+ "VIR", # Virgin Islands, U.S.
247
+ "VNM", # Viet Nam
248
+ "VUT", # Vanuatu
249
+ "WLF", # Wallis and Futuna
250
+ "WSM", # Samoa
251
+ "YEM", # Yemen
252
+ "ZAF", # South Africa
253
+ "ZMB", # Zambia
254
+ "ZWE", # Zimbabwe
255
+ ].freeze,
256
+ T::Array[String]
257
+ )
258
+ end
259
+ # rubocop:enable Metrics/ModuleLength
260
+ # rubocop:enable Style/AsciiComments