Class: Fog::Storage::Rackspace::File

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/rackspace/models/storage/file.rb

Instance Attribute Summary collapse

Attributes inherited from Model

#collection, #service

Instance Method Summary collapse

Methods inherited from Model

#initialize, #inspect, #reload, #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

#access_control_allow_originString

A space delimited list of URLs allowed to make Cross Origin Requests. Format is www.example.com. An asterisk (*) allows all.

Returns:

  • (String)

    string containing a list of space delimited URLs

See Also:



38
# File 'lib/fog/rackspace/models/storage/file.rb', line 38

attribute :access_control_allow_origin, :aliases => ['Access-Control-Allow-Origin']

#content_lengthInteger (readonly)

Returns The content length of the file.

Returns:

  • (Integer)

    The content length of the file



15
# File 'lib/fog/rackspace/models/storage/file.rb', line 15

attribute :content_length,  :aliases => ['bytes', 'Content-Length'], :type => :integer

#content_typeString

Returns The MIME Media Type of the file.

Returns:

  • (String)

    The MIME Media Type of the file

See Also:



20
# File 'lib/fog/rackspace/models/storage/file.rb', line 20

attribute :content_type,    :aliases => ['content_type', 'Content-Type']

#directoryFog::Storage::Rackspace::Directory

Returns directory containing file.

Returns:



47
48
49
# File 'lib/fog/rackspace/models/storage/file.rb', line 47

def directory
  @directory
end

#etagString

The MD5 checksum of file. If included file creation request, will ensure integrity of the file.

Returns:

  • (String)

    MD5 checksum of file.



27
# File 'lib/fog/rackspace/models/storage/file.rb', line 27

attribute :etag,            :aliases => ['hash', 'Etag']

#keyString (readonly)

Returns The name of the file.

Returns:

  • (String)

    The name of the file



11
# File 'lib/fog/rackspace/models/storage/file.rb', line 11

identity  :key,             :aliases => 'name'

#last_modifiedTime (readonly)

The last time the file was modified

Returns:

  • (Time)

    The last time the file was modified



32
# File 'lib/fog/rackspace/models/storage/file.rb', line 32

attribute :last_modified,   :aliases => ['last_modified', 'Last-Modified'], :type => :time

#originString

Returns The origin is the URI of the object’s host.

Returns:

  • (String)

    The origin is the URI of the object’s host.

See Also:



43
# File 'lib/fog/rackspace/models/storage/file.rb', line 43

attribute :origin,          :aliases => ['Origin']

#public=(value) ⇒ Object (writeonly)

Note:

Required for compatibility with other Fog providers. Not Used.



51
52
53
# File 'lib/fog/rackspace/models/storage/file.rb', line 51

def public=(value)
  @public = value
end

Instance Method Details

#bodyObject

Returns the body/contents of file

Examples:

Retrieve and download contents of Cloud Files object to file system

file_object = directory.files.get('germany.jpg')
File.open('germany.jpg', 'w') {|f| f.write(file_object.body) }

See Also:

  • Fog::Storage::Rackspace:Files#get


58
59
60
61
62
63
64
# File 'lib/fog/rackspace/models/storage/file.rb', line 58

def body
  attributes[:body] ||= if last_modified
    collection.get(identity).body
  else
    ''
  end
end

#body=(new_body) ⇒ Object

Sets the body/contents of file

Parameters:



68
69
70
# File 'lib/fog/rackspace/models/storage/file.rb', line 68

def body=(new_body)
  attributes[:body] = new_body
end

#copy(target_directory_key, target_file_key, options = {}) ⇒ Object

Copy file to another directory or directory

Parameters:

  • target_directory_key (String)
  • target_file_key (String)
  • options (Hash) (defaults to: {})

    used to pass in file attributes

See Also:



77
78
79
80
81
82
83
84
85
# File 'lib/fog/rackspace/models/storage/file.rb', line 77

