Class: CarrierWave::Storage::Fog::File
- Inherits:
-
Object
- Object
- CarrierWave::Storage::Fog::File
- Defined in:
- lib/carrierwave/storage/fog.rb
Instance Attribute Summary collapse
-
#path ⇒ Object
readonly
Current local path to file.
Instance Method Summary collapse
-
#attributes ⇒ Object
Return all attributes from file.
-
#authenticated_url ⇒ Object
Return a temporary authenticated url to a private file, if available Only supported for AWS and Google providers.
-
#content_type ⇒ Object
Lookup value for file content-type header.
-
#content_type=(new_content_type) ⇒ Object
Set non-default content-type header (default is file.content_type).
-
#delete ⇒ Object
Remove the file from service.
-
#headers ⇒ Object
deprecated: All attributes from file (includes headers).
-
#initialize(uploader, base, path) ⇒ File
constructor
A new instance of File.
-
#public_url ⇒ Object
Return a url to a public file, if available.
-
#read ⇒ Object
Read content of file from service.
-
#size ⇒ Object
Return size of file body.
-
#store(new_file) ⇒ Object
Write file to service.
-
#url ⇒ Object
Return url to file, if avaliable.
Constructor Details
#initialize(uploader, base, path) ⇒ File
Returns a new instance of File.
196 197 198 |
# File 'lib/carrierwave/storage/fog.rb', line 196 def initialize(uploader, base, path) @uploader, @base, @path = uploader, base, path end |
Instance Attribute Details
#path ⇒ Object (readonly)
Current local path to file
Returns
- String
-
a path to file
113 114 115 |
# File 'lib/carrierwave/storage/fog.rb', line 113 def path @path end |
Instance Method Details
#attributes ⇒ Object
Return all attributes from file
Returns
- Hash
-
attributes from file
122 123 124 |
# File 'lib/carrierwave/storage/fog.rb', line 122 def attributes file.attributes end |
#authenticated_url ⇒ Object
Return a temporary authenticated url to a private file, if available Only supported for AWS and Google providers
Returns
- String
-
temporary authenticated url
or
- NilClass
-
no authenticated url available
136 137 138 139 140 141 142 143 144 145 |
# File 'lib/carrierwave/storage/fog.rb', line 136 def authenticated_url if ['AWS', 'Google'].include?(@uploader.fog_credentials[:provider]) # avoid a get by using local references local_directory = connection.directories.new(:key => @uploader.fog_directory) local_file = local_directory.files.new(:key => path) local_file.url(::Fog::Time.now + @uploader.fog_authenticated_url_expiration) else nil end end |
#content_type ⇒ Object
Lookup value for file content-type header
Returns
- String
-
value of content-type
154 155 156 |
# File 'lib/carrierwave/storage/fog.rb', line 154 def content_type @content_type || file.content_type end |
#content_type=(new_content_type) ⇒ Object
Set non-default content-type header (default is file.content_type)
Returns
- String
-
returns new content type value
165 166 167 |
# File 'lib/carrierwave/storage/fog.rb', line 165 def content_type=(new_content_type) @content_type = new_content_type end |
#delete ⇒ Object
Remove the file from service
Returns
- Boolean
-
true for success or raises error
176 177 178 179 |
# File 'lib/carrierwave/storage/fog.rb', line 176 def delete # avoid a get by just using local reference directory.files.new(:key => path).destroy end |
#headers ⇒ Object
deprecated: All attributes from file (includes headers)
Returns
- Hash
-
attributes from file
188 189 190 191 192 193 194 |
# File 'lib/carrierwave/storage/fog.rb', line 188 def headers location = caller.first warning = "[yellow][WARN] headers is deprecated, use attributes instead[/]" warning << " [light_black](#{location})[/]" Formatador.display_line(warning) attributes end |
#public_url ⇒ Object
Return a url to a public file, if available
Returns
- String
-
public url
or
- NilClass
-
no public url available
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/carrierwave/storage/fog.rb', line 248 def public_url if host = @uploader.fog_host "#{host}/#{path}" else # AWS/Google optimized for speed over correctness case @uploader.fog_credentials[:provider] when 'AWS' # if directory is a valid subdomain, use that style for access if @uploader.fog_directory.to_s =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/ "https://#{@uploader.fog_directory}.s3.amazonaws.com/#{path}" else # directory is not a valid subdomain, so use path style for access "https://s3.amazonaws.com/#{@uploader.fog_directory}/#{path}" end when 'Google' "https://commondatastorage.googleapis.com/#{@uploader.fog_directory}/#{path}" else # avoid a get by just using local reference directory.files.new(:key => path).public_url end end end |
#read ⇒ Object
Read content of file from service
Returns
- String
-
contents of file
206 207 208 |
# File 'lib/carrierwave/storage/fog.rb', line 206 def read file.body end |
#size ⇒ Object
Return size of file body
Returns
- Integer
-
size of file body
217 218 219 |
# File 'lib/carrierwave/storage/fog.rb', line 217 def size file.content_length end |
#store(new_file) ⇒ Object
Write file to service
Returns
- Boolean
-
true on success or raises error
227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/carrierwave/storage/fog.rb', line 227 def store(new_file) fog_file = new_file.to_file @content_type ||= new_file.content_type @file = directory.files.create({ :body => fog_file ? fog_file : new_file.read, :content_type => @content_type, :key => path, :public => @uploader.fog_public }.merge(@uploader.fog_attributes)) true end |
#url ⇒ Object
Return url to file, if avaliable
Returns
- String
-
url
or
- NilClass
-
no url available
280 281 282 283 284 285 286 |
# File 'lib/carrierwave/storage/fog.rb', line 280 def url if !@uploader.fog_public authenticated_url else public_url end end |