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: {})


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

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

Instance Attribute Details

#bucketBucket (readonly)

Returns parent bucket.

Returns:



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

def bucket
  @bucket
end

Instance Method Details

#bodyIO-ish

Note:

object returned will provide #readpartial

Returns:

  • (IO-ish)


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

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)


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

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

#destroyself

Destroy file

Returns:

  • (self)


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

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)


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

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



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

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