Sha256: f20d3c0cb943ada0971b827669a4f3082bb34d8ed242429e2a2b5430602799ed

Contents?: true

Size: 1.99 KB

Versions: 5

Compression:

Stored size: 1.99 KB

Contents

begin
  # Use mime/types/columnar if available, for reduced memory usage
  require 'mime/types/columnar'
rescue LoadError
  require 'mime/types'
end

module Fog
  module Storage
    extend Fog::ServicesMixin

    def self.new(orig_attributes)
      attributes = orig_attributes.dup # prevent delete from having side effects
      case provider = attributes.delete(:provider).to_s.downcase.to_sym
      when :internetarchive
        require "fog/internet_archive/storage"
        Fog::Storage::InternetArchive.new(attributes)
      when :stormondemand
        require "fog/storage/storm_on_demand"
        Fog::Storage::StormOnDemand.new(attributes)
      else
        super(orig_attributes)
      end
    end

    def self.directories
      directories = []
      providers.each do |provider|
        begin
          directories.concat(self[provider].directories)
        rescue # ignore any missing credentials/etc
        end
      end
      directories
    end

    def self.get_body_size(body)
      if body.respond_to?(:encoding)
        original_encoding = body.encoding
        body.force_encoding('BINARY')
      end

      size = if body.respond_to?(:bytesize)
        body.bytesize
      elsif body.respond_to?(:size)
        body.size
      elsif body.respond_to?(:stat)
        body.stat.size
      else
        0
      end

      if body.respond_to?(:encoding)
        body.force_encoding(original_encoding)
      end

      size
    end

    def self.get_content_type(data)
      if data.respond_to?(:path) && !data.path.nil?
        filename = ::File.basename(data.path)
        unless (mime_types = MIME::Types.of(filename)).empty?
          mime_types.first.content_type
        end
      end
    end

    def self.parse_data(data)
      {
        :body     => data,
        :headers  => {
          "Content-Length"  => get_body_size(data),
          "Content-Type"    => get_content_type(data)
          # "Content-MD5" => Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
        }
      }
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
fog-core-1.34.0 lib/fog/storage.rb
fog-core-1.33.0 lib/fog/storage.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-core-1.32.1/lib/fog/storage.rb
fog-core-1.32.1 lib/fog/storage.rb
fog-core-1.32.0 lib/fog/storage.rb