fog 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Wesley Beary"]
12
- s.date = %q{2009-09-09}
12
+ s.date = %q{2009-09-10}
13
13
  s.description = %q{brings clouds to you}
14
14
  s.email = %q{me@geemus.com}
15
15
  s.extra_rdoc_files = [
@@ -54,7 +54,7 @@ else
54
54
  module AWS
55
55
  class S3
56
56
 
57
- def get_object(bucket_name, object_name, options = {})
57
+ def get_object(bucket_name, object_name, options = {}, &block)
58
58
  unless bucket_name
59
59
  raise ArgumentError.new('bucket_name is required')
60
60
  end
@@ -79,7 +79,17 @@ else
79
79
  'ETag' => object['ETag'],
80
80
  'Last-Modified' => object['LastModified']
81
81
  }
82
- response.body = object[:body]
82
+ unless block_given?
83
+ response.body = object[:body]
84
+ else
85
+ data = StringIO.new(object[:body])
86
+ remaining = data.length
87
+ while remaining > 0
88
+ chunk = data.read([remaining, Fog::Connection::CHUNK_SIZE].min)
89
+ block.call(chunk)
90
+ remaining -= Fog::Connection::CHUNK_SIZE
91
+ end
92
+ end
83
93
  end
84
94
  else
85
95
  response.status = 404
@@ -96,7 +96,7 @@ module Fog
96
96
  metadata[:headers]['Content-Type'] = mime_types.first.content_type
97
97
  end
98
98
  metadata[:body] = data.read
99
- metadata[:headers]['Content-Length'] = File.size(data.path)
99
+ metadata[:headers]['Content-Length'] = File.size(data.path).to_s
100
100
  end
101
101
  # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
102
102
  metadata
@@ -11,6 +11,10 @@ unless Fog.mocking?
11
11
  module Fog
12
12
  class Connection
13
13
 
14
+ unless const_defined?(:CHUNK_SIZE)
15
+ CHUNK_SIZE = 1048576 # 1 megabyte
16
+ end
17
+
14
18
  def initialize(url)
15
19
  @uri = URI.parse(url)
16
20
  @connection = TCPSocket.open(@uri.host, @uri.port)
@@ -49,7 +53,7 @@ unless Fog.mocking?
49
53
  else
50
54
  body = params[:body]
51
55
  end
52
- while chunk = body.read(1048576) # 1 megabyte
56
+ while chunk = body.read(CHUNK_SIZE)
53
57
  @connection.write(chunk)
54
58
  end
55
59
  end
@@ -84,11 +88,14 @@ unless Fog.mocking?
84
88
 
85
89
  unless params[:method] == 'HEAD'
86
90
  if response.headers['Content-Length']
87
- content = @connection.read(response.headers['Content-Length'].to_i)
88
91
  unless params[:block]
89
- body << content
92
+ body << @connection.read(response.headers['Content-Length'].to_i)
90
93
  else
91
- params[:block].call(content)
94
+ remaining = response.headers['Content-Length'].to_i
95
+ while remaining > 0
96
+ params[:block].call(@connection.read([CHUNK_SIZE, remaining].min))
97
+ remaining -= CHUNK_SIZE;
98
+ end
92
99
  end
93
100
  elsif response.headers['Transfer-Encoding'] == 'chunked'
94
101
  while true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wesley Beary
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-09 00:00:00 -07:00
12
+ date: 2009-09-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency