s3 0.3.13 → 0.3.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bfbd6c2968596ae775b047409255708d1fb304a9
4
- data.tar.gz: f1296429ad3cd6869eaaa16adf15b08408c0a8d5
3
+ metadata.gz: 738f6e2f37dce25baa6d1248a067ffe24a662013
4
+ data.tar.gz: d365944c476e8d06ac8adeddc07062f930a04399
5
5
  SHA512:
6
- metadata.gz: ca03bd46f901203969e043c7bcc9197902c05f8f292b52a3ba1e993feb6197d36512f38aed0308b0840eca9d80b1a2044d9131c81fb638d8acd0d4a42e9fc143
7
- data.tar.gz: c95eacf047227ae2e8926ffeae126c02a56eaaa92ede06b667ea10e71dd7c4868fb33dc0f31e0fb129176726683935a60361855851352c4fdef513d9ed62b23d
6
+ metadata.gz: e321145e101f53bcaa5b015b18b00a52c62314846975d1c58ab80c55509914de5daee41e67982c4b4562e347bb2c04bb6cc298e7858a21f3a71a380a63f47c57
7
+ data.tar.gz: 3a6431995f5c25882de1efa5a7811c336a8061634555c9f6f3f06a349035206ef38a6554c106a51bda62d92c83a462fc2508c93a530bbcf12bda4f8ce5a305bd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- s3 (0.3.13)
4
+ s3 (0.3.14)
5
5
  proxies (~> 0.2.0)
6
6
 
7
7
  GEM
data/lib/s3/connection.rb CHANGED
@@ -20,7 +20,6 @@ module S3
20
20
  # (60 by default)
21
21
  # * <tt>:proxy</tt> - Hash for Net::HTTP Proxy settings
22
22
  # { :host => "proxy.mydomain.com", :port => "80, :user => "user_a", :password => "secret" }
23
- # * <tt>:proxy</tt> - Hash for Net::HTTP Proxy settings
24
23
  # * <tt>:chunk_size</tt> - Size of a chunk when streaming
25
24
  # (1048576 (1 MiB) by default)
26
25
  def initialize(options = {})
data/lib/s3/object.rb CHANGED
@@ -89,6 +89,12 @@ module S3
89
89
  @content
90
90
  end
91
91
 
92
+ # Streams the content of the object without caching it, providing
93
+ # successive chunks to the block
94
+ def stream(options = {}, &block)
95
+ get_object(options, &block)
96
+ end
97
+
92
98
  # Saves the object, returns true if successfull.
93
99
  def save
94
100
  put_object
@@ -180,9 +186,9 @@ module S3
180
186
  object
181
187
  end
182
188
 
183
- def get_object(options = {})
189
+ def get_object(options = {}, &block)
184
190
  response = object_request(:get, options)
185
- parse_headers(response)
191
+ parse_headers(response, &block)
186
192
  end
187
193
 
188
194
  def object_headers(options = {})
@@ -245,7 +251,7 @@ module S3
245
251
  headers
246
252
  end
247
253
 
248
- def parse_headers(response)
254
+ def parse_headers(response, &block)
249
255
  @metadata = response.to_hash.select { |k, v| k.to_s.start_with?("x-amz-meta") }
250
256
  self.etag = response["etag"] if response.key?("etag")
251
257
  self.content_type = response["content-type"] if response.key?("content-type")
@@ -257,7 +263,11 @@ module S3
257
263
  self.size = response["content-range"].sub(/[^\/]+\//, "").to_i
258
264
  else
259
265
  self.size = response["content-length"]
260
- self.content = response.body
266
+ if block.nil?
267
+ self.content = response.body
268
+ else
269
+ response.read_body(nil, &block)
270
+ end
261
271
  end
262
272
  end
263
273
  end
data/lib/s3/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module S3
2
- VERSION = "0.3.13"
2
+ VERSION = "0.3.14"
3
3
  end
data/test/object_test.rb CHANGED
@@ -15,6 +15,7 @@ class ObjectTest < Test::Unit::TestCase
15
15
  @object_mac.content = "test2"
16
16
 
17
17
  @response_binary = Net::HTTPOK.new("1.1", "200", "OK")
18
+ @response_binary.stubs(:read_body).multiple_yields(*%w{t e s t})
18
19
  @response_binary.stubs(:body).returns("test".respond_to?(:force_encoding) ? "test".force_encoding(Encoding::BINARY) : "test")
19
20
  @response_binary["etag"] = ""
20
21
  @response_binary["content-type"] = "image/png"
@@ -133,6 +134,21 @@ class ObjectTest < Test::Unit::TestCase
133
134
  assert @object_lena.content(true)
134
135
  end
135
136
 
137
+ test "streaming" do
138
+ @object_lena.expects(:object_request).with(:get, {}).returns(@response_binary)
139
+
140
+ expected = /test/n
141
+ io = StringIO.new
142
+ @object_lena.stream do |chunk|
143
+ io.write(chunk)
144
+ end
145
+ io.seek(0)
146
+ actual = io.read
147
+ assert_match expected, actual
148
+ assert_equal "image/png", @object_lena.content_type
149
+ assert_equal @object.instance_variable_defined?(:@content), false
150
+ end
151
+
136
152
  test "retrieve" do
137
153
  @object_lena.expects(:object_request).with(:head, {}).returns(@response_binary)
138
154
  assert @object_lena.retrieve
data/test/test_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require "test/unit"
2
+ require "stringio"
2
3
  require "mocha"
3
4
  require "s3"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kuba Kuźma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-08 00:00:00.000000000 Z
11
+ date: 2013-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: proxies