iostreams 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +6 -1
- data/lib/io_streams/bzip2/reader.rb +29 -0
- data/lib/io_streams/bzip2/writer.rb +30 -0
- data/lib/io_streams/io_streams.rb +1 -0
- data/lib/io_streams/version.rb +1 -1
- data/lib/iostreams.rb +4 -0
- data/test/bzip2_reader_test.rb +33 -0
- data/test/bzip2_writer_test.rb +43 -0
- data/test/files/text.txt.bz2 +0 -0
- data/test/pgp_test.rb +4 -4
- data/test/test_helper.rb +3 -0
- metadata +11 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1204961c2edb46c45ff0ffd39c368f5c87c37d61d108a83a4c8e252f12512fdf
|
4
|
+
data.tar.gz: 6572b1c75c435228e56fbcaf6c29ca274544b592f36ce0a84034436bc306adde
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5c8dfb2434a9d7328fb1d54cd20036565cfc2d6eee4365fc30528bb1ff73170fb26d854c319ea5e43ff8a6027ac8737f9fef926082249de2a89d0e17fff71f3
|
7
|
+
data.tar.gz: 6d1dd7d3aea5d3c1e693c788961ae491cf7e7825a77035cb348616d5a085c4995e703258cff78c4d00c736f170c395310b9ecbfe2b2026bff4f8427e536099c0
|
data/README.md
CHANGED
@@ -12,6 +12,11 @@ Currently streaming classes are available for:
|
|
12
12
|
|
13
13
|
* Zip
|
14
14
|
* Gzip
|
15
|
+
* BZip2
|
16
|
+
* CSV
|
17
|
+
* Delimited Lines / Rows
|
18
|
+
* PGP
|
19
|
+
* Xlsx (Reading)
|
15
20
|
* Encryption using [Symmetric Encryption](https://github.com/reidmorrison/symmetric-encryption)
|
16
21
|
|
17
22
|
## Introduction
|
@@ -147,7 +152,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
147
152
|
|
148
153
|
## License
|
149
154
|
|
150
|
-
Copyright
|
155
|
+
Copyright 2018 Reid Morrison
|
151
156
|
|
152
157
|
Licensed under the Apache License, Version 2.0 (the "License");
|
153
158
|
you may not use this file except in compliance with the License.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module IOStreams
|
2
|
+
module Bzip2
|
3
|
+
class Reader
|
4
|
+
# Read from a Bzip2 file or stream, decompressing the contents as it is read
|
5
|
+
def self.open(file_name_or_io, _=nil, &block)
|
6
|
+
begin
|
7
|
+
require 'rbzip2' unless defined?(RBzip2)
|
8
|
+
rescue LoadError => e
|
9
|
+
raise(LoadError, "Please install the 'rbzip2' gem for Bzip2 streaming support. #{e.message}")
|
10
|
+
end
|
11
|
+
|
12
|
+
if IOStreams.reader_stream?(file_name_or_io)
|
13
|
+
begin
|
14
|
+
io = RBzip2.default_adapter::Decompressor.new(file_name_or_io)
|
15
|
+
block.call(io)
|
16
|
+
ensure
|
17
|
+
io.close if io && (io.respond_to?(:closed?) && !io.closed?)
|
18
|
+
end
|
19
|
+
else
|
20
|
+
::File.open(file_name_or_io, 'rb') do |file|
|
21
|
+
io = RBzip2.default_adapter::Decompressor.new(file)
|
22
|
+
block.call(io)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module IOStreams
|
2
|
+
module Bzip2
|
3
|
+
class Writer
|
4
|
+
# Write to a file / stream, compressing with Bzip2
|
5
|
+
def self.open(file_name_or_io, _=nil, &block)
|
6
|
+
begin
|
7
|
+
require 'rbzip2' unless defined?(RBzip2)
|
8
|
+
rescue LoadError => e
|
9
|
+
raise(LoadError, "Please install the 'rbzip2' gem for Bzip2 streaming support. #{e.message}")
|
10
|
+
end
|
11
|
+
|
12
|
+
if IOStreams.reader_stream?(file_name_or_io)
|
13
|
+
begin
|
14
|
+
io = RBzip2.default_adapter::Compressor.new(file_name_or_io)
|
15
|
+
block.call(io)
|
16
|
+
ensure
|
17
|
+
io.close
|
18
|
+
end
|
19
|
+
else
|
20
|
+
::File.open(file_name_or_io, 'wb') do |file|
|
21
|
+
io = RBzip2.default_adapter::Compressor.new(file)
|
22
|
+
block.call(io)
|
23
|
+
io.close
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -298,6 +298,7 @@ module IOStreams
|
|
298
298
|
# @formatter:off
|
299
299
|
register_extension(:enc, SymmetricEncryption::Reader, SymmetricEncryption::Writer) if defined?(SymmetricEncryption)
|
300
300
|
register_extension(:file, IOStreams::File::Reader, IOStreams::File::Writer)
|
301
|
+
register_extension(:bz2, IOStreams::Bzip2::Reader, IOStreams::Bzip2::Writer)
|
301
302
|
register_extension(:gz, IOStreams::Gzip::Reader, IOStreams::Gzip::Writer)
|
302
303
|
register_extension(:gzip, IOStreams::Gzip::Reader, IOStreams::Gzip::Writer)
|
303
304
|
register_extension(:zip, IOStreams::Zip::Reader, IOStreams::Zip::Writer)
|
data/lib/io_streams/version.rb
CHANGED
data/lib/iostreams.rb
CHANGED
@@ -9,6 +9,10 @@ module IOStreams
|
|
9
9
|
autoload :Reader, 'io_streams/file/reader'
|
10
10
|
autoload :Writer, 'io_streams/file/writer'
|
11
11
|
end
|
12
|
+
module Bzip2
|
13
|
+
autoload :Reader, 'io_streams/bzip2/reader'
|
14
|
+
autoload :Writer, 'io_streams/bzip2/writer'
|
15
|
+
end
|
12
16
|
module Gzip
|
13
17
|
autoload :Reader, 'io_streams/gzip/reader'
|
14
18
|
autoload :Writer, 'io_streams/gzip/writer'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
# Unit Test for IOStreams::Gzip
|
4
|
+
module Streams
|
5
|
+
class Bzip2ReaderTest < Minitest::Test
|
6
|
+
describe IOStreams::Bzip2::Reader do
|
7
|
+
before do
|
8
|
+
@file_name = File.join(File.dirname(__FILE__), 'files', 'text.txt.bz2')
|
9
|
+
@gzip_data = File.open(@file_name, 'rb') { |f| f.read }
|
10
|
+
@data = File.read(File.join(File.dirname(__FILE__), 'files', 'text.txt'))
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.open' do
|
14
|
+
it 'file' do
|
15
|
+
result = IOStreams::Bzip2::Reader.open(@file_name) do |io|
|
16
|
+
io.read
|
17
|
+
end
|
18
|
+
assert_equal @data, result
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'stream' do
|
22
|
+
result = File.open(@file_name) do |file|
|
23
|
+
IOStreams::Bzip2::Reader.open(file) do |io|
|
24
|
+
io.read
|
25
|
+
end
|
26
|
+
end
|
27
|
+
assert_equal @data, result
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
# Unit Test for IOStreams::Bzip2
|
4
|
+
module Streams
|
5
|
+
class Bzip2WriterTest < Minitest::Test
|
6
|
+
describe IOStreams::Bzip2::Writer do
|
7
|
+
before do
|
8
|
+
@file_name = File.join(File.dirname(__FILE__), 'files', 'text.txt.gz')
|
9
|
+
@data = File.read(File.join(File.dirname(__FILE__), 'files', 'text.txt'))
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.open' do
|
13
|
+
it 'file' do
|
14
|
+
temp_file = Tempfile.new('rocket_job')
|
15
|
+
file_name = temp_file.to_path
|
16
|
+
IOStreams::Bzip2::Writer.open(file_name) do |io|
|
17
|
+
io.write(@data)
|
18
|
+
end
|
19
|
+
|
20
|
+
File.open(file_name, 'rb') do |file|
|
21
|
+
io = RBzip2.default_adapter::Decompressor.new(file)
|
22
|
+
result = io.read
|
23
|
+
temp_file.delete
|
24
|
+
assert_equal @data, result
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'stream' do
|
29
|
+
io_string = StringIO.new(''.force_encoding('ASCII-8BIT'))
|
30
|
+
IOStreams::Bzip2::Writer.open(io_string) do |io|
|
31
|
+
io.write(@data)
|
32
|
+
end
|
33
|
+
|
34
|
+
io = StringIO.new(io_string.string)
|
35
|
+
rbzip2 = RBzip2.default_adapter::Decompressor.new(io)
|
36
|
+
data = rbzip2.read
|
37
|
+
assert_equal @data, data
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
Binary file
|
data/test/pgp_test.rb
CHANGED
@@ -118,7 +118,7 @@ module Streams
|
|
118
118
|
assert_equal 1, keys.size
|
119
119
|
assert key = keys.first
|
120
120
|
|
121
|
-
assert_equal key[:date]
|
121
|
+
assert_equal Date.today, key[:date]
|
122
122
|
assert_equal email, key[:email]
|
123
123
|
assert_includes key[:key_id], generated_key_id
|
124
124
|
assert_equal 1024, key[:key_length]
|
@@ -137,7 +137,7 @@ module Streams
|
|
137
137
|
assert_equal 1, keys.size
|
138
138
|
assert key = keys.first
|
139
139
|
|
140
|
-
assert_equal key[:date]
|
140
|
+
assert_equal Date.today, key[:date]
|
141
141
|
assert_equal email, key[:email]
|
142
142
|
assert_includes key[:key_id], generated_key_id
|
143
143
|
assert_equal 1024, key[:key_length]
|
@@ -153,7 +153,7 @@ module Streams
|
|
153
153
|
assert_equal 1, keys.size
|
154
154
|
assert key = keys.first
|
155
155
|
|
156
|
-
assert_equal key[:date]
|
156
|
+
assert_equal Date.today, key[:date]
|
157
157
|
assert_equal email, key[:email]
|
158
158
|
assert_includes key[:key_id], generated_key_id
|
159
159
|
assert_equal 1024, key[:key_length]
|
@@ -169,7 +169,7 @@ module Streams
|
|
169
169
|
assert_equal 1, keys.size
|
170
170
|
assert key = keys.first
|
171
171
|
|
172
|
-
assert_equal key[:date]
|
172
|
+
assert_equal Date.today, key[:date]
|
173
173
|
assert_equal email, key[:email]
|
174
174
|
assert_includes key[:key_id], generated_key_id
|
175
175
|
assert_equal 1024, key[:key_length]
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iostreams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -33,6 +33,8 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- README.md
|
35
35
|
- Rakefile
|
36
|
+
- lib/io_streams/bzip2/reader.rb
|
37
|
+
- lib/io_streams/bzip2/writer.rb
|
36
38
|
- lib/io_streams/csv/reader.rb
|
37
39
|
- lib/io_streams/csv/writer.rb
|
38
40
|
- lib/io_streams/delimited/reader.rb
|
@@ -53,6 +55,8 @@ files:
|
|
53
55
|
- lib/io_streams/zip/reader.rb
|
54
56
|
- lib/io_streams/zip/writer.rb
|
55
57
|
- lib/iostreams.rb
|
58
|
+
- test/bzip2_reader_test.rb
|
59
|
+
- test/bzip2_writer_test.rb
|
56
60
|
- test/csv_reader_test.rb
|
57
61
|
- test/csv_writer_test.rb
|
58
62
|
- test/delimited_reader_test.rb
|
@@ -62,6 +66,7 @@ files:
|
|
62
66
|
- test/files/spreadsheet.xlsx
|
63
67
|
- test/files/test.csv
|
64
68
|
- test/files/text.txt
|
69
|
+
- test/files/text.txt.bz2
|
65
70
|
- test/files/text.txt.gz
|
66
71
|
- test/files/text.txt.gz.zip
|
67
72
|
- test/files/text.zip
|
@@ -95,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
100
|
version: '0'
|
96
101
|
requirements: []
|
97
102
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.7.3
|
99
104
|
signing_key:
|
100
105
|
specification_version: 4
|
101
106
|
summary: Ruby file streaming. Supports Text, Zip, Gzip, Xlsx, csv, PGP / GPG and Symmetric
|
@@ -105,16 +110,19 @@ test_files:
|
|
105
110
|
- test/xlsx_reader_test.rb
|
106
111
|
- test/csv_writer_test.rb
|
107
112
|
- test/zip_reader_test.rb
|
113
|
+
- test/bzip2_writer_test.rb
|
108
114
|
- test/gzip_writer_test.rb
|
109
115
|
- test/delimited_writer_test.rb
|
110
116
|
- test/file_reader_test.rb
|
111
117
|
- test/pgp_writer_test.rb
|
118
|
+
- test/bzip2_reader_test.rb
|
112
119
|
- test/csv_reader_test.rb
|
113
120
|
- test/zip_writer_test.rb
|
114
121
|
- test/delimited_reader_test.rb
|
115
122
|
- test/files/text.zip
|
116
123
|
- test/files/spreadsheet.xlsx
|
117
124
|
- test/files/test.csv
|
125
|
+
- test/files/text.txt.bz2
|
118
126
|
- test/files/text.txt.gz.zip
|
119
127
|
- test/files/text.txt.gz
|
120
128
|
- test/files/text.txt
|