pinch 0.3.1 → 0.3.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 030d2274d6753a92063e30f52381861e0ac69668
4
+ data.tar.gz: 3f3dcec53eae2f7aa575848f0d69ea2ff1059ec4
5
+ SHA512:
6
+ metadata.gz: c5c1921fde2cb1f4531664a7bfa11b6fb4dadd3f35511bf3e7efa91efdcceb3c3f33b9ce6292dffa98c5fdad361f5cc3bf3192415d1690edd7c1e687adf8316e
7
+ data.tar.gz: 18f2ed70982f7e3f85c4b4157310229bd2bda5798e2abec73eb73c43ba33a113c72e788a0d6817516908e8f17e81029f856621765e54148c1d571414b1f8e8e1
data/README.rdoc CHANGED
@@ -27,26 +27,27 @@ The specs currently blows up on MagLev.
27
27
 
28
28
  require 'pinch'
29
29
 
30
- data = Pinch.get 'http://peterhellberg.github.com/pinch/test.zip', 'data.json'
30
+ data = Pinch.get 'http://peterhellberg.github.io/pinch/test.zip', 'data.json'
31
31
 
32
32
  puts data
33
33
 
34
- == Patch to use Pinch against Amazon S3 storage with pre-signed urls
35
- AWS S3 storage verifies url signature against HTTP verb, therefore requiring different pre-signed urls for HEAD and GET requests. Patch extends Pinch gem to accept hash or 2 urls, allowing to fetch items stored in zip archives on S3.
34
+ === Amazon S3 storage with pre-signed urls
36
35
 
37
- require 'pinch'
36
+ AWS S3 storage verifies url signature against HTTP verb, therefore
37
+ requiring different pre-signed urls for HEAD and GET requests.
38
+ Patch extends Pinch gem to accept hash or 2 urls, allowing to fetch
39
+ items stored in zip archives on S3.
38
40
 
39
- require 'right_aws'
40
-
41
- s3 = RightAws::S3Generator.new('...','...')
42
-
43
- bucket = s3.bucket('my-bucket')
44
-
45
- head_ticket = bucket.key('test.zip').head
46
-
47
- get_ticket = bucket.key('test.zip').get
48
-
49
- data=Pinch.get({:head => head_url, :get => get_url},'data.json')
41
+ require 'pinch'
42
+ require 'right_aws'
43
+
44
+ s3 = RightAws::S3Generator.new('...','...')
45
+
46
+ bucket = s3.bucket('my-bucket')
47
+ head_ticket = bucket.key('test.zip').head
48
+ get_ticket = bucket.key('test.zip').get
49
+
50
+ data=Pinch.get({:head => head_url, :get => get_url},'data.json')
50
51
 
51
52
  == LICENSE
52
53
 
data/lib/pinch.rb CHANGED
@@ -6,7 +6,7 @@ require 'pinch_response'
6
6
  # @author Peter Hellberg
7
7
  # @author Edward Patel
8
8
  class Pinch
9
- VERSION = "0.3.1"
9
+ VERSION = "0.3.2"
10
10
 
11
11
  attr_reader :get_uri, :user, :pass
12
12
 
@@ -1,33 +1,44 @@
1
1
  # This class only implements read_body
2
2
  # The rest can be implemented when required
3
+ #
3
4
  class PinchResponse
5
+ ##
6
+ # Prepare pinch response
7
+ #
4
8
  def initialize(http_response)
5
9
  @http_response = http_response
6
- @zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
7
- @first_chunk = true
10
+ @zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
11
+ @first_chunk = true
8
12
  end
9
13
 
14
+ ##
15
+ # Read the body of the HTTP response
16
+ #
10
17
  def read_body
11
18
  if block_given?
12
19
  @http_response.read_body do |chunk|
13
20
  if @first_chunk
14
21
  local_file_header = chunk.unpack('VvvvvvVVVvv')
15
- @offset_start = 30+local_file_header[9]+local_file_header[10]
16
- @compressed = (local_file_header[3] != 0)
17
- @length = @compressed ? local_file_header[7] : local_file_header[8]
18
22
 
23
+ @offset_start = 30+local_file_header[9]+local_file_header[10]
24
+ @compressed = (local_file_header[3] != 0)
25
+ @length = @compressed ? local_file_header[7] : local_file_header[8]
19
26
  @cursor_start = @offset_start
20
- @to_be_read = @length
21
- @first_chunk = false
27
+ @to_be_read = @length
28
+
29
+ @first_chunk = false
22
30
  end
23
31
 
24
32
  cursor_start = [@cursor_start, 0].max
25
33
  cursor_end = [@to_be_read, chunk.length].min
34
+
26
35
  data = chunk[cursor_start, cursor_end]
36
+
27
37
  @cursor_start -= chunk.length
28
38
 
29
39
  if data
30
40
  @to_be_read -= data.length
41
+
31
42
  if @compressed
32
43
  yield @zstream.inflate(data)
33
44
  else
data/spec/pinch_spec.rb CHANGED
@@ -24,7 +24,7 @@ require 'vcr'
24
24
  VCR.configure do |c|
25
25
  c.allow_http_connections_when_no_cassette = true
26
26
  c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
27
- c.hook_into :fakeweb
27
+ c.hook_into :webmock
28
28
  end
