pan_masker 0.0.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.
- data/bin/pan_masker +4 -0
- data/lib/pan_masker/finder.rb +22 -0
- data/lib/pan_masker/masker.rb +18 -0
- data/lib/pan_masker.rb +8 -0
- data/test/test_pan_masker.rb +16 -0
- metadata +52 -0
data/bin/pan_masker
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
class Pan_masker::Finder
|
2
|
+
def self.find_and_mask_pan(data)
|
3
|
+
extractedPans = data.scan(/[\d][0-9]{18}|[\d][0-9]{15}/)
|
4
|
+
|
5
|
+
if extractedPans.any?
|
6
|
+
arrayLength = extractedPans.count
|
7
|
+
count = 0
|
8
|
+
begin
|
9
|
+
currentPan = extractedPans[count]
|
10
|
+
maskedPan = Masker.mask_pan(currentPan)
|
11
|
+
data = data.gsub(currentPan, maskedPan)
|
12
|
+
count += 1
|
13
|
+
end while count < arrayLength
|
14
|
+
data
|
15
|
+
else
|
16
|
+
data
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'pan_masker/masker'
|
22
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Pan_masker::Finder::Masker
|
2
|
+
def self.mask_pan(pan)
|
3
|
+
panLenght = pan.length
|
4
|
+
firstSix = pan[0..5]
|
5
|
+
lastFour = pan[panLenght-4..panLenght]
|
6
|
+
|
7
|
+
panLenghtToBeMasked = panLenght - 10
|
8
|
+
count = 1
|
9
|
+
mask = '*'
|
10
|
+
begin
|
11
|
+
mask = mask + '*'
|
12
|
+
count += 1
|
13
|
+
end while count < panLenghtToBeMasked
|
14
|
+
maskedPan = firstSix + mask + lastFour
|
15
|
+
maskedPan
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
data/lib/pan_masker.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'pan_masker'
|
3
|
+
|
4
|
+
class PanMaskerTest < Test::Unit::TestCase
|
5
|
+
def test_no_pan
|
6
|
+
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string")
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_mastercard_and_visa_pans
|
10
|
+
assert_equal "mastercard and visa 16 111111******1111", Pan_masker.mask("mastercard and visa 16 1111111111111111")
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_verve_pans
|
14
|
+
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pan_masker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Mayowa Anibaba
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A simple gem to scan a string, find and mask mastercard, visa and verve credit card pans
|
15
|
+
email: me@codegidi.com
|
16
|
+
executables:
|
17
|
+
- pan_masker
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/pan_masker.rb
|
22
|
+
- lib/pan_masker/masker.rb
|
23
|
+
- lib/pan_masker/finder.rb
|
24
|
+
- bin/pan_masker
|
25
|
+
- test/test_pan_masker.rb
|
26
|
+
homepage: http://rubygems.org/gems/pan_masker
|
27
|
+
licenses:
|
28
|
+
- MIT
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
none: false
|
39
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
none: false
|
45
|
+
requirements: []
|
46
|
+
rubyforge_project:
|
47
|
+
rubygems_version: 1.8.24
|
48
|
+
signing_key:
|
49
|
+
specification_version: 3
|
50
|
+
summary: Pan masker
|
51
|
+
test_files:
|
52
|
+
- test/test_pan_masker.rb
|