Class: Fiona7::Builder::IndirectBlobBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/fiona7/builder/indirect_blob_builder.rb

Direct Known Subclasses

IndirectBlobBuilderForObj

Instance Method Summary collapse

Constructor Details

#initialize(parent_path, filename, file = nil) ⇒ IndirectBlobBuilder

Returns a new instance of IndirectBlobBuilder.



6
7
8
9
10
# File 'lib/fiona7/builder/indirect_blob_builder.rb', line 6

def initialize(parent_path, filename, file=nil)
  @parent_path = parent_path
  @filename    = filename
  @file        = file
end

Instance Method Details

#callObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fiona7/builder/indirect_blob_builder.rb', line 12

def call
  parent    = ContainerChainBuilder.new(@parent_path).call
  ext       = ::File.extname(@filename).to_s[1..-1].to_s.downcase
  name      = ::File.basename(@filename, '.' + ext)
  obj_class = if ['jpg', 'jpeg', 'gif', 'png', 'tif', 'tiff'].include?(ext)
                'X_Image'
              else
                'X_Generic'
              end

  if @file
    upload = WriteObj.upload(@file, ext, {name: name, parent: parent, obj_class: obj_class}).tap(&:release!)
  else
    upload = WriteObj.create({name: name, parent: parent, obj_class: obj_class}).tap(&:release!)
  end
end