zipstream 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +4 -0
- data.tar.gz.sig +0 -0
- data/README.md +4 -4
- data/lib/zipstream.rb +18 -14
- data/lib/zipstream/version.rb +3 -0
- metadata +65 -15
- metadata.gz.sig +0 -0
- data/VERSION +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fc4dea8b1609a7df0f0e68eadccf1d61c7c073ad
|
4
|
+
data.tar.gz: c4a408858eac58b00d9c71c7d4bc8c88678ca858
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a336f24de82b8adde80391a287a2f453d38aeb73f03be3ae9a475076fcb391ae822c53d8ef80b196ac3a7afc07417a832b163592a099b4dff0b9e008f279cdc6
|
7
|
+
data.tar.gz: 85e26d6863a6939ad362d5eef01382e8b4a962fb8e68487dcff59bc9efbaa6154204591931a308b86afcb1da64f73cbecfb79087ab3f230c90044a07a5b02d86
|
checksums.yaml.gz.sig
ADDED
data.tar.gz.sig
ADDED
Binary file
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# ZipStream
|
1
|
+
# ZipStream [![Build Status](https://secure.travis-ci.org/sj26/zipstream.png?branch=master)](http://travis-ci.org/sj26/zipstream)
|
2
2
|
|
3
3
|
Create zip files to a stream.
|
4
4
|
|
5
|
-
Integration with Ruby on Rails means you can create a
|
5
|
+
Integration with Ruby on Rails means you can create a view, `index.zipstream`, which is a ruby file with a zip object:
|
6
6
|
|
7
7
|
```ruby
|
8
8
|
@entries.each do |entry|
|
@@ -26,7 +26,7 @@ Giving you a zip file when rendered. More to come!
|
|
26
26
|
|
27
27
|
Keep in mind that this will use one of your workers/threads/processes until the file is completely downloaded. We are using an iterated rack body which streams so if rack/web servers handle this nicely then you might be in luck.
|
28
28
|
|
29
|
-
Tested with Rails 3.1 on REE 1.8.7 and MRI 1.9.3.
|
29
|
+
Tested with Rails 3.1 on REE 1.8.7 and MRI 1.9.3.
|
30
30
|
|
31
31
|
Large files are not yet handled efficiently. Coming soon!
|
32
32
|
|
@@ -38,4 +38,4 @@ Inspired by Rails Builder templates and http://pablotron.org/software/zipstream-
|
|
38
38
|
|
39
39
|
Copyright (c) 2011 Samuel Cochran (sj26@sj26.com). Released under the MIT License, see [LICENSE][license] for details.
|
40
40
|
|
41
|
-
[license]: https://github.com/sj26/zipstream/blob/master/LICENSE
|
41
|
+
[license]: https://github.com/sj26/zipstream/blob/master/LICENSE
|
data/lib/zipstream.rb
CHANGED
@@ -3,8 +3,6 @@ require 'zlib'
|
|
3
3
|
|
4
4
|
# Simple, streamable zip file creation
|
5
5
|
class Zipstream
|
6
|
-
VERSION = File.read File.expand_path '../../VERSION', __FILE__
|
7
|
-
|
8
6
|
def initialize stream, options={}
|
9
7
|
@stream = stream
|
10
8
|
@length = 0
|
@@ -15,12 +13,17 @@ class Zipstream
|
|
15
13
|
end
|
16
14
|
|
17
15
|
def write name, data, options={}
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
if options[:method] == :store
|
17
|
+
zdata = data
|
18
|
+
method = 0x00
|
19
|
+
else
|
20
|
+
# Fails without specifying the window bits (odd!)
|
21
|
+
deflater = Zlib::Deflate.new Zlib::BEST_COMPRESSION, -Zlib::MAX_WBITS
|
22
|
+
zdata = deflater.deflate data, Zlib::FINISH
|
23
|
+
deflater.close
|
24
|
+
method = 0x08
|
25
|
+
end
|
22
26
|
|
23
|
-
method = 0x08
|
24
27
|
timestamp = dostime options[:datetime] || DateTime.now
|
25
28
|
crc = Zlib.crc32 data
|
26
29
|
zdata_length = zdata.length
|
@@ -33,10 +36,10 @@ class Zipstream
|
|
33
36
|
@directory << [
|
34
37
|
# central file header signature
|
35
38
|
0x02014b50,
|
36
|
-
# version made by
|
37
|
-
(
|
38
|
-
# version needed to extract
|
39
|
-
(
|
39
|
+
# version made by - "DOS" & http://www.pkware.com/documents/casestudies/APPNOTE.TXT Version: 6.3.2
|
40
|
+
(0 << 8) & 63,
|
41
|
+
# version needed to extract - "DOS" & "2.0 - File is compressed using Deflate compression"
|
42
|
+
(0 << 8) & 20,
|
40
43
|
# general purpose bit flag
|
41
44
|
0x00,
|
42
45
|
# compresion method (deflate or store)
|
@@ -70,8 +73,8 @@ class Zipstream
|
|
70
73
|
@stream << [
|
71
74
|
# local file header signature
|
72
75
|
0x04034b50,
|
73
|
-
# version needed to extract
|
74
|
-
(
|
76
|
+
# version needed to extract - "DOS" & "2.0 - File is compressed using Deflate compression"
|
77
|
+
(0 << 8) & 20,
|
75
78
|
# general purpose bit flag
|
76
79
|
0x00,
|
77
80
|
# compresion method (deflate or store)
|
@@ -123,10 +126,11 @@ class Zipstream
|
|
123
126
|
protected
|
124
127
|
|
125
128
|
def dostime datetime
|
126
|
-
datetime.year << 25 | datetime.month << 21 | datetime.day << 16 | datetime.hour << 11 | datetime.min << 5 | datetime.sec >> 1
|
129
|
+
(datetime.year - 1980) << 25 | datetime.month << 21 | datetime.day << 16 | datetime.hour << 11 | datetime.min << 5 | datetime.sec >> 1
|
127
130
|
end
|
128
131
|
end
|
129
132
|
|
133
|
+
require 'zipstream/version'
|
130
134
|
require 'zipstream/fiber'
|
131
135
|
require 'zipstream/fiber_yielding_stream'
|
132
136
|
require 'zipstream/body'
|
metadata
CHANGED
@@ -1,27 +1,78 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipstream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Samuel Cochran
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDXDCCAkSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA6MQ0wCwYDVQQDDARzajI2
|
14
|
+
MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0x
|
15
|
+
MzAzMTEyMzIyMThaFw0xNDAzMTEyMzIyMThaMDoxDTALBgNVBAMMBHNqMjYxFDAS
|
16
|
+
BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
|
17
|
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
|
18
|
+
xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
|
19
|
+
1xzcNRvFsn0aQoQ00k+sj+G83j3T5OOV5OZIlu8xAChMkQmiPd1NXc6uFv+Iacz7
|
20
|
+
kj+CMsI9YUFdNoU09QY0b+u+Rb6wDYdpyvN60YC30h0h1MeYbvYZJx/iZK4XY5zu
|
21
|
+
4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
|
22
|
+
KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABo20w
|
23
|
+
azAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
|
24
|
+
m3ZsDWrNC80wGAYDVR0RBBEwD4ENc2oyNkBzajI2LmNvbTAYBgNVHRIEETAPgQ1z
|
25
|
+
ajI2QHNqMjYuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQArNvPoDTdElU79folErf7u
|
26
|
+
qFL/ZzuC53hyNG0bQGggKOZJ4PuzqI9AFGX6Viw+0iltZzuqo5WTuuOQknO1aJZl
|
27
|
+
hp3Jijjd/vpxFuwalQT6JcN9V0iz81KiI+9KPRDxedX4zK9PD4Be+ZJgZBOalk6U
|
28
|
+
gQM0w4nYX8KATozCgvkFvKOQrNBEa+BqPundb8r047VRuK9iPGaJJeBpBgXgCNQc
|
29
|
+
iAw+LFjcoeiI5naoCBHZ4uHGY0lXrxxcep3F/GFvKKYGrrI9c2j5awd0DaEzrCel
|
30
|
+
gtfuNEm5Q0pV0/XpT5PsXz/rGnsR4CS7BaIcx+bAwl5pRopCzCHfl5Igay1vefPZ
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2013-05-22 00:00:00.000000000 Z
|
13
33
|
dependencies:
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rake
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
type: :development
|
42
|
+
prerelease: false
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
14
48
|
- !ruby/object:Gem::Dependency
|
15
49
|
name: rspec
|
16
|
-
requirement:
|
17
|
-
none: false
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
18
51
|
requirements:
|
19
52
|
- - ~>
|
20
53
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.
|
54
|
+
version: '2.8'
|
22
55
|
type: :development
|
23
56
|
prerelease: false
|
24
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.8'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rubyzip
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
type: :development
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
25
76
|
description:
|
26
77
|
email: sj26@sj26.com
|
27
78
|
executables: []
|
@@ -32,34 +83,33 @@ extra_rdoc_files:
|
|
32
83
|
files:
|
33
84
|
- README.md
|
34
85
|
- LICENSE
|
35
|
-
- VERSION
|
36
86
|
- lib/zipstream/body.rb
|
37
87
|
- lib/zipstream/fiber.rb
|
38
88
|
- lib/zipstream/fiber_yielding_stream.rb
|
39
89
|
- lib/zipstream/railtie.rb
|
90
|
+
- lib/zipstream/version.rb
|
40
91
|
- lib/zipstream.rb
|
41
92
|
homepage: http://github.com/sj26/zipstream
|
42
93
|
licenses: []
|
94
|
+
metadata: {}
|
43
95
|
post_install_message:
|
44
96
|
rdoc_options: []
|
45
97
|
require_paths:
|
46
98
|
- lib
|
47
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
-
none: false
|
49
100
|
requirements:
|
50
|
-
- -
|
101
|
+
- - '>='
|
51
102
|
- !ruby/object:Gem::Version
|
52
103
|
version: '0'
|
53
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
105
|
requirements:
|
56
|
-
- -
|
106
|
+
- - '>='
|
57
107
|
- !ruby/object:Gem::Version
|
58
108
|
version: '0'
|
59
109
|
requirements: []
|
60
110
|
rubyforge_project:
|
61
|
-
rubygems_version:
|
111
|
+
rubygems_version: 2.0.3
|
62
112
|
signing_key:
|
63
|
-
specification_version:
|
113
|
+
specification_version: 4
|
64
114
|
summary: Create zip files directly to a stream.
|
65
115
|
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.2
|