Sha256: 230b0925434b4ef29a2d573b1262d705e9fd4b40f53f1d4c12ff3744fc03ba18

Contents?: true

Size: 1.44 KB

Versions: 6

Compression:

Stored size: 1.44 KB

Contents

require 'attached/storage/base'
require 'fog'


module Attached
  module Storage
    class Rackspace < Fog


      attr_reader :container
      attr_reader :username
      attr_reader :api_key


      # Create a new interface supporting save and destroy operations.
      #
      # Usage:
      #
      #   Attached::Storage::Rackspace.new()
      #   Attached::Storage::Rackspace.new("rackspace.yml")

      def initialize(credentials)
        super

        credentials = parse(credentials)

        @container    = credentials[:container] || credentials['container']
        @username     = credentials[:username]  || credentials['username']
        @api_key      = credentials[:api_key]   || credentials['api_key']

        raise "'container' must be specified if using 'rackspace' for storage" unless @container
      end


      # Access the host (e.g. https://storage.clouddrive.com/container) for a storage service.
      #
      # Usage:
      #
      #   storage.host

      def host()
        "https://storage.clouddrive.com/#{self.container}/"
      end


    private


    def directory()
      connection.directories.get(self.container) || connection.directories.create(self.defaults.merge(:key => self.container))
    end


      def connection
        @connection ||= ::Fog::Storage.new(
          :rackspace_username => self.username,
          :rackspace_api_key  => self.api_key,
          :provider => 'Rackspace'
        )
      end


    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
attached-1.0.4 lib/attached/storage/rackspace.rb
attached-1.0.3 lib/attached/storage/rackspace.rb
attached-1.0.2 lib/attached/storage/rackspace.rb
attached-1.0.1 lib/attached/storage/rackspace.rb
attached-1.0.0 lib/attached/storage/rackspace.rb
attached-0.6.0 lib/attached/storage/rackspace.rb