Class: Scrivito::Binary
- Inherits:
-
Object
- Object
- Scrivito::Binary
- Defined in:
- lib/scrivito/binary.rb
Overview
Class Method Summary collapse
-
.upload(file_or_path, filename: nil, content_type: nil) ⇒ Scrivito::FutureBinary
Uploads a local file to the CMS.
Instance Method Summary collapse
-
#content_length ⇒ Integer
The length of this binary data, in bytes.
-
#content_type ⇒ String
The content type of this binary data, for example “image/jpeg”.
-
#copy(content_type: nil, filename: nil) ⇒ Scrivito::FutureBinary
Create a copy of this Binary with a different filename and/or content type.
-
#filename ⇒ String
The filename of this binary data, for example “my_image.jpg”.
-
#original ⇒ Scrivito::Binary
Returns the original version of a transformed binary.
-
#private? ⇒ Boolean
Some Scrivito data is considered private, i.e.
-
#transform(definition) ⇒ Scrivito::Binary
Use this method to transform images, i.e.
-
#transformed? ⇒ Boolean
Returns whether a binary has been transformed.
-
#url ⇒ String
The URL for accessing the binary data and downloading it using an HTTP GET request.
Class Method Details
.upload(file_or_path, filename: nil, content_type: nil) ⇒ Scrivito::FutureBinary
Uploads a local file to the CMS.
34 35 36 37 38 39 40 41 42 |
# File 'lib/scrivito/binary.rb', line 34 def self.upload(file_or_path, filename: nil, content_type: nil) if file_or_path.is_a?(File) file = file_or_path else file = File.new(file_or_path) end new_filename = filename || File.basename(file_or_path) FutureBinary.new(content_type: content_type, filename: new_filename, file_to_be_uploaded: file) end |
Instance Method Details
#content_length ⇒ Integer
The length of this binary data, in bytes.
117 118 119 |
# File 'lib/scrivito/binary.rb', line 117 def content_length headers[:content_length].to_i end |
#content_type ⇒ String
The content type of this binary data, for example “image/jpeg”.
110 111 112 |
# File 'lib/scrivito/binary.rb', line 110 def content_type headers[:content_type] end |
#copy(content_type: nil, filename: nil) ⇒ Scrivito::FutureBinary
Create a copy of this Binary with a different filename and/or content type.
54 55 56 57 |
# File 'lib/scrivito/binary.rb', line 54 def copy(content_type: nil, filename: nil) new_filename = filename || self.filename FutureBinary.new(content_type: content_type, filename: new_filename, id_to_be_copied: id) end |
#filename ⇒ String
The filename of this binary data, for example “my_image.jpg”.
103 104 105 |
# File 'lib/scrivito/binary.rb', line 103 def filename File.basename(URI(url).path) end |
#original ⇒ Scrivito::Binary
Returns the original version of a transformed binary.
If a binary is the result of a transformation, the original version of the binary is returned. Otherwise self.
238 239 240 |
# File 'lib/scrivito/binary.rb', line 238 def original @original || self end |
#private? ⇒ Boolean
Some Scrivito data is considered private, i.e. it is not currently intended for the general public, for example content in a workspace that has not been published yet.
64 65 66 |
# File 'lib/scrivito/binary.rb', line 64 def private? !@is_public end |
#transform(definition) ⇒ Scrivito::Binary
Use this method to transform images, i.e. to scale down large images or to generate thumbnails of images. Only applicable if this Scrivito::Binary is an image.
This method does not change the binary. Instead, it returns a copy of it, transformed using the definition.
If the original binary has already been transformed, the returned binary will be a combination of the transformations. Thus, the transformations can be chained (see examples).
The transformed data is calculated “lazily”, so calling #transform does not trigger any calculation. The calculation is triggered only when data is accessed, for example via #url.
208 209 210 211 212 |
# File 'lib/scrivito/binary.rb', line 208 def transform(definition) self.class.new(id, public?, transformation_definition: (transformation_definition || {}).merge(definition), original: original) end |
#transformed? ⇒ Boolean
Returns whether a binary has been transformed.
218 219 220 |
# File 'lib/scrivito/binary.rb', line 218 def transformed? !!transformation_definition end |
#url ⇒ String
The URL is calculated on demand, i.e. if the URL has not been cached yet, this method calls the Scrivito API to retrieve the URL. If you want to link to a Binary, consider using ControllerHelper#scrivito_url instead. This is generally much faster, as it performs the Scrivito API call asynchronously.
URLs for private content have an expiration time in order to protect them. Therefore, the URL should be accessed immediately after it has been returned (i.e. within a couple of minutes). Accessing it after expiration causes an error.
The URL for accessing the binary data and downloading it using an HTTP GET request.
The URLs should not be used for long-term storage since they are no longer accessible hours or days after they have been generated.
88 89 90 |
# File 'lib/scrivito/binary.rb', line 88 def url find_url('get') end |