iso8583 0.1.6 → 0.2.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 +5 -13
- data/AUTHORS +2 -0
- data/CHANGELOG +13 -4
- data/Gemfile +3 -0
- data/Gemfile.lock +18 -0
- data/README +9 -6
- data/lib/iso8583/bitmap.rb +2 -4
- data/lib/iso8583/exception.rb +1 -1
- data/lib/iso8583/field.rb +3 -3
- data/lib/iso8583/message.rb +6 -3
- data/lib/iso8583/util.rb +9 -4
- data/lib/iso8583/version.rb +1 -1
- data/test/message_test.rb +11 -0
- data/test/test_util.rb +13 -4
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YzQ0OTBiYmI4MGQ0NjViMTI2YzNlM2NiZTUzNTIxZTliYWU4OTQzOQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9a014be2e1455129a38601f8f9490a0856e8f80e
|
4
|
+
data.tar.gz: e845890de100b7b09f52c2dea10709d759a09710
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjY4M2QzNWIxNTlkNDAwM2Y5ZjUzZTM3ZTc3ZGNhMGQ3ODI4Zjg1OWVmOGMx
|
11
|
-
YmIzZWE4YWJlNDc5ZGIwNWJjMmMyZDBkZDE2M2EzMjdjNjU0OTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzQ2YzU2N2E1YzM2YjRjZThiNTdiOWE2NGViYjA1NmMzNWQwZGNjZmJkMTg2
|
14
|
-
MDBlOWU2MTdmOTkyOWZkYmQwYWVmNjJkMTkxMDkyMTY3NDk1MjcyYjI3OWM2
|
15
|
-
MGU1MDVlN2QzNTAxNTAzZjQ4YzA0NmQ2ZmVmMzI0ZDlkMzYyZWQ=
|
6
|
+
metadata.gz: 883e27a230ef51981e2a6fdd95776c4fb310a02712554526bc2f7928835864ffa2c2a2cb1eb38757ec1f736447922d424820bbb84afb1e882512310fdf1693c7
|
7
|
+
data.tar.gz: 692b9a633fd89d7916888c39f9440920e206eef24f979eda4672684eb13864703d94b7484bc363d1240a4ee69a765a8267a08245b7b12902f10d872a175a19c7
|
data/AUTHORS
CHANGED
data/CHANGELOG
CHANGED
@@ -1,12 +1,21 @@
|
|
1
|
+
0.2.0
|
2
|
+
=========
|
3
|
+
no more 1.8 compatibility, byte encoding for 1.9+, ci
|
4
|
+
Inherit ISOException from StandardError
|
5
|
+
Add bundler stuff, and dev dependancy for test-unit which was removed
|
6
|
+
for no good reason in 2.2
|
7
|
+
Use ASCII for all forced_encodings
|
8
|
+
|
1
9
|
0.1.6
|
2
10
|
=========
|
3
|
-
restrict to ruby < 2
|
4
|
-
allow removal of empty fields
|
11
|
+
restrict to ruby < 2
|
12
|
+
allow removal of empty fields
|
13
|
+
Thanks: Lasse Skindstad Ebert https://github.com/lasseebert
|
5
14
|
|
6
15
|
0.1.5
|
7
16
|
=========
|
8
|
-
MMDD Codec
|
9
|
-
BCD encoder checks odd length fields
|
17
|
+
MMDD Codec
|
18
|
+
BCD encoder checks odd length fields
|
10
19
|
|
11
20
|
0.1.4
|
12
21
|
=========
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/README
CHANGED
@@ -3,17 +3,18 @@
|
|
3
3
|
This package currently contains code for coding an decoding ISO 8583
|
4
4
|
Financial Message.
|
5
5
|
|
6
|
-
==
|
6
|
+
== Developing
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
In case you're using a ruby version >= 2.2, test-unit is no longer in
|
9
|
+
the std lib, so it needs to be available. Bundler installs this, if not
|
10
|
+
using bundler, you need to run `gem install test-unit` before running
|
11
|
+
the tests.
|
11
12
|
|
12
13
|
== Installing
|
13
14
|
|
14
|
-
You can install the +iso8583+ package by executing:
|
15
|
+
You can install the last version of the +iso8583+ package by executing:
|
15
16
|
|
16
|
-
gem install iso8583
|
17
|
+
gem install iso8583
|
17
18
|
|
18
19
|
== Source
|
19
20
|
|
@@ -24,3 +25,5 @@ The source is most readily available on github[http://github.com/a2800276/8583].
|
|
24
25
|
In case you discover bugs, spelling errors, offer suggestions for
|
25
26
|
improvements or would like to help out with the project, you can contact
|
26
27
|
me directly (tim@kuriositaet.de).
|
28
|
+
|
29
|
+
[](https://travis-ci.org/a2800276/8583)
|
data/lib/iso8583/bitmap.rb
CHANGED
@@ -17,9 +17,7 @@ module ISO8583
|
|
17
17
|
# not, this initializes and empty bitmap.
|
18
18
|
def initialize(message = nil)
|
19
19
|
@bmp = Array.new(128, false)
|
20
|
-
if
|
21
|
-
|
22
|
-
else
|
20
|
+
if message
|
23
21
|
initialize_from_message message
|
24
22
|
end
|
25
23
|
end
|
@@ -76,7 +74,7 @@ module ISO8583
|
|
76
74
|
break
|
77
75
|
end
|
78
76
|
}
|
79
|
-
str = ""
|
77
|
+
str = "".force_encoding("ASCII-8BIT")
|
80
78
|
1.upto(self[1] ? 128 : 64) {|i|
|
81
79
|
str << (self[i] ? "1" : "0")
|
82
80
|
}
|
data/lib/iso8583/exception.rb
CHANGED
data/lib/iso8583/field.rb
CHANGED
@@ -27,7 +27,7 @@ module ISO8583
|
|
27
27
|
raise ISO8583Exception.new("Cannot determine the length of '#{name}' field")
|
28
28
|
end
|
29
29
|
|
30
|
-
raw_value = raw
|
30
|
+
raw_value = raw.byteslice(0,len)
|
31
31
|
|
32
32
|
# make sure we have enough data ...
|
33
33
|
if raw_value.length != len
|
@@ -35,7 +35,7 @@ module ISO8583
|
|
35
35
|
raise ISO8583ParseException.new(mes)
|
36
36
|
end
|
37
37
|
|
38
|
-
rest = raw
|
38
|
+
rest = raw.byteslice(len, raw.length)
|
39
39
|
begin
|
40
40
|
real_value = codec.decode(raw_value)
|
41
41
|
rescue
|
@@ -70,7 +70,7 @@ module ISO8583
|
|
70
70
|
when Fixnum
|
71
71
|
raise ISO8583Exception.new("Too long: #{value} (#{name})! length=#{length}") if encoded_value.length > length
|
72
72
|
raise ISO8583Exception.new("Too short: #{value} (#{name})! length=#{length}") if encoded_value.length < length
|
73
|
-
""
|
73
|
+
"".force_encoding("ASCII-8BIT")
|
74
74
|
when Field
|
75
75
|
raise ISO8583Exception.new("Max lenth exceeded: #{value}, max: #{max}") if max && encoded_value.length > max
|
76
76
|
length.encode(encoded_value.length)
|
data/lib/iso8583/message.rb
CHANGED
@@ -173,8 +173,10 @@ module ISO8583
|
|
173
173
|
# Retrieve the byte representation of the bitmap.
|
174
174
|
def to_b
|
175
175
|
raise ISO8583Exception.new "no MTI set!" unless mti
|
176
|
-
mti_enc = self.class._mti_format.encode(mti)
|
177
|
-
|
176
|
+
mti_enc = self.class._mti_format.encode(mti)
|
177
|
+
str_body="".force_encoding('ASCII-8BIT')
|
178
|
+
_body.map {|b| str_body+=b.force_encoding('ASCII-8BIT')}
|
179
|
+
mti_enc << str_body
|
178
180
|
end
|
179
181
|
|
180
182
|
# Returns a nicely formatted representation of this
|
@@ -202,7 +204,7 @@ module ISO8583
|
|
202
204
|
# [bitmap_bytes, message_bytes]
|
203
205
|
def _body
|
204
206
|
bitmap = Bitmap.new
|
205
|
-
message = ""
|
207
|
+
message = "".force_encoding('ASCII-8BIT')
|
206
208
|
@values.keys.sort.each do |bmp_num|
|
207
209
|
bitmap.set(bmp_num)
|
208
210
|
enc_value = @values[bmp_num].encode
|
@@ -344,6 +346,7 @@ module ISO8583
|
|
344
346
|
|
345
347
|
# Parse the bytes `str` returning a message of the defined type.
|
346
348
|
def parse(str)
|
349
|
+
str = str.force_encoding('ASCII-8BIT')
|
347
350
|
message = self.new
|
348
351
|
message.mti, rest = _mti_format.parse(str)
|
349
352
|
bmp,rest = Bitmap.parse(rest)
|
data/lib/iso8583/util.rb
CHANGED
@@ -19,20 +19,25 @@ module ISO8583
|
|
19
19
|
#
|
20
20
|
# Convert a String containing hex data to
|
21
21
|
# a String containing the corresponding bytes:
|
22
|
-
#
|
22
|
+
#
|
23
23
|
# hex2b "abcd12" => "\xa\cd\12"
|
24
24
|
#
|
25
25
|
def hex2b(hex_string)
|
26
|
+
|
26
27
|
string = hex_string.gsub(/\s+/, "")
|
28
|
+
|
27
29
|
raise ISO8583Exception.new("Invalid Hex chars: #{hex_string}") unless string =~ /^[A-Fa-f0-9]*$/
|
28
30
|
raise ISO8583Exception.new("Uneven number of Hex chars #{hex_string}") unless ( (string.length % 2) == 0)
|
29
|
-
|
31
|
+
|
32
|
+
[string].pack("H*").force_encoding('ASCII-8BIT')
|
33
|
+
|
30
34
|
end
|
31
35
|
|
36
|
+
|
32
37
|
def _conv(str, mapping)
|
33
|
-
_str = ""
|
38
|
+
_str = "".force_encoding('ASCII-8BIT')
|
34
39
|
str.each_byte{|byte|
|
35
|
-
_str << mapping[byte]
|
40
|
+
_str << [mapping[byte]].pack("C")
|
36
41
|
}
|
37
42
|
_str
|
38
43
|
end
|
data/lib/iso8583/version.rb
CHANGED
data/test/message_test.rb
CHANGED
@@ -45,6 +45,17 @@ class MessageTest < Test::Unit::TestCase
|
|
45
45
|
assert_equal 1430, mes.mti
|
46
46
|
end
|
47
47
|
|
48
|
+
def test_rescue_standard_error
|
49
|
+
rescued = false
|
50
|
+
begin
|
51
|
+
BerlinMessage.parse("bogus")
|
52
|
+
rescue => error
|
53
|
+
rescued = true
|
54
|
+
end
|
55
|
+
|
56
|
+
assert rescued
|
57
|
+
end
|
58
|
+
|
48
59
|
def test_to_s
|
49
60
|
mes = BerlinMessage.new
|
50
61
|
mes.mti = "Network Management Request Response Issuer Gateway or Acquirer Gateway"
|
data/test/test_util.rb
CHANGED
@@ -5,9 +5,18 @@ include ISO8583
|
|
5
5
|
|
6
6
|
class UtilTest < Test::Unit::TestCase
|
7
7
|
def test_hex2b
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
# weird ruby 2.0 workaround:
|
9
|
+
# literal:
|
10
|
+
# "\xab\xcd\x12"
|
11
|
+
# is interpretted as:
|
12
|
+
# "\xAB\xCD\u0012"
|
13
|
+
# ...force_encoding(...) fixes this.
|
14
|
+
|
15
|
+
expected = "\xab\xcd\x12".force_encoding("ASCII-8BIT")
|
16
|
+
|
17
|
+
assert_equal expected, hex2b("abcd12")
|
18
|
+
assert_equal expected, hex2b("a b c d 1 2")
|
19
|
+
assert_equal expected, hex2b("ABCD12")
|
11
20
|
assert_raise(ISO8583Exception){
|
12
21
|
# non hex
|
13
22
|
hex2b("ABCDEFGH")
|
@@ -27,6 +36,6 @@ class UtilTest < Test::Unit::TestCase
|
|
27
36
|
end
|
28
37
|
|
29
38
|
def test_ascii2ebcdic
|
30
|
-
assert_equal "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9", ascii2ebcdic("0123456789")
|
39
|
+
assert_equal "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('ASCII-8BIT'), ascii2ebcdic("0123456789")
|
31
40
|
end
|
32
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iso8583
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Becker
|
@@ -9,11 +9,10 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-09-28 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
15
|
-
|
16
|
-
'
|
14
|
+
description: |
|
15
|
+
Ruby implementation of ISO 8583 financial messaging
|
17
16
|
email:
|
18
17
|
- tim.becker@kuriositaet.de
|
19
18
|
- cordawyn@gmail.com
|
@@ -23,6 +22,8 @@ extra_rdoc_files: []
|
|
23
22
|
files:
|
24
23
|
- AUTHORS
|
25
24
|
- CHANGELOG
|
25
|
+
- Gemfile
|
26
|
+
- Gemfile.lock
|
26
27
|
- LICENSE
|
27
28
|
- README
|
28
29
|
- Rakefile
|
@@ -53,19 +54,19 @@ require_paths:
|
|
53
54
|
- lib
|
54
55
|
required_ruby_version: !ruby/object:Gem::Requirement
|
55
56
|
requirements:
|
56
|
-
- -
|
57
|
+
- - '>='
|
57
58
|
- !ruby/object:Gem::Version
|
58
59
|
version: '0'
|
59
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
61
|
requirements:
|
61
|
-
- -
|
62
|
+
- - '>='
|
62
63
|
- !ruby/object:Gem::Version
|
63
64
|
version: '0'
|
64
65
|
requirements:
|
65
66
|
- none
|
66
67
|
rubyforge_project: iso8583
|
67
|
-
rubygems_version: 2.
|
68
|
+
rubygems_version: 2.4.6
|
68
69
|
signing_key:
|
69
70
|
specification_version: 4
|
70
|
-
summary:
|
71
|
+
summary: 'iso8583: Ruby implementation of ISO 8583 financial messaging'
|
71
72
|
test_files: []
|