iostreams 0.20.3 → 1.0.0.beta

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/lib/io_streams/bzip2/reader.rb +9 -21
  3. data/lib/io_streams/bzip2/writer.rb +9 -21
  4. data/lib/io_streams/deprecated.rb +217 -0
  5. data/lib/io_streams/encode/reader.rb +12 -16
  6. data/lib/io_streams/encode/writer.rb +9 -13
  7. data/lib/io_streams/errors.rb +6 -6
  8. data/lib/io_streams/gzip/reader.rb +7 -14
  9. data/lib/io_streams/gzip/writer.rb +7 -15
  10. data/lib/io_streams/io_streams.rb +182 -524
  11. data/lib/io_streams/line/reader.rb +9 -9
  12. data/lib/io_streams/line/writer.rb +10 -11
  13. data/lib/io_streams/path.rb +190 -0
  14. data/lib/io_streams/paths/file.rb +176 -0
  15. data/lib/io_streams/paths/http.rb +92 -0
  16. data/lib/io_streams/paths/matcher.rb +61 -0
  17. data/lib/io_streams/paths/s3.rb +269 -0
  18. data/lib/io_streams/paths/sftp.rb +99 -0
  19. data/lib/io_streams/pgp.rb +47 -19
  20. data/lib/io_streams/pgp/reader.rb +20 -28
  21. data/lib/io_streams/pgp/writer.rb +24 -46
  22. data/lib/io_streams/reader.rb +28 -0
  23. data/lib/io_streams/record/reader.rb +20 -16
  24. data/lib/io_streams/record/writer.rb +28 -28
  25. data/lib/io_streams/row/reader.rb +22 -26
  26. data/lib/io_streams/row/writer.rb +29 -28
  27. data/lib/io_streams/stream.rb +400 -0
  28. data/lib/io_streams/streams.rb +125 -0
  29. data/lib/io_streams/symmetric_encryption/reader.rb +5 -13
  30. data/lib/io_streams/symmetric_encryption/writer.rb +16 -15
  31. data/lib/io_streams/tabular/header.rb +9 -3
  32. data/lib/io_streams/tabular/parser/array.rb +8 -3
  33. data/lib/io_streams/tabular/parser/csv.rb +6 -2
  34. data/lib/io_streams/tabular/parser/hash.rb +4 -1
  35. data/lib/io_streams/tabular/parser/json.rb +3 -1
  36. data/lib/io_streams/tabular/parser/psv.rb +3 -1
  37. data/lib/io_streams/tabular/utility/csv_row.rb +9 -8
  38. data/lib/io_streams/utils.rb +22 -0
  39. data/lib/io_streams/version.rb +1 -1
  40. data/lib/io_streams/writer.rb +28 -0
  41. data/lib/io_streams/xlsx/reader.rb +7 -19
  42. data/lib/io_streams/zip/reader.rb +7 -26
  43. data/lib/io_streams/zip/writer.rb +21 -38
  44. data/lib/iostreams.rb +15 -15
  45. data/test/bzip2_reader_test.rb +3 -3
  46. data/test/bzip2_writer_test.rb +3 -3
  47. data/test/deprecated_test.rb +123 -0
  48. data/test/encode_reader_test.rb +3 -3
  49. data/test/encode_writer_test.rb +6 -6
  50. data/test/gzip_reader_test.rb +2 -2
  51. data/test/gzip_writer_test.rb +3 -3
  52. data/test/io_streams_test.rb +43 -136
  53. data/test/line_reader_test.rb +20 -20
  54. data/test/line_writer_test.rb +3 -3
  55. data/test/path_test.rb +30 -28
  56. data/test/paths/file_test.rb +206 -0
  57. data/test/paths/http_test.rb +34 -0
  58. data/test/paths/matcher_test.rb +111 -0
  59. data/test/paths/s3_test.rb +207 -0
  60. data/test/pgp_reader_test.rb +8 -8
  61. data/test/pgp_writer_test.rb +13 -13
  62. data/test/record_reader_test.rb +5 -5
  63. data/test/record_writer_test.rb +4 -4
  64. data/test/row_reader_test.rb +5 -5
  65. data/test/row_writer_test.rb +6 -6
  66. data/test/stream_test.rb +116 -0
  67. data/test/streams_test.rb +255 -0
  68. data/test/utils_test.rb +20 -0
  69. data/test/xlsx_reader_test.rb +3 -3
  70. data/test/zip_reader_test.rb +12 -12
  71. data/test/zip_writer_test.rb +5 -5
  72. metadata +33 -45
  73. data/lib/io_streams/base_path.rb +0 -72
  74. data/lib/io_streams/file/path.rb +0 -58
  75. data/lib/io_streams/file/reader.rb +0 -12
  76. data/lib/io_streams/file/writer.rb +0 -22
  77. data/lib/io_streams/http/reader.rb +0 -71
  78. data/lib/io_streams/s3.rb +0 -26
  79. data/lib/io_streams/s3/path.rb +0 -40
  80. data/lib/io_streams/s3/reader.rb +0 -28
  81. data/lib/io_streams/s3/writer.rb +0 -85
  82. data/lib/io_streams/sftp/reader.rb +0 -67
  83. data/lib/io_streams/sftp/writer.rb +0 -68
  84. data/test/base_path_test.rb +0 -35
  85. data/test/file_path_test.rb +0 -97
  86. data/test/file_reader_test.rb +0 -33
  87. data/test/file_writer_test.rb +0 -50
  88. data/test/http_reader_test.rb +0 -38
  89. data/test/s3_reader_test.rb +0 -41
  90. data/test/s3_writer_test.rb +0 -41
