issuer_response_codes 0.2.5 → 0.3.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +38 -0
- data/.rubocop.yml +3 -76
- data/.ruby-version +1 -1
- data/CHANGELOG.md +13 -0
- data/Gemfile +9 -1
- data/Gemfile.lock +54 -41
- data/README.md +13 -4
- data/Rakefile +8 -6
- data/bin/console +6 -4
- data/issuer_response_codes.gemspec +14 -20
- data/lib/issuer_response_codes/code.rb +20 -5
- data/lib/issuer_response_codes/context.rb +16 -0
- data/lib/issuer_response_codes/locale_library.rb +52 -27
- data/lib/issuer_response_codes/tds_code.rb +21 -4
- data/lib/issuer_response_codes/version.rb +2 -1
- data/lib/issuer_response_codes.rb +12 -7
- data/lib/locale/de.yml +145 -149
- data/lib/locale/es.yml +300 -0
- data/lib/locale/fi.yml +300 -0
- data/lib/locale/fr.yml +300 -0
- data/lib/locale/hr.yml +300 -0
- data/lib/locale/it.yml +157 -157
- data/lib/locale/nl.yml +300 -0
- data/lib/locale/pt.yml +300 -0
- metadata +17 -108
- data/.travis.yml +0 -6
- data/LICENSE +0 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 839c0044ecc25de1dc98ccf239876473f0330bdfb4366f7ea0f58bc56782f6d4
|
|
4
|
+
data.tar.gz: de71594e7157bc85257bbe19356f4c7f4b44493524498725da34c9ba3dd2ebf0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 58f2791696723f19735d73618d477003ae2eebfc253a62118432754c6c12ef4d12bd9ac5ad0ad1616ee8c44b4cddac3fbcdce2c5516c3d6f9309b377a522cb9e
|
|
7
|
+
data.tar.gz: 4df9f02699234b177ce31e412c6763d7bb574cb4920897bd06aedaa373655151980a66007388f1da12667c72982c4b44eeb942a2c73740e31a514241d1ff8993
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: CI Ruby
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ 'main' ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ 'main' ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
CI: true
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
ruby-version: ['3.0', '3.1', '3.2']
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v3
|
|
20
|
+
- name: Install Ruby and gems
|
|
21
|
+
uses: ruby/setup-ruby@v1
|
|
22
|
+
with:
|
|
23
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
24
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
25
|
+
- name: Run unit tests
|
|
26
|
+
run: bundle exec rake test
|
|
27
|
+
|
|
28
|
+
lint:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout code
|
|
32
|
+
uses: actions/checkout@v3
|
|
33
|
+
- name: Install Ruby and gems
|
|
34
|
+
uses: ruby/setup-ruby@v1
|
|
35
|
+
with:
|
|
36
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
37
|
+
- name: Lint
|
|
38
|
+
run: bundle exec rubocop --parallel --color
|
data/.rubocop.yml
CHANGED
|
@@ -1,78 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Style/SingleArgumentDig:
|
|
5
|
-
Enabled: false
|
|
6
|
-
|
|
7
|
-
Layout/LineLength:
|
|
8
|
-
Enabled: false
|
|
9
|
-
|
|
10
|
-
Style/Documentation:
|
|
11
|
-
Enabled: false
|
|
12
|
-
|
|
13
|
-
Style/ClassAndModuleChildren:
|
|
14
|
-
Enabled: false
|
|
15
|
-
|
|
16
|
-
Style/MethodCallWithArgsParentheses:
|
|
17
|
-
Enabled: false
|
|
18
|
-
|
|
19
|
-
Style/ModuleFunction:
|
|
20
|
-
EnforcedStyle: 'extend_self'
|
|
21
|
-
|
|
22
|
-
Style/MissingElse:
|
|
23
|
-
Enabled: false
|
|
24
|
-
|
|
25
|
-
Lint/NumberConversion:
|
|
26
|
-
Enabled: false
|
|
27
|
-
|
|
28
|
-
Lint/ConstantResolution:
|
|
29
|
-
Enabled: false
|
|
30
|
-
|
|
31
|
-
Style/RescueStandardError:
|
|
32
|
-
Enabled: false
|
|
33
|
-
|
|
34
|
-
Style/FormatStringToken:
|
|
35
|
-
Enabled: false
|
|
36
|
-
|
|
37
|
-
Style/FormatString:
|
|
38
|
-
Enabled: false
|
|
39
|
-
|
|
40
|
-
Style/DocumentationMethod:
|
|
41
|
-
Enabled: false
|
|
42
|
-
|
|
43
|
-
Style/Copyright:
|
|
44
|
-
Enabled: false
|
|
45
|
-
|
|
46
|
-
Style/StringHashKeys:
|
|
47
|
-
Enabled: false
|
|
48
|
-
|
|
49
|
-
Style/InlineComment:
|
|
50
|
-
Enabled: false
|
|
51
|
-
|
|
52
|
-
Layout/FirstHashElementLineBreak:
|
|
53
|
-
Enabled: false
|
|
54
|
-
|
|
55
|
-
Layout/FirstMethodArgumentLineBreak:
|
|
56
|
-
Enabled: false
|
|
57
|
-
|
|
58
|
-
Style/ConstantVisibility:
|
|
59
|
-
Enabled: false
|
|
60
|
-
|
|
61
|
-
Layout/FirstArrayElementLineBreak:
|
|
62
|
-
Enabled: false
|
|
63
|
-
|
|
64
|
-
Layout/MultilineMethodArgumentLineBreaks:
|
|
65
|
-
Enabled: false
|
|
66
|
-
|
|
67
|
-
Layout/MultilineAssignmentLayout:
|
|
68
|
-
Enabled: false
|
|
69
|
-
|
|
70
|
-
Bundler/GemComment:
|
|
71
|
-
Enabled: false
|
|
1
|
+
inherit_gem:
|
|
2
|
+
rubocop-espago: rubocop.yml
|
|
72
3
|
|
|
73
4
|
AllCops:
|
|
74
|
-
|
|
75
|
-
Exclude:
|
|
76
|
-
- 'bin/*'
|
|
77
|
-
- 'spec/**/*'
|
|
78
|
-
- 'test/**/*'
|
|
5
|
+
TargetRubyVersion: 3.0
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.1.4
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [0.3.0]
|
|
10
|
+
|
|
11
|
+
[Diff](https://github.com/espago/issuer_response_codes/compare/v0.3.0...espago:issuer_response_codes:v0.2.5)
|
|
12
|
+
|
|
13
|
+
This release adds support for Ruby 3.1 and 3.2 and full translations for brand new languages: `:es, :fi, :fr, :hr, :it, :nl, :pt`.
|
data/Gemfile
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
source
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in issuer_response_codes.gemspec
|
|
6
6
|
gemspec
|
|
7
|
+
|
|
8
|
+
gem 'bundler', '~> 2.0' # library manager
|
|
9
|
+
gem 'debug', '~> 1.6.3' # debugger
|
|
10
|
+
gem 'minitest', '~> 5.0' # test framework
|
|
11
|
+
gem 'rake', '~> 12.0' # automation
|
|
12
|
+
gem 'rubocop', '~> 1.54' # linter
|
|
13
|
+
gem 'rubocop-espago', '~> 1.0' # linter config
|
|
14
|
+
gem 'solargraph', '~> 0.49' # language server
|
data/Gemfile.lock
CHANGED
|
@@ -1,84 +1,97 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
issuer_response_codes (0.
|
|
4
|
+
issuer_response_codes (0.3.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
8
8
|
specs:
|
|
9
9
|
ast (2.4.2)
|
|
10
10
|
backport (1.2.0)
|
|
11
|
-
benchmark (0.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
diff-lcs (1.4.4)
|
|
11
|
+
benchmark (0.2.1)
|
|
12
|
+
debug (1.6.3)
|
|
13
|
+
irb (>= 1.3.6)
|
|
14
|
+
reline (>= 0.3.1)
|
|
15
|
+
diff-lcs (1.5.0)
|
|
17
16
|
e2mmap (0.1.0)
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
io-console (0.5.11)
|
|
18
|
+
irb (1.4.1)
|
|
19
|
+
reline (>= 0.3.0)
|
|
20
|
+
jaro_winkler (1.5.6)
|
|
21
|
+
json (2.6.3)
|
|
22
|
+
kramdown (2.4.0)
|
|
20
23
|
rexml
|
|
21
24
|
kramdown-parser-gfm (1.1.0)
|
|
22
25
|
kramdown (~> 2.0)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
language_server-protocol (3.17.0.3)
|
|
27
|
+
mini_portile2 (2.8.4)
|
|
28
|
+
minitest (5.18.1)
|
|
29
|
+
nokogiri (1.15.3)
|
|
30
|
+
mini_portile2 (~> 2.8.2)
|
|
27
31
|
racc (~> 1.4)
|
|
28
|
-
parallel (1.
|
|
29
|
-
parser (3.
|
|
32
|
+
parallel (1.23.0)
|
|
33
|
+
parser (3.2.2.3)
|
|
30
34
|
ast (~> 2.4.1)
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
racc
|
|
36
|
+
racc (1.7.1)
|
|
37
|
+
rainbow (3.1.1)
|
|
33
38
|
rake (12.3.3)
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
rbs (2.8.4)
|
|
40
|
+
regexp_parser (2.8.1)
|
|
41
|
+
reline (0.3.1)
|
|
42
|
+
io-console (~> 0.5)
|
|
43
|
+
reverse_markdown (2.1.1)
|
|
36
44
|
nokogiri
|
|
37
45
|
rexml (3.2.5)
|
|
38
|
-
rubocop (1.
|
|
46
|
+
rubocop (1.54.2)
|
|
47
|
+
json (~> 2.3)
|
|
48
|
+
language_server-protocol (>= 3.17.0)
|
|
39
49
|
parallel (~> 1.10)
|
|
40
|
-
parser (>= 3.
|
|
50
|
+
parser (>= 3.2.2.3)
|
|
41
51
|
rainbow (>= 2.2.2, < 4.0)
|
|
42
52
|
regexp_parser (>= 1.8, < 3.0)
|
|
43
|
-
rexml
|
|
44
|
-
rubocop-ast (>= 1.
|
|
53
|
+
rexml (>= 3.2.5, < 4.0)
|
|
54
|
+
rubocop-ast (>= 1.28.0, < 2.0)
|
|
45
55
|
ruby-progressbar (~> 1.7)
|
|
46
|
-
unicode-display_width (>=
|
|
47
|
-
rubocop-ast (1.
|
|
48
|
-
parser (>= 3.
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
57
|
+
rubocop-ast (1.29.0)
|
|
58
|
+
parser (>= 3.2.1.0)
|
|
59
|
+
rubocop-espago (1.0.3)
|
|
60
|
+
rubocop
|
|
61
|
+
ruby-progressbar (1.13.0)
|
|
62
|
+
solargraph (0.49.0)
|
|
51
63
|
backport (~> 1.2)
|
|
52
64
|
benchmark
|
|
53
|
-
bundler (
|
|
65
|
+
bundler (~> 2.0)
|
|
54
66
|
diff-lcs (~> 1.4)
|
|
55
67
|
e2mmap
|
|
56
68
|
jaro_winkler (~> 1.5)
|
|
57
69
|
kramdown (~> 2.3)
|
|
58
70
|
kramdown-parser-gfm (~> 1.1)
|
|
59
71
|
parser (~> 3.0)
|
|
60
|
-
|
|
61
|
-
|
|
72
|
+
rbs (~> 2.0)
|
|
73
|
+
reverse_markdown (~> 2.0)
|
|
74
|
+
rubocop (~> 1.38)
|
|
62
75
|
thor (~> 1.0)
|
|
63
76
|
tilt (~> 2.0)
|
|
64
77
|
yard (~> 0.9, >= 0.9.24)
|
|
65
|
-
thor (1.
|
|
66
|
-
tilt (2.0
|
|
67
|
-
unicode-display_width (2.
|
|
68
|
-
yard (0.9.
|
|
78
|
+
thor (1.2.2)
|
|
79
|
+
tilt (2.2.0)
|
|
80
|
+
unicode-display_width (2.4.2)
|
|
81
|
+
yard (0.9.34)
|
|
69
82
|
|
|
70
83
|
PLATFORMS
|
|
71
84
|
ruby
|
|
72
85
|
|
|
73
86
|
DEPENDENCIES
|
|
74
|
-
bundler
|
|
75
|
-
|
|
76
|
-
byebug
|
|
87
|
+
bundler (~> 2.0)
|
|
88
|
+
debug (~> 1.6.3)
|
|
77
89
|
issuer_response_codes!
|
|
78
90
|
minitest (~> 5.0)
|
|
79
91
|
rake (~> 12.0)
|
|
80
|
-
rubocop
|
|
81
|
-
|
|
92
|
+
rubocop (~> 1.54)
|
|
93
|
+
rubocop-espago (~> 1.0)
|
|
94
|
+
solargraph (~> 0.49)
|
|
82
95
|
|
|
83
96
|
BUNDLED WITH
|
|
84
|
-
2.
|
|
97
|
+
2.4.17
|
data/README.md
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
# IssuerResponseCodes
|
|
2
2
|
|
|
3
|
-
This gem provides a quite comprehensive library of Issuer Response Code and 3D-Secure Status Code descriptions (for both cardholders and merchants) with suggested actions in
|
|
3
|
+
This gem provides a quite comprehensive library of Issuer Response Code and 3D-Secure Status Code descriptions (for both cardholders and merchants) with suggested actions in many languages:
|
|
4
|
+
|
|
4
5
|
- Complete locales:
|
|
5
6
|
- en
|
|
6
7
|
- pl
|
|
8
|
+
- es
|
|
9
|
+
- fi
|
|
10
|
+
- fr
|
|
11
|
+
- hr
|
|
12
|
+
- it
|
|
13
|
+
- nl
|
|
14
|
+
- pt
|
|
7
15
|
|
|
8
16
|
- Incomplete locales:
|
|
9
17
|
- da
|
|
10
18
|
- de
|
|
11
19
|
- ee
|
|
12
|
-
- it
|
|
13
20
|
- lt
|
|
14
21
|
- lv
|
|
15
22
|
- sv
|
|
@@ -133,7 +140,7 @@ code.behaviour #=> "Please contact your card issuer to get more details and try
|
|
|
133
140
|
|
|
134
141
|
##### Locale
|
|
135
142
|
|
|
136
|
-
The default locale is `:en`.
|
|
143
|
+
The default locale is `:en`. Only the first two are complete, the rest are partially in English.
|
|
137
144
|
|
|
138
145
|
```ruby
|
|
139
146
|
code = ::IssuerResponseCodes::Code.new(id: '54')
|
|
@@ -146,6 +153,8 @@ code = ::IssuerResponseCodes::Code.new(id: '54', locale: :pl)
|
|
|
146
153
|
code.reason #=> "Karta utraciła ważność."
|
|
147
154
|
```
|
|
148
155
|
|
|
156
|
+
A full list of available locales is stored in `IssuerResponseCodes::AVAILABLE_LOCALES`.
|
|
157
|
+
|
|
149
158
|
#### Methods
|
|
150
159
|
|
|
151
160
|
##### reason
|
|
@@ -260,7 +269,7 @@ code.behaviour #=> "Please use a different card or contact issuer. Transactions
|
|
|
260
269
|
|
|
261
270
|
##### Locale
|
|
262
271
|
|
|
263
|
-
The default locale is `:en`.
|
|
272
|
+
The default locale is `:en`. Only the first two are complete, the rest are partially in English.
|
|
264
273
|
|
|
265
274
|
```ruby
|
|
266
275
|
code = ::IssuerResponseCodes::TdsCode.new(id: '11', target: :cardholder)
|
data/Rakefile
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bundler/gem_tasks'
|
|
4
|
+
require 'rake/testtask'
|
|
3
5
|
|
|
4
6
|
Rake::TestTask.new(:test) do |t|
|
|
5
|
-
t.libs <<
|
|
6
|
-
t.libs <<
|
|
7
|
-
t.test_files = FileList[
|
|
7
|
+
t.libs << 'test'
|
|
8
|
+
t.libs << 'lib'
|
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
task :
|
|
12
|
+
task default: :test
|
data/bin/console
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'bundler/setup'
|
|
4
|
+
require 'issuer_response_codes'
|
|
5
5
|
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
|
@@ -10,5 +10,7 @@ require "issuer_response_codes"
|
|
|
10
10
|
# require "pry"
|
|
11
11
|
# Pry.start
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
include ::IssuerResponseCodes
|
|
14
|
+
|
|
15
|
+
require 'irb'
|
|
16
|
+
::IRB.start(__FILE__)
|
|
@@ -3,34 +3,28 @@
|
|
|
3
3
|
require_relative 'lib/issuer_response_codes/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
6
|
+
spec.name = 'issuer_response_codes'
|
|
7
7
|
spec.version = IssuerResponseCodes::VERSION
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['Espago', 'Mateusz Drewniak']
|
|
9
|
+
spec.email = ['m.drewniak@espago.com']
|
|
10
10
|
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
13
|
-
|
|
14
|
-
spec.
|
|
15
|
-
spec.
|
|
11
|
+
spec.summary = 'Issuer Response Code descriptions for cardholders and merchants'
|
|
12
|
+
spec.description =
|
|
13
|
+
'A simple Ruby gem which provides Issuer Response Code descriptions and suggestions for cardholders and merchants'
|
|
14
|
+
spec.homepage = 'https://github.com/espago/issuer_response_codes'
|
|
15
|
+
spec.license = 'MIT'
|
|
16
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 3.0')
|
|
16
17
|
|
|
17
|
-
spec.metadata[
|
|
18
|
-
spec.metadata[
|
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/espago/issuer_response_codes'
|
|
19
20
|
|
|
20
21
|
# Specify which files should be added to the gem when it is released.
|
|
21
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
22
23
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
23
24
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
24
25
|
end
|
|
25
|
-
spec.bindir =
|
|
26
|
+
spec.bindir = 'exe'
|
|
26
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
27
|
-
spec.require_paths = [
|
|
28
|
-
|
|
29
|
-
spec.add_development_dependency 'bundler'
|
|
30
|
-
spec.add_development_dependency 'bundler-audit'
|
|
31
|
-
spec.add_development_dependency 'byebug'
|
|
32
|
-
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
33
|
-
spec.add_development_dependency 'rake', '~> 12.0'
|
|
34
|
-
spec.add_development_dependency 'rubocop'
|
|
35
|
-
spec.add_development_dependency 'solargraph'
|
|
28
|
+
spec.require_paths = ['lib']
|
|
29
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
36
30
|
end
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module IssuerResponseCodes
|
|
4
|
+
# ISO-8583 Response code.
|
|
4
5
|
class Code
|
|
5
6
|
attr_reader :id, :target, :locale, :fraud_notice
|
|
6
7
|
|
|
7
8
|
NOT_PROVIDED = ::Object.new
|
|
8
9
|
|
|
10
|
+
# @param id [String]
|
|
11
|
+
# @param target [Symbol]
|
|
12
|
+
# @param locale [Symbol]
|
|
13
|
+
# @param fraud_notice [Boolean, Object]
|
|
9
14
|
def initialize(id:, target: :merchant, locale: :en, fraud_notice: NOT_PROVIDED)
|
|
10
15
|
@id = id
|
|
11
16
|
@target = target
|
|
@@ -22,25 +27,35 @@ module IssuerResponseCodes
|
|
|
22
27
|
@fraud_notice = target == :merchant
|
|
23
28
|
end
|
|
24
29
|
|
|
30
|
+
# @return [String]
|
|
25
31
|
def humanize
|
|
26
32
|
"#{reason} #{behaviour}"
|
|
27
33
|
end
|
|
28
|
-
|
|
29
34
|
alias description humanize
|
|
30
35
|
|
|
36
|
+
# @return [String]
|
|
31
37
|
def reason
|
|
32
|
-
LOCALE_LIBRARY
|
|
38
|
+
LOCALE_LIBRARY[path: id,
|
|
39
|
+
scope: "issuer_response_codes.targeted.#{target}",
|
|
40
|
+
locale: locale,
|
|
41
|
+
default: :unknown]
|
|
33
42
|
end
|
|
34
43
|
|
|
44
|
+
# @return [String]
|
|
35
45
|
def behaviour
|
|
36
|
-
behaviour_str = LOCALE_LIBRARY
|
|
46
|
+
behaviour_str = LOCALE_LIBRARY[path: id,
|
|
47
|
+
scope: 'issuer_response_codes.behaviour',
|
|
48
|
+
locale: locale,
|
|
49
|
+
default: :unknown]
|
|
37
50
|
return behaviour_str unless fraud_notice && fraudulent_code?
|
|
38
51
|
|
|
39
|
-
"#{behaviour_str} #{LOCALE_LIBRARY
|
|
52
|
+
"#{behaviour_str} #{LOCALE_LIBRARY[path: 'issuer_response_codes.fraud_notice']}"
|
|
40
53
|
end
|
|
41
54
|
|
|
55
|
+
# @return [Boolean]
|
|
42
56
|
def fraudulent_code?
|
|
43
|
-
@fraudulent_code ||= LOCALE_LIBRARY
|
|
57
|
+
@fraudulent_code ||= LOCALE_LIBRARY[path: id, scope: 'issuer_response_codes.fraudulent_codes', locale: locale]
|
|
44
58
|
end
|
|
59
|
+
|
|
45
60
|
end
|
|
46
61
|
end
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module IssuerResponseCodes
|
|
4
|
+
# Context stores default settings for retrieving codes.
|
|
4
5
|
class Context
|
|
5
6
|
attr_reader :default_target, :default_locale, :fraud_notice_by_default
|
|
6
7
|
|
|
7
8
|
NOT_PROVIDED = ::Object.new
|
|
8
9
|
|
|
10
|
+
# @param default_target [Symbol]
|
|
11
|
+
# @param default_locale [Symbol]
|
|
12
|
+
# @param fraud_notice_by_default [Boolean, Object]
|
|
13
|
+
# @raise [IllegalLocale]
|
|
14
|
+
# @raise [IllegalTarget]
|
|
9
15
|
def initialize(default_target: :merchant, default_locale: :en, fraud_notice_by_default: NOT_PROVIDED)
|
|
10
16
|
@default_target = default_target
|
|
11
17
|
@default_locale = default_locale
|
|
@@ -21,10 +27,20 @@ module IssuerResponseCodes
|
|
|
21
27
|
@fraud_notice_by_default = default_target == :merchant
|
|
22
28
|
end
|
|
23
29
|
|
|
30
|
+
# @param id [String, Symbol]
|
|
31
|
+
# @param target [Symbol]
|
|
32
|
+
# @param locale [Symbol]
|
|
33
|
+
# @param fraud_notice [Boolean, Object]
|
|
34
|
+
# @return [Code]
|
|
24
35
|
def code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
|
|
25
36
|
Code.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
|
|
26
37
|
end
|
|
27
38
|
|
|
39
|
+
# @param id [String, Symbol]
|
|
40
|
+
# @param target [Symbol]
|
|
41
|
+
# @param locale [Symbol]
|
|
42
|
+
# @param fraud_notice [Boolean, Object]
|
|
43
|
+
# @return [TdsCode]
|
|
28
44
|
def tds_code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
|
|
29
45
|
TdsCode.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
|
|
30
46
|
end
|