eml 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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