cloudfiles 1.4.2 → 1.4.3
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.
- data/VERSION +1 -1
- data/cloudfiles.gemspec +2 -2
- data/lib/cloudfiles/container.rb +35 -5
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.3
|
data/cloudfiles.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cloudfiles}
|
8
|
-
s.version = "1.4.
|
8
|
+
s.version = "1.4.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["H. Wade Minter", "Rackspace Hosting"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-13}
|
13
13
|
s.description = %q{A Ruby version of the Rackspace Cloud Files API.}
|
14
14
|
s.email = %q{wade.minter@rackspace.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/cloudfiles/container.rb
CHANGED
@@ -23,6 +23,12 @@ module CloudFiles
|
|
23
23
|
|
24
24
|
# The parent CloudFiles::Connection object for this container
|
25
25
|
attr_reader :connection
|
26
|
+
|
27
|
+
# The container ACL on the User Agent
|
28
|
+
attr_reader :user_agent_acl
|
29
|
+
|
30
|
+
# The container ACL on the site Referrer
|
31
|
+
attr_reader :referrer_acl
|
26
32
|
|
27
33
|
# Retrieves an existing CloudFiles::Container object tied to the current CloudFiles::Connection. If the requested
|
28
34
|
# container does not exist, it will raise a NoSuchContainerException.
|
@@ -64,8 +70,10 @@ module CloudFiles
|
|
64
70
|
# Get the CDN-related details
|
65
71
|
response = self.connection.cfreq("HEAD",@cdnmgmthost,@cdnmgmtpath,@cdnmgmtport,@cdnmgmtscheme)
|
66
72
|
@cdn_enabled = ((response["x-cdn-enabled"] || "").downcase == "true") ? true : false
|
67
|
-
@cdn_ttl = @cdn_enabled ? response["x-ttl"] : false
|
73
|
+
@cdn_ttl = @cdn_enabled ? response["x-ttl"].to_i : false
|
68
74
|
@cdn_url = @cdn_enabled ? response["x-cdn-uri"] : false
|
75
|
+
@user_agent_acl = response["x-user-agent-acl"]
|
76
|
+
@referrer_acl = response["x-referrer-acl"]
|
69
77
|
if @cdn_enabled
|
70
78
|
@cdn_log = response["x-log-retention"] == "False" ? false : true
|
71
79
|
else
|
@@ -238,17 +246,38 @@ module CloudFiles
|
|
238
246
|
# Makes a container publicly available via the Cloud Files CDN and returns true upon success. Throws NoSuchContainerException
|
239
247
|
# if the container doesn't exist or if the request fails.
|
240
248
|
#
|
241
|
-
# Takes an optional
|
249
|
+
# Takes an optional hash of options, including:
|
250
|
+
#
|
251
|
+
# :ttl, which is the CDN cache TTL in seconds (default 86400 seconds or 1 day, minimum 3600 or 1 hour, maximum 259200 or 3 days)
|
242
252
|
#
|
243
|
-
#
|
253
|
+
# :user_agent_acl, a Perl-compatible regular expression limiting access to this container to user agents matching the given regular expression
|
254
|
+
#
|
255
|
+
# :referrer_acl, a Perl-compatible regular expression limiting access to this container to HTTP referral URLs matching the given regular expression
|
256
|
+
#
|
257
|
+
# container.make_public(:ttl => 8900, :user_agent_acl => "/Mozilla/", :referrer_acl => "/^http://rackspace.com")
|
244
258
|
# => true
|
245
|
-
def make_public(
|
259
|
+
def make_public(options = {:ttl => 86400})
|
260
|
+
if options.is_a?(Fixnum)
|
261
|
+
print "DEPRECATED: make_public takes a hash of options now, instead of a TTL number"
|
262
|
+
ttl = options
|
263
|
+
options = {:ttl => ttl}
|
264
|
+
end
|
265
|
+
if options[:ttl] < 3600
|
266
|
+
options[:ttl] = 3600
|
267
|
+
end
|
268
|
+
if options[:ttl] > 259200
|
269
|
+
options[:ttl] = 259200
|
270
|
+
end
|
271
|
+
|
246
272
|
response = self.connection.cfreq("PUT",@cdnmgmthost,@cdnmgmtpath,@cdnmgmtport,@cdnmgmtscheme)
|
247
273
|
raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
|
248
274
|
|
249
|
-
headers = { "X-TTL" => ttl.to_s , "X-CDN-Enabled" => "True" }
|
275
|
+
headers = { "X-TTL" => options[:ttl].to_s , "X-CDN-Enabled" => "True" }
|
276
|
+
headers["X-User-Agent-ACL"] = options[:user_agent_acl] if options[:user_agent_acl]
|
277
|
+
headers["X-Referrer-ACL"] = options[:referrer_acl] if options[:referrer_acl]
|
250
278
|
response = self.connection.cfreq("POST",@cdnmgmthost,@cdnmgmtpath,@cdnmgmtport,@cdnmgmtscheme,headers)
|
251
279
|
raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
|
280
|
+
populate
|
252
281
|
true
|
253
282
|
end
|
254
283
|
|
@@ -263,6 +292,7 @@ module CloudFiles
|
|
263
292
|
headers = { "X-CDN-Enabled" => "False" }
|
264
293
|
response = self.connection.cfreq("POST",@cdnmgmthost,@cdnmgmtpath,@cdnmgmtport,@cdnmgmtscheme,headers)
|
265
294
|
raise NoSuchContainerException, "Container #{@name} does not exist" unless (response.code == "201" || response.code == "202")
|
295
|
+
populate
|
266
296
|
true
|
267
297
|
end
|
268
298
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudfiles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- H. Wade Minter
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-11-
|
13
|
+
date: 2009-11-13 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|