rackspace-cloudfiles 1.3.0.3 → 1.3.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{cloudfiles}
5
- s.version = "1.3.0.3"
5
+ s.version = "1.3.0.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["H. Wade Minter, Rackspace Hosting"]
9
- s.date = %q{2009-05-16}
9
+ s.date = %q{2009-07-28}
10
10
  s.description = %q{A Ruby version of the Mosso Cloud Files API.}
11
11
  s.email = %q{wade.minter@rackspace.com}
12
12
  s.extra_rdoc_files = ["lib/cloudfiles/authentication.rb", "lib/cloudfiles/connection.rb", "lib/cloudfiles/container.rb", "lib/cloudfiles/storage_object.rb", "lib/cloudfiles.rb", "README.rdoc", "TODO"]
@@ -26,13 +26,10 @@ Gem::Specification.new do |s|
26
26
 
27
27
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
28
  s.add_runtime_dependency(%q<mime-types>, [">= 1.0"])
29
- s.add_development_dependency(%q<echoe>, [">= 0"])
30
29
  else
31
30
  s.add_dependency(%q<mime-types>, [">= 1.0"])
32
- s.add_dependency(%q<echoe>, [">= 0"])
33
31
  end
34
32
  else
35
33
  s.add_dependency(%q<mime-types>, [">= 1.0"])
36
- s.add_dependency(%q<echoe>, [">= 0"])
37
34
  end
38
35
  end
@@ -18,18 +18,20 @@
18
18
  # To create a new CloudFiles connection, use the CloudFiles::Connection.new('user_name', 'api_key') method.
19
19
  module CloudFiles
20
20
 
21
- VERSION = '1.3.0.3'
21
+ VERSION = '1.3.0.5'
22
22
  require 'net/http'
23
23
  require 'net/https'
24
24
  require 'rexml/document'
25
25
  require 'uri'
26
26
  require 'digest/md5'
27
- require 'jcode'
28
27
  require 'time'
29
28
  require 'rubygems'
30
29
  require 'mime/types'
31
30
 
32
- $KCODE = 'u'
31
+ unless "".respond_to? :each_char
32
+ require "jcode"
33
+ $KCODE = 'u'
34
+ end
33
35
 
34
36
  $:.unshift(File.dirname(__FILE__))
35
37
  require 'cloudfiles/authentication'
@@ -37,6 +39,9 @@ module CloudFiles
37
39
  require 'cloudfiles/container'
38
40
  require 'cloudfiles/storage_object'
39
41
 
42
+ def self.lines(str)
43
+ (str.respond_to?(:lines) ? str.lines : str).to_a.map { |x| x.chomp }
44
+ end
40
45
  end
41
46
 
42
47
 
@@ -66,4 +71,4 @@ end
66
71
  class ObjectExistsException < StandardError # :nodoc:
67
72
  end
68
73
  class ExpiredAuthTokenException < StandardError # :nodoc:
69
- end
74
+ end
@@ -18,9 +18,6 @@ module CloudFiles
18
18
  # Path for managing containers on the CDN management server
19
19
  attr_accessor :cdnmgmtpath
20
20
 
21
- # Array of requests that have been made so far
22
- attr_reader :reqlog
23
-
24
21
  # Hostname of the storage server
25
22
  attr_accessor :storagehost
26
23
 
@@ -51,7 +48,6 @@ module CloudFiles
51
48
  @retry_auth = retry_auth
52
49
  @authok = false
53
50
  @http = {}
54
- @reqlog = []
55
51
  CloudFiles::Authentication.new(self)
56
52
  end
57
53
 
@@ -109,7 +105,7 @@ module CloudFiles
109
105
  response = cfreq("GET",@storagehost,"#{@storagepath}?#{paramstr}")
110
106
  return [] if (response.code == "204")
111
107
  raise InvalidResponseException, "Invalid response code #{response.code}" unless (response.code == "200")
112
- response.body.to_a.map { |x| x.chomp }
108
+ CloudFiles.lines(response.body)
113
109
  end
114
110
  alias :list_containers :containers
115
111
 
@@ -205,7 +201,7 @@ module CloudFiles
205
201
  response = cfreq("GET",@cdnmgmthost,"#{@cdnmgmtpath}?#{paramstr}")
206
202
  return [] if (response.code == "204")
207
203
  raise InvalidResponseException, "Invalid response code #{response.code}" unless (response.code == "200")
208
- response.body.to_a.map { |x| x.chomp }
204
+ CloudFiles.lines(response.body)
209
205
  end
210
206
 
211
207
  # This method actually makes the HTTP calls out to the server
@@ -271,4 +267,4 @@ module CloudFiles
271
267
 
272
268
  end
273
269
 
274
- end
270
+ end
@@ -59,15 +59,11 @@ module CloudFiles
59
59
 
60
60
  # Get the CDN-related details
61
61
  response = self.connection.cfreq("HEAD",@cdnmgmthost,@cdnmgmtpath)
62
- if (response.code == "204")
63
- @cdn_enabled = true
64
- @cdn_ttl = response["x-ttl"]
65
- @cdn_url = response["x-cdn-uri"]
66
- else
67
- @cdn_enabled = false
68
- @cdn_ttl = false
69
- @cdn_url = false
70
- end
62
+ raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "204")
63
+ @cdn_enabled = ((response["x-cdn-enabled"] || "").downcase == "true") ? true : false
64
+ @cdn_ttl = @cdn_enable ? response["x-ttl"] : false
65
+ @cdn_url = @cdn_enable ? response["x-cdn-uri"] : false
66
+
71
67
  true