@@ -1,97 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- module IOStreams
4
- class FilePathTest < Minitest::Test
5
- describe IOStreams::File::Path do
6
- let(:path) { IOStreams::File::Path.new('/tmp/iostreams/some_test_path').delete(recursively: true) }
7
- let(:path_with_file_name) { IOStreams::File::Path.new('/tmp/iostreams/some_test_path/test_file.txt').delete }
8
-
9
- describe '.temp_file_name' do
10
- it 'returns value from block' do
11
- result = IOStreams::File::Path.temp_file_name('base', '.ext') { |name| 257 }
12
- assert_equal 257, result
13
- end
14
-
15
- it 'supplies new temp file_name' do
16
- file_name = nil
17
- file_name2 = nil
18
- IOStreams::File::Path.temp_file_name('base', '.ext') { |name| file_name = name }
19
- IOStreams::File::Path.temp_file_name('base', '.ext') { |name| file_name2 = name }
20
- refute_equal file_name, file_name2
21
- end
22
- end
23
-
24
- describe '.mkpath' do
25
- it 'makes path skipping file_name' do
26
- new_path = path.join('test_mkpath.xls')
27
- IOStreams::File::Path.mkpath(new_path.to_s)
28
-
29
- assert ::File.exist?(path.to_s)
30
- refute ::File.exist?(new_path.to_s)
31
- end
32
- end
33
-
34
- describe '#mkpath' do
35
- it 'makes path skipping file_name' do
36
- #path.writer { |io| io << "Hello World" }
37
- new_path = path.join('test_mkpath.xls').mkpath
38
- assert ::File.exist?(path.to_s)
39
- refute ::File.exist?(new_path.to_s)
40
- end
41
- end
42
-
43
- describe '#mkdir' do
44
- it 'makes entire path that does not have a file name' do
45
- new_path = path.join('more_path').mkdir
46
- assert ::File.exist?(path.to_s)
47
- assert ::File.exist?(new_path.to_s)
48
- end
49
- end
50
-
51
- describe '#exist?' do
52
- it 'true on existing file' do
53
- new_path = path.join('test_exist.txt')
54
- new_path.writer { |io| io << "Hello World" }
55
- assert ::File.exist?(path.to_s)
56
- assert ::File.exist?(new_path.to_s)
57
- end
58
- end
59
-
60
- describe '#size' do
61
- it 'of file' do
62
- data = "Hello World"
63
- path_with_file_name.writer { |io| io << data }
64
- assert_equal data.size, path_with_file_name.size
65
- end
66
- end
67
-
68
- describe '#delete' do
69
- it 'deletes existing file' do
70
- path_with_file_name.writer { |io| io << "Hello World" }
71
- assert ::File.exist?(path_with_file_name.to_s)
72
- path_with_file_name.delete
73
- refute ::File.exist?(path_with_file_name.to_s)
74
- end
75
-
76
- it 'ignores missing file' do
77
- path_with_file_name.delete
78
- path_with_file_name.delete
79
- end
80
- end
81
-
82
- describe 'reader' do
83
- it 'reads file' do
84
- path_with_file_name.writer { |io| io << "Hello World" }
85
- assert_equal "Hello World", path_with_file_name.reader(&:read)
86
- end
87
- end
88
-
89
- describe 'writer' do
90
- it 'creates file' do
91
- path_with_file_name.writer { |io| io << "Hello World" }
92
- assert ::File.exist?(path_with_file_name.to_s)
93
- end
94
- end
95
- end
96
- end
97
- end
@@ -1,33 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class FileReaderTest < Minitest::Test
4
- describe IOStreams::File::Reader do
5
- let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'text.txt')
7
- end
8
-
9
- let :raw do
10
- File.read(file_name)
11
- end
12
-
13
- describe '.open' do
14
- it 'file' do
15
- result = IOStreams::File::Reader.open(file_name) do |io|
16
- io.read
17
- end
18
- assert_equal raw, result
19
- end
20
-
21
- it 'does not support streams' do
22
- assert_raises ArgumentError do
23
- File.open(file_name) do |file|
24
- IOStreams::File::Reader.open(file) do |io|
25
- io.read
26
- end
27
- end
28
- end
29
- end
30
- end
31
-
32
- end
33
- end
@@ -1,50 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class FileWriterTest < Minitest::Test
4
- describe IOStreams::File::Writer do
5
- let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'text.txt')
7
- end
8
-
9
- let :raw do
10
- File.read(file_name)
11
- end
12
-
13
- describe '.open' do
14
- it 'file' do
15
- temp_file = Tempfile.new('rocket_job')
16
- file_name = temp_file.to_path
17
- IOStreams::File::Writer.open(file_name) do |io|
18
- io.write(raw)
19
- end
20
- result = File.read(file_name)
21
- assert_equal raw, result
22
- end
23
-
24
- it 'cleans up failed upload' do
25
- temp_file = Tempfile.new('rocket_job')
26
- file_name = temp_file.to_path
27
- begin
28
- IOStreams::File::Writer.open(file_name) do |io|
29
- io.write("hello world")
30
- assert File.exist?(file_name)
31
- raise(ArgumentError, "Oh no")
32
- end
33
- rescue ArgumentError
34
- end
35
-
36
- refute File.exist?(file_name)
37
- end
38
-
39
- it 'does not support streams' do
40
- io_string = StringIO.new
41
- assert_raises ArgumentError do
42
- IOStreams::File::Writer.open(io_string) do |io|
43
- io.write(raw)
44
- end
45
- end
46
- end
47
- end
48
-
49
- end
50
- end
@@ -1,38 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class HTTPReaderTest < Minitest::Test
4
- describe IOStreams::HTTP::Reader do
5
- let :uri do
6
- "http://example.com/index.html?count=10"
7
- end
8
-
9
- let :ssl_uri do
10
- "https://example.com/index.html?count=10"
11
- end
12
-
13
- describe '.open' do
14
- it 'reads http' do
15
- result = IOStreams::HTTP::Reader.open(uri) do |io|
16
- io.read
17
- end
18
- assert_includes result, "<html>"
19
- end
20
-
21
- it 'reads https' do
22
- result = IOStreams::HTTP::Reader.open(ssl_uri) do |io|
23
- io.read
24
- end
25
- assert_includes result, "<html>"
26
- end
27
-
28
- it 'does not support streams' do
29
- assert_raises ArgumentError do
30
- io = StringIO.new
31
- IOStreams::HTTP::Reader.open(io) do |http_io|
32
- http_io.read
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,41 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class S3ReaderTest < Minitest::Test
4
- describe IOStreams::File::Reader do
5
- let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'text.txt')
7
- end
8
-
9
- let :raw do
10
- File.read(file_name)
11
- end
12
-
13
- let :uri do
14
- "s3://#{ENV['S3_BUCKET_NAME']}/s3_test/test.txt"
15
- end
16
-
17
- let :upload_s3_file do
18
- IOStreams::S3::Writer.open(uri) { |io| io << raw }
19
- end
20
-
21
- describe '.open' do
22
- it 'reads' do
23
- unless ENV['S3_BUCKET_NAME']
24
- skip "Supply 'S3_BUCKET_NAME' environment variable with S3 bucket name to test with"
25
- end
26
-
27
- upload_s3_file
28
- result = IOStreams::S3::Reader.open(uri) { |io| io.read }
29
- assert_equal raw, result
30
- end
31
-
32
- it 'does not support streams' do
33
- io_string = StringIO.new('data')
34
- assert_raises ArgumentError do
35
- IOStreams::S3::Reader.open(io_string) { |io| io.read }
36
- end
37
- end
38
- end
39
-
40
- end
41
- end
@@ -1,41 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class FileWriterTest < Minitest::Test
4
- describe IOStreams::File::Writer do
5
- let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'text.txt')
7
- end
8
-
9
- let :raw do
10
- File.read(file_name)
11
- end
12
-
13
- let :uri do
14
- "s3://#{ENV['S3_BUCKET_NAME']}/s3_test/test.txt"
15
- end
16
-
17
- let :upload_s3_file do
18
- IOStreams::S3::Writer.open(uri) { |io| io << raw }
19
- end
20
-
21
- describe '.open' do
22
- it 'writes' do
23
- unless ENV['S3_BUCKET_NAME']
24
- skip "Supply 'S3_BUCKET_NAME' environment variable with S3 bucket name to test with"
25
- end
26
-
27
- IOStreams::S3::Writer.open(uri) { |io| io.write(raw) }
28
- result = IOStreams::S3::Reader.open(uri) { |io| io.read }
29
- assert_equal raw, result
30
- end
31
-
32
- it 'does not support streams' do
33
- io_string = StringIO.new
34
- assert_raises ArgumentError do
35
- IOStreams::S3::Writer.open(io_string) { |io| io.write(raw) }
36
- end
37
- end
38
- end
39
-
40
- end
41
- end