29
29
 
30
30
  require File.dirname(__FILE__) + '/../lib/pinch'
@@ -69,7 +69,7 @@ describe Pinch do
69
69
 
70
70
  describe "when calling get on the example ZIP file" do
71
71
  before do
72
- @url = 'http://peterhellberg.github.com/pinch/test.zip'
72
+ @url = 'http://peterhellberg.github.io/pinch/test.zip'
73
73
  @file = 'data.json'
74
74
  @data = "{\"gem\":\"pinch\",\"authors\":[\"Peter Hellberg\",\"Edward Patel\"],\"github_url\":\"https://github.com/peterhellberg/pinch\"}\n"
75
75
  end
@@ -97,7 +97,7 @@ describe Pinch do
97
97
 
98
98
  it "should retrieve the contents of the file data.json when passed a HTTPS url" do
99
99
  VCR.use_cassette('ssl_test') do
100
- @url = 'https://dl.dropbox.com/u/2230186/pinch_test.zip'
100
+ @url = 'https://dl.dropboxusercontent.com/u/2230186/pinch_test.zip'
101
101
 
102
102
  data = Pinch.get @url, @file
103
103
  data.must_equal @data
@@ -111,10 +111,10 @@ describe Pinch do
111
111
  end
112
112
  end
113
113
  end
114
-
114
+
115
115
  describe "when calling get on the example ZIP file behind HTTP Basic Authentication" do
116
116
  before do
117
- @url = 'http://code.mrgossett.com/pinch_test.zip'
117
+ @url = 'http://assets.c7.se/data/pinch/auth/pinch_test.zip'
118
118
  @file = 'data.json'
119
119
  @data = "{\"gem\":\"pinch\",\"authors\":[\"Peter Hellberg\",\"Edward Patel\"],\"github_url\":\"https://github.com/peterhellberg/pinch\"}\n"
120
120
  end
@@ -149,7 +149,7 @@ describe Pinch do
149
149
 
150
150
  describe "Pinch.content_length" do
151
151
  before do
152
- @url = 'http://peterhellberg.github.com/pinch/test.zip'
152
+ @url = 'http://peterhellberg.github.io/pinch/test.zip'
153
153
  end
154
154
 
155
155
  it "should return the size of the ZIP file" do
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pinch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ version: 0.3.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Peter Hellberg
@@ -10,56 +9,50 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-10-26 00:00:00.000000000 Z
12
+ date: 2014-01-04 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: minitest
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: '4.0'
20
+ version: '5.2'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
- version: '4.0'
27
+ version: '5.2'
31
28
  - !ruby/object:Gem::Dependency
32
- name: fakeweb
29
+ name: webmock
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ~>
32
+ - - "~>"
37
33
  - !ruby/object:Gem::Version
38
- version: '1.3'
34
+ version: '1.16'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ~>
39
+ - - "~>"
45
40
  - !ruby/object:Gem::Version
46
- version: '1.3'
41
+ version: '1.16'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: vcr
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ~>
46
+ - - "~>"
53
47
  - !ruby/object:Gem::Version
54
- version: '2.2'
48
+ version: '2.8'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ~>
53
+ - - "~>"
61
54
  - !ruby/object:Gem::Version
62
- version: '2.2'
55
+ version: '2.8'
63
56
  description: Pinch makes it possible to download a specific file from within a ZIP
64
57
  file over HTTP 1.1.
65
58
  email: peter@c7.se
@@ -69,44 +62,40 @@ extra_rdoc_files:
69
62
  - README.rdoc
70
63
  - MIT-LICENSE
71
64
  files:
72
- - lib/pinch.rb
73
- - lib/pinch_response.rb
65
+ - ".gemtest"
74
66
  - MIT-LICENSE
75
67
  - README.rdoc
76
68
  - Rakefile
77
- - .gemtest
69
+ - lib/pinch.rb
70
+ - lib/pinch_response.rb
78
71
  - spec/pinch_spec.rb
79
72
  homepage: http://peterhellberg.github.com/pinch/
80
73
  licenses:
81
74
  - MIT-LICENSE
75
+ metadata: {}
82
76
  post_install_message:
83
77
  rdoc_options:
84
- - --main
78
+ - "--main"
85
79
  - README.rdoc
86
- - --charset=UTF-8
80
+ - "--charset=UTF-8"
87
81
  require_paths:
88
82
  - lib
89
83
  - lib
90
84
  required_ruby_version: !ruby/object:Gem::Requirement
91
- none: false
92
85
  requirements:
93
- - - ! '>='
86
+ - - ">="
94
87
  - !ruby/object:Gem::Version
95
88
  version: 1.8.7
96
89
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
90
  requirements:
99
- - - ! '>='
91
+ - - ">="
100
92
  - !ruby/object:Gem::Version
101
93
  version: '0'
102
- segments:
103
- - 0
104
- hash: 752809128111839856
105
94
  requirements: []
106
95
  rubyforge_project:
107
- rubygems_version: 1.8.24
96
+ rubygems_version: 2.2.0.rc.1
108
97
  signing_key:
109
- specification_version: 3
98
+ specification_version: 4
110
99
  summary: Retrieve a file from inside a zip file, over the network!
111
100
  test_files:
112
101
  - spec/pinch_spec.rb