pinch 0.0.1 → 0.0.2
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.
- data/lib/pinch.rb +6 -2
- data/spec/pinch_spec.rb +19 -10
- metadata +3 -3
data/lib/pinch.rb
CHANGED
@@ -3,7 +3,7 @@ require 'net/http'
|
|
3
3
|
require 'zlib'
|
4
4
|
|
5
5
|
class Pinch
|
6
|
-
VERSION = "0.0.
|
6
|
+
VERSION = "0.0.2"
|
7
7
|
|
8
8
|
attr_reader :uri
|
9
9
|
attr_reader :file_name
|
@@ -76,8 +76,12 @@ class Pinch
|
|
76
76
|
file_data = res.body[30+local_file_header[9]+local_file_header[10]..-1]
|
77
77
|
|
78
78
|
if local_file_header[3] == 0
|
79
|
-
|
79
|
+
# Uncompressed file
|
80
|
+
offset = 30+local_file_header[9]+local_file_header[10]
|
81
|
+
res.body[offset..(offset+local_file_header[8]-1)]
|
80
82
|
else
|
83
|
+
# Compressed file
|
84
|
+
file_data = res.body[30+local_file_header[9]+local_file_header[10]..-1]
|
81
85
|
Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(file_data)
|
82
86
|
end
|
83
87
|
end
|
data/spec/pinch_spec.rb
CHANGED
@@ -5,20 +5,29 @@ require 'minitest/spec'
|
|
5
5
|
require File.dirname(__FILE__) + '/../lib/pinch'
|
6
6
|
|
7
7
|
describe Pinch do
|
8
|
-
describe "when calling get" do
|
8
|
+
describe "when calling get on a compressed zip file" do
|
9
|
+
before do
|
10
|
+
@url = 'http://ftp.sunet.se/pub/lang/smalltalk/Squeak/current_stable/Squeak3.8-6665-full.zip'
|
11
|
+
@file = 'ReadMe.txt'
|
12
|
+
end
|
13
|
+
|
9
14
|
it "should return the contents of the file" do
|
10
|
-
|
11
|
-
file = 'ReadMe.txt'
|
12
|
-
data = Pinch.get url, file
|
15
|
+
data = Pinch.get @url, @file
|
13
16
|
data.must_match /Morphic graphics architecture/
|
17
|
+
data.size.must_equal 26424
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "when calling get on a zip file that is not compressed" do
|
22
|
+
before do
|
23
|
+
@url = 'http://memention.com/ericjohnson-canabalt-ios-ef43b7d.zip'
|
24
|
+
@file = 'ericjohnson-canabalt-ios-ef43b7d/README.TXT'
|
14
25
|
end
|
15
26
|
|
16
|
-
it "should
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
data = Pinch.get url, file
|
21
|
-
}.must_raise NotImplementedError
|
27
|
+
it "should return the contents of the file" do
|
28
|
+
data = Pinch.get @url, @file
|
29
|
+
data.must_match /Daring Escape/
|
30
|
+
data.size.must_equal 2288
|
22
31
|
end
|
23
32
|
end
|
24
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pinch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,7 +15,7 @@ default_executable:
|
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: minitest
|
18
|
-
requirement: &
|
18
|
+
requirement: &2153205580 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
version: '0'
|
24
24
|
type: :development
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *2153205580
|
27
27
|
description: Pinch makes it possible to download a specific file from within a ZIP
|
28
28
|
file over HTTP 1.1.
|
29
29
|
email: peter@c7.se
|