Sha256: bfdab048e80aefec29f99bfbbc4f5677aa49ce98a32fec1459df1485270ec3fc

Contents?: true

Size: 1.27 KB

Versions: 15

Compression:

Stored size: 1.27 KB

Contents

require 'dandelion/backend'

module Dandelion
  module Backend
    class S3 < Backend::Base
      scheme 's3'
      gems 'aws-s3'
      
      def initialize(config)
        require 'aws/s3'
        @access_key_id = config['access_key_id']
        @secret_access_key = config['secret_access_key']
        @bucket_name = config['bucket_name']
        @path = config['path']
      end

      def read(file)
        s3connect!
        raise MissingFileError unless AWS::S3::S3Object.exists?(path(file), @bucket_name)
        AWS::S3::S3Object.value(path(file), @bucket_name)
      end

      def write(file, data)
        s3connect!
        AWS::S3::S3Object.store(path(file), data, @bucket_name)
      end

      def delete(file)
        s3connect!
        AWS::S3::S3Object.delete(path(file), @bucket_name)
      end
      
      def to_s
        "s3://#{@access_key_id}@#{@bucket_name}/#{@path}"
      end

      protected
      
      def s3connect!
        AWS::S3::Base.establish_connection!(:access_key_id => @access_key_id, :secret_access_key => @secret_access_key, :use_ssl => true) unless AWS::S3::Base.connected? 
      end
            
      def path(file)
        if @path and !@path.empty?
          "#{@path}/#{file}"
        else
          file
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
dandelion-0.3.14 lib/dandelion/backend/s3.rb
dandelion-0.3.13 lib/dandelion/backend/s3.rb
dandelion-0.3.12 lib/dandelion/backend/s3.rb
dandelion-0.3.11 lib/dandelion/backend/s3.rb
dandelion-0.3.10 lib/dandelion/backend/s3.rb
dandelion-0.3.9 lib/dandelion/backend/s3.rb
dandelion-0.3.8 lib/dandelion/backend/s3.rb
dandelion-0.3.7 lib/dandelion/backend/s3.rb
dandelion-0.3.6 lib/dandelion/backend/s3.rb
dandelion-0.3.5 lib/dandelion/backend/s3.rb
dandelion-0.3.4 lib/dandelion/backend/s3.rb
dandelion-0.3.3 lib/dandelion/backend/s3.rb
dandelion-0.3.2 lib/dandelion/backend/s3.rb
dandelion-0.3.1 lib/dandelion/backend/s3.rb
dandelion-0.3.0 lib/dandelion/backend/s3.rb