rackspace-cloudfiles 1.3.0.3 → 1.3.0.5

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.
@@ -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