def copy(target_directory_key, target_file_key, options={})
  requires :directory, :key
  options['Content-Type'] ||= content_type if content_type
  options['Access-Control-Allow-Origin'] ||= access_control_allow_origin if access_control_allow_origin
  options['Origin'] ||= origin if origin
  service.copy_object(directory.key, key, target_directory_key, target_file_key, options)
  target_directory = service.directories.new(:key => target_directory_key)
  target_directory.files.get(target_file_key)
end

#destroyBoolean

Destroy the file

Returns:

  • (Boolean)

    returns true if file is destroyed

See Also:



90
91
92
93
94
# File 'lib/fog/rackspace/models/storage/file.rb', line 90

def destroy
  requires :directory, :key
  service.delete_object(directory.key, key)
  true
end

#ios_urlString

URL used to stream video to iOS devices without needing to convert your video



145
146
147
# File 'lib/fog/rackspace/models/storage/file.rb', line 145

def ios_url
  Files::file_url directory.ios_url, key
end

#metadataFog::Storage::Rackspace::Metadata

File metadata

Returns:



109
110
111
# File 'lib/fog/rackspace/models/storage/file.rb', line 109

def 
  attributes[:metadata] ||= Fog::Storage::Rackspace::Metadata.new(self)
end

#metadata=(hash) ⇒ Object

Set file metadata

Parameters:



98
99
100
101
102
103
104
105
# File 'lib/fog/rackspace/models/storage/file.rb', line 98

def metadata=(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

#owner=(new_owner) ⇒ Object

Required for compatibility with other Fog providers. Not Used.



114
115
116
117
118
119
120
121
# File 'lib/fog/rackspace/models/storage/file.rb', line 114

def owner=(new_owner)
  if new_owner
    attributes[:owner] = {
      :display_name => new_owner['DisplayName'],
      :id           => new_owner['ID']
    }
  end
end

#public?Boolean

Is file published to CDN

Returns:

  • (Boolean)

    return true if published to CDN



125
126
127
# File 'lib/fog/rackspace/models/storage/file.rb', line 125

def public?
  directory.public?
end

#public_urlString

Returns the public url for the file. If the file 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 file was created with the option :rackspace_cdn_ssl => true, this method will return the SSL-secured URL.
2. If the directory's cdn_cname attribute is populated this method will return the cname.
3. return the default CDN url.

Returns:

  • (String)

    public url for file



138
139
140
# File 'lib/fog/rackspace/models/storage/file.rb', line 138

def public_url
  Files::file_url directory.public_url, key
end

#purge_from_cdnObject

Note:

You may only PURGE up to 25 objects per day. Any attempt to purge more than this will result in a 498 status code error (Rate Limited).

Immediately purge file from the CDN network



159
160
161
162
163
164
165
# File 'lib/fog/rackspace/models/storage/file.rb', line 159

def purge_from_cdn
  if public?
    service.cdn.purge(self)
  else
    false
  end
end

#save(options = {}) ⇒ Object

Create or updates file and associated metadata

Parameters:

  • options (Hash) (defaults to: {})

    additional parameters to pass to Cloud Files

See Also:



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/fog/rackspace/models/storage/file.rb', line 170

def save(options = {})
  requires :body, :directory, :key
  options['Content-Type'] = content_type if content_type
  options['Access-Control-Allow-Origin'] = access_control_allow_origin if access_control_allow_origin
  options['Origin'] = origin if origin
  options['Content-Disposition'] = content_disposition if content_disposition
  options.merge!(.to_headers)

  data = service.put_object(directory.key, key, body, options)
  update_attributes_from(data)
  
  self.content_length = Fog::Storage.get_body_size(body)
  self.content_type ||= Fog::Storage.get_content_type(body)
  true
end

#streaming_urlString

URL used to stream resources



152
153
154
# File 'lib/fog/rackspace/models/storage/file.rb', line 152

def streaming_url
  Files::file_url directory.streaming_url, key
end