Sha256: 1542f231df3cca9f7b705109a0fbcdac6389f8fe830d3f6de41f3506100ec1a0

Contents?: true

Size: 980 Bytes

Versions: 3

Compression:

Stored size: 980 Bytes

Contents

require "aws-sdk"

module RailsConnector

class Blob

  def self.find(id)
    new(blob_class.find(id))
  end

  def self.config
    @config or raise "Blob storage has not been configured yet"
  end

  def self.configure(spec)
    @config = spec.symbolize_keys
  end

  def self.blob_class
    @blob_class ||= blob_class_from_config
  end

  # for testing purposes
  def self.reset_blob_class_cache # :nodoc:
    @blob_class = nil
  end

  def self.blob_class_from_config
    blob_class =
        case config[:type]
        when "s3"
          S3Blob
        else
          raise "Unsupported blob storage type #{config[:type]}"
        end
    blob_class.configure(config)
    blob_class
  end

  attr_reader :instance

  def initialize(blob_instance)
    @instance = blob_instance
  end

  def id
    instance.id
  end

  def url
    instance.url
  end

  def content_type
    instance.content_type
  end

  def length
    instance.length
  end

end

end # module RailsConnector

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
infopark_cloud_connector-6.8.0.210.ed204b0 lib/rails_connector/blob.rb
infopark_cloud_connector-6.8.0.110.6570b45 lib/rails_connector/blob.rb
infopark_cloud_connector-6.8.0.72.d18d096 lib/rails_connector/blob.rb