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)

Instance Method Summary (collapse)

Constructor Details

- (self) initialize(bucket, args = {})

Create a new instance

Parameters:



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

- (Miasma::Types::Api) api (readonly) Originally defined in class Types::Model

Returns underlying service API

Returns:

- (Bucket) bucket (readonly)

Returns parent bucket

Returns:



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

def bucket
  @bucket
end

Instance Method Details

- (IO-ish) body

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

- (IO) body=(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

- (self) destroy

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

- (Array<File>) filter(options = {})

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

- (String) url(timeout_in_seconds = 60)

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