Class: Miasma::Models::Storage::File

Inherits:
Types::Model show all
Defined in:
lib/miasma/models/storage/file.rb

Overview

Abstract file

Defined Under Namespace

Classes: Streamable

Instance Attribute Summary collapse

Attributes inherited from Types::Model

#api

Instance Method Summary collapse

Methods inherited from Types::Model

from_json, #id?, #persisted?, #reload, #save

Methods included from Utils::ApiMethoding

#api_method_for

Methods inherited from Types::Data

from_json, #from_json, #to_json

Constructor Details

#initialize(bucket, args = {}) ⇒ self

Create a new instance

Parameters:

  • bucket (Bucket)
  • args (Hash) (defaults to: {})


66
67
68
69
# File 'lib/miasma/models/storage/file.rb', line 66

def initialize(bucket, args={})
  @bucket = bucket
  super bucket.api, args
end

Instance Attribute Details

#bucketBucket (readonly)

Returns parent bucket.

Returns:



59
60
61
# File 'lib/miasma/models/storage/file.rb', line 59

def bucket
  @bucket
end

Instance Method Details

#bodyIO-ish

Note:

object returned will provide #readpartial

Returns:

  • (IO-ish)


82
83
84
85
86
87
# File 'lib/miasma/models/storage/file.rb', line 82

def body
  unless(attributes[:body])
    data[:body] = api.file_body(self)
  end
  attributes[:body]
end

#body=(io) ⇒ IO

Set file body

Parameters:

  • io (IO, String)

Returns:

  • (IO)


93
94
95
96
97
98
# File 'lib/miasma/models/storage/file.rb', line 93

def body=(io)
  unless(io.respond_to?(:readpartial))
    io = StringIO.new(io)
  end
  dirty[:body] = io
end

#destroyself

Destroy file

Returns:

  • (self)


111
112
113
114
115
116
# File 'lib/miasma/models/storage/file.rb', line 111

def destroy
  perform_destroy
  data.clear
  dirty.clear
  self
end

#filter(options = {}) ⇒ Array<File>

Return files matching given filter

Parameters:

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

    filter options

Options Hash (options):

  • :prefix (String)

    key prefix

Returns:

Raises:

  • (NotImplementedError)


76
77
78
# File 'lib/miasma/models/storage/file.rb', line 76

def filter(options={})
  raise NotImplementedError
end

#url(timeout_in_seconds = 60) ⇒ String

Create accessible URL

Parameters:

  • timeout_in_seconds (Integer) (defaults to: 60)

    optional if private (default: 60)

Returns:

  • (String)

    URL



104
105
106
# File 'lib/miasma/models/storage/file.rb', line 104

def url(timeout_in_seconds=60)
  perform_file_url(timeout_in_seconds)
end