magnet 1.5.2 → 1.6.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.
- checksums.yaml +4 -4
- data/lib/magnet/parser.rb +2 -1
- data/lib/magnet/version.rb +1 -1
- data/test/magnet/card_parser_test.rb +19 -0
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76378a2db3261b36239c3be612f927f28b52aa72
|
4
|
+
data.tar.gz: 04e4c0aa8297647639cb0fa138d8c5b65a270331
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c23d4eb84168a46bd034fc53b69cb5944eb901c4cf8c3e0cb075e5a2e6cc045a2d1b007d8d6f8be4faed07395c8fad393342e763bfee21318d4658443922283
|
7
|
+
data.tar.gz: fcfef9f23c8fe75a351c8a54253fef774b439d5502517d7f7b0f69ea1b92546ab624b1fe39f7658ae70c5978332a4965247680775b36eabfb65007b44129cf03
|
data/lib/magnet/parser.rb
CHANGED
@@ -3,6 +3,7 @@ module Magnet
|
|
3
3
|
TRACKS = {
|
4
4
|
1 => /\A%(?<format>[A-Z])(?<pan>[0-9 ]{1,19})\^(?<name>[^^]*)\^\s?(?<expiration>\d{4}|\^)(?<service_code>\d{3}|\^)(?<discretionary_data>[^\?]*)\?\Z/,
|
5
5
|
2 => /\A;(?<pan>[0-9 ]{1,19})=(?<expiration>\d{4}|=)(?<service_code>\d{3}|=)(?<discretionary_data>[^\?]*)\?.?\Z/,
|
6
|
+
'EMV' => /\A(?<pan>[0-9 ]{1,19})(d|D)(?<expiration>\d{4}|=)(?<service_code>\d{3}|=)(?<discretionary_data>[^\?fF]*)(f|F)?\Z/,
|
6
7
|
}.freeze
|
7
8
|
|
8
9
|
def initialize(track = :auto)
|
@@ -23,7 +24,7 @@ module Magnet
|
|
23
24
|
attributes[:service_code] = m[:service_code] == "^" ? nil : m[:service_code]
|
24
25
|
attributes[:discretionary_data] = m[:discretionary_data] == "" ? nil : m[:discretionary_data]
|
25
26
|
return attributes
|
26
|
-
elsif track == TRACKS[2]
|
27
|
+
elsif track == TRACKS[2] || track == TRACKS['EMV']
|
27
28
|
attributes[:pan] = m[:pan]
|
28
29
|
attributes[:expiration] = m[:expiration] == "=" ? nil : m[:expiration]
|
29
30
|
attributes[:service_code] = m[:service_code] == "=" ? nil : m[:service_code]
|
data/lib/magnet/version.rb
CHANGED
@@ -43,5 +43,24 @@ describe Magnet::Card do
|
|
43
43
|
assert_nil card.technology
|
44
44
|
assert_nil card.title
|
45
45
|
end
|
46
|
+
|
47
|
+
it "EMV track 2 should work" do
|
48
|
+
track_data = "5213320039019055d2512620062930423f"
|
49
|
+
card = Magnet::Card.parse(track_data, @parser)
|
50
|
+
assert_equal "5213320039019055", card.number
|
51
|
+
assert_equal :no_restrictions, card.allowed_services
|
52
|
+
assert_equal :by_issuer, card.authorization_processing
|
53
|
+
assert_equal "062930423", card.discretionary_data
|
54
|
+
assert_equal 12, card.expiration_month
|
55
|
+
assert_equal 25, card.expiration_year
|
56
|
+
assert_equal :national, card.interchange
|
57
|
+
assert_equal :integrated_circuit_card, card.technology
|
58
|
+
assert_equal :pin_required, card.pin_requirements
|
59
|
+
assert_nil card.first_name
|
60
|
+
assert_nil card.format
|
61
|
+
assert_nil card.initial
|
62
|
+
assert_nil card.last_name
|
63
|
+
assert_nil card.title
|
64
|
+
end
|
46
65
|
end
|
47
66
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magnet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Kadolph
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 5.0.6
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 5.0.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mocha
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.14.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.14.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 10.0.3
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 10.0.3
|
55
55
|
description: magnet lets you parse track data from magnetic stripe cards. Currently
|
@@ -60,10 +60,10 @@ executables: []
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
- lib/magnet.rb
|
64
63
|
- lib/magnet/card.rb
|
65
64
|
- lib/magnet/parser.rb
|
66
65
|
- lib/magnet/version.rb
|
66
|
+
- lib/magnet.rb
|
67
67
|
- test/magnet/card_parser_test.rb
|
68
68
|
- test/magnet/card_test.rb
|
69
69
|
- test/magnet/parser_test.rb
|
@@ -76,21 +76,21 @@ require_paths:
|
|
76
76
|
- lib
|
77
77
|
required_ruby_version: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- -
|
79
|
+
- - '>='
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: 1.9.2
|
82
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - '>='
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
87
|
requirements: []
|
88
88
|
rubyforge_project:
|
89
|
-
rubygems_version: 2.
|
89
|
+
rubygems_version: 2.0.14
|
90
90
|
signing_key:
|
91
91
|
specification_version: 4
|
92
92
|
summary: magnet is a library for decoding the track data on magnetic stripe cards.
|
93
93
|
test_files:
|
94
|
-
- test/magnet/card_test.rb
|
95
94
|
- test/magnet/card_parser_test.rb
|
95
|
+
- test/magnet/card_test.rb
|
96
96
|
- test/magnet/parser_test.rb
|