72
68
  end
73
69
  alias :refresh :populate
@@ -113,7 +109,7 @@ module CloudFiles
113
109
  response = self.connection.cfreq("GET",@storagehost,"#{@storagepath}?#{paramstr}")
114
110
  return [] if (response.code == "204")
115
111
  raise InvalidResponseException, "Invalid response code #{response.code}" unless (response.code == "200")
116
- return response.body.to_a.map { |x| x.chomp }
112
+ return CloudFiles.lines(response.body)
117
113
  end
118
114
  alias :list_objects :objects
119
115
 
@@ -218,13 +214,16 @@ module CloudFiles
218
214
  # Makes a container publicly available via the Cloud Files CDN and returns true upon success. Throws NoSuchContainerException
219
215
  # if the container doesn't exist or if the request fails.
220
216
  #
221
- # Takes an optional argument, which is the CDN cache TTL in seconds (default 86400 seconds or 1 day)
217
+ # Takes an optional argument, which is the CDN cache TTL in seconds (default 86400 seconds or 1 day, maximum 259200 or 3 days)
222
218
  #
223
219
  # container.make_public(432000)
224
220
  # => true
225
221
  def make_public(ttl = 86400)
226
- headers = { "X-CDN-Enabled" => "True", "X-TTL" => ttl.to_s }
227
- response = self.connection.cfreq("PUT",@cdnmgmthost,@cdnmgmtpath,headers)
222
+ response = self.connection.cfreq("PUT",@cdnmgmthost,@cdnmgmtpath)
223
+ raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
224
+
225
+ headers = { "X-TTL" => ttl.to_s }
226
+ response = self.connection.cfreq("POST",@cdnmgmthost,@cdnmgmtpath,headers)
228
227
  raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
229
228
  true
230
229
  end
@@ -238,7 +237,7 @@ module CloudFiles
238
237
  # => true
239
238
  def make_private
240
239
  headers = { "X-CDN-Enabled" => "False" }
241
- response = self.connection.cfreq("PUT",@cdnmgmthost,@cdnmgmtpath,headers)
240
+ response = self.connection.cfreq("POST",@cdnmgmthost,@cdnmgmtpath,headers)
242
241
  raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
243
242
  true
244
243
  end
@@ -249,4 +248,4 @@ module CloudFiles
249
248
 
250
249
  end
251
250
 
252
- end
251
+ end
@@ -71,7 +71,6 @@ module CloudFiles
71
71
  headers['Range'] = range
72
72
  end
73
73
  response = self.container.connection.cfreq("GET",@storagehost,@storagepath,headers)
74
- print "DEBUG: Code is #{response.code}\n"
75
74
  raise NoSuchObjectException, "Object #{@name} does not exist" unless (response.code =~ /^20/)
76
75
  response.body.chomp
77
76
  end
@@ -252,4 +251,4 @@ module CloudFiles
252
251
 
253
252
  end
254
253
 
255
- end
254
+ end
@@ -10,7 +10,7 @@ class CloudfilesContainerTest < Test::Unit::TestCase
10
10
  @container = CloudFiles::Container.new(connection, 'test_container')
11
11
  assert_equal @container.name, 'test_container'
12
12
  assert_equal @container.class, CloudFiles::Container
13
- assert_equal @container.public?, true
13
+ assert_equal @container.public?, false
14
14
  end
15
15
 
16
16
  def test_object_creation_no_such_container
@@ -23,15 +23,15 @@ class CloudfilesContainerTest < Test::Unit::TestCase
23
23
  end
24
24
  end
25
25
 
26
- def test_object_creation_no_cdn
26
+ def test_object_creation_with_cdn
27
27
  connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path')
28
- response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5'}
29
- response.stubs(:code).returns('204').then.returns('999')
28
+ response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'x-cdn-enabled' => 'True'}
29
+ response.stubs(:code).returns('204')
30
30
  connection.stubs(:cfreq => response)
31
31
  @container = CloudFiles::Container.new(connection, 'test_container')
32
32
  assert_equal @container.name, 'test_container'
33
- assert_equal @container.cdn_enabled, false
34
- assert_equal @container.public?, false
33
+ assert_equal @container.cdn_enabled, true
34
+ assert_equal @container.public?, true
35
35
  end
36
36
 
37
37
  def test_to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rackspace-cloudfiles
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0.3
4
+ version: 1.3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - H. Wade Minter, Rackspace Hosting
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-16 00:00:00 -07:00
12
+ date: 2009-07-28 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,16 +22,6 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "1.0"
24
24
  version:
25
- - !ruby/object:Gem::Dependency
26
- name: echoe
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
25
  description: A Ruby version of the Mosso Cloud Files API.
36
26
  email: wade.minter@rackspace.com
37
27
  executables: []
@@ -65,6 +55,7 @@ files:
65
55
  - TODO
66
56
  has_rdoc: true
67
57
  homepage: http://www.mosso.com/cloudfiles.jsp
58
+ licenses:
68
59
  post_install_message:
69
60
  rdoc_options:
70
61
  - --line-numbers
@@ -90,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
81
  requirements: []
91
82
 
92
83
  rubyforge_project: cloudfiles
93
- rubygems_version: 1.2.0
84
+ rubygems_version: 1.3.5
94
85
  signing_key:
95
86
  specification_version: 2
96
87
  summary: A Ruby API into Mosso Cloud Files