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 
         |