pan_masker 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/bin/pan_masker ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pan_masker'
4
+ puts Pan_masker.mask(ARGV[0])
@@ -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,8 @@
1
+ class Pan_masker
2
+ def self.mask(data)
3
+ maskedData = Finder.find_and_mask_pan(data)
4
+ maskedData
5
+ end
6
+ end
7
+
8
+ require 'pan_masker/finder'
@@ -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