Class: Fog::Storage::Rackspace::Directory
- Defined in:
- lib/fog/rackspace/models/storage/directory.rb
Instance Attribute Summary collapse
-
#bytes ⇒ Integer
readonly
The number of bytes used by the directory.
-
#cdn_name ⇒ String
The CDN CNAME to be used instead of the default CDN directory URI.
-
#count ⇒ Integer
readonly
The number of objects in the directory.
-
#key ⇒ String
readonly
The name of the directory.
-
#public ⇒ Object
writeonly
Required for compatibility with other Fog providers.
-
#public_url ⇒ String
Returns the public url for the directory.
Attributes inherited from Model
Instance Method Summary collapse
-
#destroy ⇒ Boolean
Destroy the directory and remove it from CDN.
-
#files ⇒ Fog::Storage::Rackspace::Files
Returns collection of files in directory.
-
#ios_url ⇒ String
URL used to stream video to iOS devices.
-
#metadata ⇒ Fog::Storage::Rackspace::Metadata
Retrieve directory metadata.
-
#metadata=(hash) ⇒ Object
Set directory metadata.
-
#public? ⇒ Boolean
Is directory published to CDN.
-
#reload ⇒ Fog::Storage::Rackspace::Directory
Reload directory with latest data from Cloud Files.
-
#save ⇒ Boolean
Create or update directory and associated metadata.
-
#streaming_url ⇒ String
URL used to stream resources.
Methods inherited from Model
#initialize, #inspect, #symbolize_keys, #to_json, #wait_for
Methods included from Attributes::ClassMethods
#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes
Methods included from Core::DeprecatedConnectionAccessors
#connection, #connection=, #prepare_service_value
Methods included from Attributes::InstanceMethods
#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #persisted?, #requires, #requires_one
Constructor Details
This class inherits a constructor from Fog::Model
Instance Attribute Details
#bytes ⇒ Integer (readonly)
Returns The number of bytes used by the directory.
17 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 17 attribute :bytes, :aliases => 'X-Container-Bytes-Used', :type => :integer |
#cdn_name ⇒ String
This value does not persist and will need to be specified each time a directory is created or retrieved
Returns The CDN CNAME to be used instead of the default CDN directory URI. The CDN CNAME will need to be setup setup in DNS and point to the default CDN directory URI.
28 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 28 attribute :cdn_cname |
#count ⇒ Integer (readonly)
Returns The number of objects in the directory.
21 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 21 attribute :count, :aliases => 'X-Container-Object-Count', :type => :integer |
#key ⇒ String (readonly)
Returns The name of the directory.
13 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 13 identity :key, :aliases => 'name' |
#public=(value) ⇒ Object (writeonly)
Required for compatibility with other Fog providers. Not Used.
32 33 34 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 32 def public=(value) @public = value end |
#public_url ⇒ String
Returns the public url for the directory. If the directory has not been published to the CDN, this method will return nil as it is not publically accessible. This method will return the approprate url in the following order:
1. If the service used to access this directory was created with the option :rackspace_cdn_ssl => true, this method will return the SSL-secured URL.
2. If the cdn_cname attribute is populated this method will return the cname.
3. return the default CDN url.
110 111 112 113 114 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 110 def public_url return nil if urls.empty? return urls[:ssl_uri] if service.ssl? cdn_cname || urls[:uri] end |
Instance Method Details
#destroy ⇒ Boolean
Directory must be empty before it is destroyed.
Destroy the directory and remove it from CDN
63 64 65 66 67 68 69 70 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 63 def destroy requires :key service.delete_container(key) service.cdn.publish_container(self, false) if cdn_enabled? true rescue Excon::Errors::NotFound false end |
#files ⇒ Fog::Storage::Rackspace::Files
Returns collection of files in directory
74 75 76 77 78 79 80 81 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 74 def files @files ||= begin Fog::Storage::Rackspace::Files.new( :directory => self, :service => service ) end end |
#ios_url ⇒ String
URL used to stream video to iOS devices. Cloud Files will auto convert to the approprate format.
119 120 121 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 119 def ios_url urls[:ios_uri] end |
#metadata ⇒ Fog::Storage::Rackspace::Metadata
Retrieve directory metadata
51 52 53 54 55 56 57 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 51 def unless attributes[:metadata] response = service.head_container(key) attributes[:metadata] = Fog::Storage::Rackspace::Metadata.from_headers(self, response.headers) end attributes[:metadata] end |
#metadata=(hash) ⇒ Object
Set directory metadata
40 41 42 43 44 45 46 47 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 40 def (hash) if hash.is_a? Fog::Storage::Rackspace::Metadata attributes[:metadata] = hash else attributes[:metadata] = Fog::Storage::Rackspace::Metadata.new(self, hash) end attributes[:metadata] end |
#public? ⇒ Boolean
Is directory published to CDN
85 86 87 88 89 90 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 85 def public? if @public.nil? @public ||= (key && public_url) ? true : false end @public end |
#reload ⇒ Fog::Storage::Rackspace::Directory
Reload directory with latest data from Cloud Files
94 95 96 97 98 99 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 94 def reload @public = nil @urls = nil @files = nil super end |
#save ⇒ Boolean
If public attribute is true, directory will be CDN enabled
Create or update directory and associated metadata
134 135 136 137 138 139 140 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 134 def save requires :key create_or_update_container raise Fog::Storage::Rackspace::Error.new("Directory can not be set as :public without a CDN provided") if public? && !cdn_enabled? @urls = service.cdn.publish_container(self, public?) true end |
#streaming_url ⇒ String
URL used to stream resources
126 127 128 |
# File 'lib/fog/rackspace/models/storage/directory.rb', line 126 def streaming_url urls[:streaming_uri] end |