cloudfiles 1.4.13 → 1.4.14
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/CHANGELOG +5 -0
- data/VERSION +1 -1
- data/cloudfiles.gemspec +2 -2
- data/lib/cloudfiles/connection.rb +5 -1
- data/lib/cloudfiles/container.rb +30 -1
- data/lib/cloudfiles/storage_object.rb +33 -1
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
================================================================================
|
2
|
+
1.4.14 (2011/02/24)
|
3
|
+
================================================================================
|
4
|
+
o Added CDN Purge functionality for containers and objects.
|
5
|
+
|
1
6
|
================================================================================
|
2
7
|
1.4.13 (2011/02/22)
|
3
8
|
================================================================================
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.14
|
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.14"
|
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{2011-
|
12
|
+
s.date = %q{2011-03-04}
|
13
13
|
s.description = %q{A Ruby version of the Rackspace Cloud Files API.}
|
14
14
|
s.email = %q{minter@lunenburg.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -289,7 +289,11 @@ module CloudFiles
|
|
289
289
|
# Server closed the connection, retry
|
290
290
|
raise CloudFiles::Exception::Connection, "Unable to reconnect to #{server} after #{count} attempts" if attempts >= 5
|
291
291
|
attempts += 1
|
292
|
-
|
292
|
+
begin
|
293
|
+
@http[server].finish
|
294
|
+
rescue
|
295
|
+
nil
|
296
|
+
end
|
293
297
|
start_http(server, path, port, scheme, headers)
|
294
298
|
retry
|
295
299
|
rescue ExpiredAuthTokenException
|
data/lib/cloudfiles/container.rb
CHANGED
@@ -300,7 +300,7 @@ module CloudFiles
|
|
300
300
|
refresh
|
301
301
|
true
|
302
302
|
end
|
303
|
-
|
303
|
+
|
304
304
|
# Makes a container private and returns true upon success. Throws NoSuchContainerException
|
305
305
|
# if the container doesn't exist or if the request fails.
|
306
306
|
#
|
@@ -316,6 +316,35 @@ module CloudFiles
|
|
316
316
|
true
|
317
317
|
end
|
318
318
|
|
319
|
+
# Purges CDN Edge Cache for all objects inside of this container
|
320
|
+
#
|
321
|
+
# :email, An valid email address or comma seperated
|
322
|
+
# list of emails to be notified once purge is complete .
|
323
|
+
#
|
324
|
+
# container.purge_from_cdn
|
325
|
+
# => true
|
326
|
+
#
|
327
|
+
# or
|
328
|
+
#
|
329
|
+
# container.purge_from_cdn("User@domain.com")
|
330
|
+
# => true
|
331
|
+
#
|
332
|
+
# or
|
333
|
+
#
|
334
|
+
# container.purge_from_cdn("User@domain.com, User2@domain.com")
|
335
|
+
# => true
|
336
|
+
def purge_from_cdn(email=nil)
|
337
|
+
if email
|
338
|
+
headers = {"X-Purge-Email" => email}
|
339
|
+
response = self.connection.cfreq("DELETE", @cdnmgmthost, @cdnmgmtpath, @cdnmgmtport, @cdnmgmtscheme, headers)
|
340
|
+
raise CloudFiles::Exception::Connection, "Error Unable to Purge Container: #{@name}" unless (response.code > "200" && response.code < "299")
|
341
|
+
else
|
342
|
+
response = self.connection.cfreq("DELETE", @cdnmgmthost, @cdnmgmtpath, @cdnmgmtport, @cdnmgmtscheme)
|
343
|
+
raise CloudFiles::Exception::Connection, "Error Unable to Purge Container: #{@name}" unless (response.code > "200" && response.code < "299")
|
344
|
+
true
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
319
348
|
def to_s # :nodoc:
|
320
349
|
@name
|
321
350
|
end
|
@@ -24,6 +24,10 @@ module CloudFiles
|
|
24
24
|
@storagepath = self.container.connection.storagepath + "/#{CloudFiles.escape @containername}/#{CloudFiles.escape @name, '/'}"
|
25
25
|
@storageport = self.container.connection.storageport
|
26
26
|
@storagescheme = self.container.connection.storagescheme
|
27
|
+
@cdnmgmthost = self.container.connection.cdnmgmthost
|
28
|
+
@cdnmgmtpath = self.container.connection.cdnmgmtpath + "/#{CloudFiles.escape @containername}/#{CloudFiles.escape @name, '/'}"
|
29
|
+
@cdnmgmtport = self.container.connection.cdnmgmtport
|
30
|
+
@cdnmgmtscheme = self.container.connection.cdnmgmtscheme
|
27
31
|
if force_exists
|
28
32
|
raise CloudFiles::Exception::NoSuchObject, "Object #{@name} does not exist" unless container.object_exists?(objectname)
|
29
33
|
end
|
@@ -110,7 +114,7 @@ module CloudFiles
|
|
110
114
|
headers['Range'] = range
|
111
115
|
end
|
112
116
|
self.container.connection.cfreq("GET", @storagehost, @storagepath, @storageport, @storagescheme, headers, nil) do |response|
|
113
|
-
raise CloudFiles::Exception::NoSuchObject, "Object #{@name} does not exist" unless (response.code
|
117
|
+
raise CloudFiles::Exception::NoSuchObject, "Object #{@name} does not exist. Response code #{response.code}" unless (response.code =~ /^20./)
|
114
118
|
response.read_body(&block)
|
115
119
|
end
|
116
120
|
end
|
@@ -189,6 +193,34 @@ module CloudFiles
|
|
189
193
|
self.refresh
|
190
194
|
true
|
191
195
|
end
|
196
|
+
# Purges CDN Edge Cache for all objects inside of this container
|
197
|
+
#
|
198
|
+
# :email, An valid email address or comma seperated
|
199
|
+
# list of emails to be notified once purge is complete .
|
200
|
+
#
|
201
|
+
# obj.purge_from_cdn
|
202
|
+
# => true
|
203
|
+
#
|
204
|
+
# or
|
205
|
+
#
|
206
|
+
# obj.purge_from_cdn("User@domain.com")
|
207
|
+
# => true
|
208
|
+
#
|
209
|
+
# or
|
210
|
+
#
|
211
|
+
# obj.purge_from_cdn("User@domain.com, User2@domain.com")
|
212
|
+
# => true
|
213
|
+
def purge_from_cdn(email=nil)
|
214
|
+
if email
|
215
|
+
headers = {"X-Purge-Email" => email}
|
216
|
+
response = self.container.connection.cfreq("DELETE", @cdnmgmthost, @cdnmgmtpath, @cdnmgmtport, @cdnmgmtscheme, headers)
|
217
|
+
raise CloudFiles::Exception::Connection, "Error Unable to Purge Object: #{@name}" unless (response.code.to_s =~ /^20.$/)
|
218
|
+
else
|
219
|
+
response = self.container..connection.cfreq("DELETE", @cdnmgmthost, @cdnmgmtpath, @cdnmgmtport, @cdnmgmtscheme)
|
220
|
+
raise CloudFiles::Exception::Connection, "Error Unable to Purge Object: #{@name}" unless (response.code.to_s =~ /^20.$/)
|
221
|
+
end
|
222
|
+
true
|
223
|
+
end
|
192
224
|
|
193
225
|
# A convenience method to stream data into an object from a local file (or anything that can be loaded by Ruby's open method)
|
194
226
|
#
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudfiles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 14
|
10
|
+
version: 1.4.14
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- H. Wade Minter
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-03-04 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|