magnet 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 949bdc5e5fd0ef2d97ca63f613ba3251762f90c8
4
- data.tar.gz: 6e065fb9d6a34fdb7a1d56a906816cdfe9f2aa4f
3
+ metadata.gz: 76378a2db3261b36239c3be612f927f28b52aa72
4
+ data.tar.gz: 04e4c0aa8297647639cb0fa138d8c5b65a270331
5
5
  SHA512:
6
- metadata.gz: dad20f9f02191d065fb212b20d5466f5078700bbe782ff481259cd4704bdaf9ca754a5b5e5f5e54e2c0aa62a6b993006d7b3334d83b3632c0a92c97cc816a3f2
7
- data.tar.gz: 84397f173c18f21e1e44deef8ae12611cb4308a36257547681bb287c3e3ed716ae16fd9343592699c67dece64c5899e557a8091ed0e4436036d9cc019bb1c3fb
6
+ metadata.gz: 7c23d4eb84168a46bd034fc53b69cb5944eb901c4cf8c3e0cb075e5a2e6cc045a2d1b007d8d6f8be4faed07395c8fad393342e763bfee21318d4658443922283
7
+ data.tar.gz: fcfef9f23c8fe75a351c8a54253fef774b439d5502517d7f7b0f69ea1b92546ab624b1fe39f7658ae70c5978332a4965247680775b36eabfb65007b44129cf03
@@ -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]
@@ -1,3 +1,3 @@
1
1
  module Magnet
2
- VERSION = "1.5.2"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -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.5.2
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-03-19 00:00:00.000000000 Z
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.2.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