Class: Mongo::Grid::File::Info
- Inherits:
-
Object
- Object
- Mongo::Grid::File::Info
- Defined in:
- lib/mongo/grid/file/info.rb
Overview
Encapsulates behaviour around GridFS files collection file document.
Constant Summary collapse
- COLLECTION =
Name of the files collection.
'files'.freeze
- MAPPINGS =
Mappings of user supplied fields to db specification.
{ :chunk_size => :chunkSize, :content_type => :contentType, :filename => :filename, :_id => :_id, :md5 => :md5, :length => :length, :metadata => :metadata, :upload_date => :uploadDate, :aliases => :aliases }.freeze
- DEFAULT_CONTENT_TYPE =
Default content type for stored files.
'binary/octet-stream'.freeze
Instance Attribute Summary collapse
-
#document ⇒ BSON::Document
readonly
Document The files collection document.
Instance Method Summary collapse
-
#==(other) ⇒ true, false
Is this file information document equal to another?.
-
#bson_type ⇒ Integer
Get the BSON type for a files information document.
-
#chunk_size ⇒ Integer
Get the file chunk size.
-
#content_type ⇒ String
Get the file information content type.
-
#filename ⇒ String
Get the filename from the file information.
-
#id ⇒ BSON::ObjectId
Get the file id from the file information.
-
#initialize(document) ⇒ Info
constructor
Create the new file information document.
-
#inspect ⇒ String
Get a readable inspection for the object.
-
#length ⇒ Integer
(also: #size)
Get the length of the document in bytes.
-
#md5 ⇒ String
Get the md5 hash.
-
#metadata ⇒ String
Get the additional metadata from the file information document.
-
#to_bson(encoded = ''.force_encoding(BSON::BINARY)) ⇒ String
Convert the file information document to BSON for storage.
-
#upload_date ⇒ Time
Get the upload date.
Constructor Details
Instance Attribute Details
#document ⇒ BSON::Document (readonly)
Returns document The files collection document.
50 51 52 |
# File 'lib/mongo/grid/file/info.rb', line 50 def document @document end |
Instance Method Details
#==(other) ⇒ true, false
Is this file information document equal to another?
62 63 64 65 |
# File 'lib/mongo/grid/file/info.rb', line 62 def ==(other) return false unless other.is_a?(Info) document == other.document end |
#bson_type ⇒ Integer
Get the BSON type for a files information document.
75 76 77 |
# File 'lib/mongo/grid/file/info.rb', line 75 def bson_type BSON::Hash::BSON_TYPE end |
#chunk_size ⇒ Integer
Get the file chunk size.
87 88 89 |
# File 'lib/mongo/grid/file/info.rb', line 87 def chunk_size document[:chunkSize] end |
#content_type ⇒ String
Get the file information content type.
99 100 101 |
# File 'lib/mongo/grid/file/info.rb', line 99 def content_type document[:contentType] end |
#filename ⇒ String
Get the filename from the file information.
109 110 111 |
# File 'lib/mongo/grid/file/info.rb', line 109 def filename document[:filename] end |
#id ⇒ BSON::ObjectId
Get the file id from the file information.
121 122 123 |
# File 'lib/mongo/grid/file/info.rb', line 121 def id document[:_id] end |
#inspect ⇒ String
Get a readable inspection for the object.
146 147 148 149 |
# File 'lib/mongo/grid/file/info.rb', line 146 def inspect "#<Mongo::Grid::File::Info:0x#{object_id} chunk_size=#{chunk_size} " + "filename=#{filename} content_type=#{content_type} id=#{id} md5=#{md5}>" end |
#length ⇒ Integer Also known as: size
Get the length of the document in bytes.
159 160 161 |
# File 'lib/mongo/grid/file/info.rb', line 159 def length document[:length] end |
#md5 ⇒ String
Get the md5 hash.
184 185 186 |
# File 'lib/mongo/grid/file/info.rb', line 184 def md5 document[:md5] || @client_md5 end |
#metadata ⇒ String
Get the additional metadata from the file information document.
172 173 174 |
# File 'lib/mongo/grid/file/info.rb', line 172 def document[:metadata] end |
#to_bson(encoded = ''.force_encoding(BSON::BINARY)) ⇒ String
If no md5 exists in the file information document (it was loaded from the server and is not a new file) then we digest the md5 and set it.
Convert the file information document to BSON for storage.
201 202 203 204 |
# File 'lib/mongo/grid/file/info.rb', line 201 def to_bson(encoded = ''.force_encoding(BSON::BINARY)) document[:md5] ||= @client_md5.hexdigest document.to_bson(encoded) end |
#upload_date ⇒ Time
Get the upload date.
214 215 216 |
# File 'lib/mongo/grid/file/info.rb', line 214 def upload_date document[:uploadDate] end |