Sha256: 8dd0bfeb28684874dbf40d209196a7c9ea0d8a1bdb81c52745322b37113dd659

Contents?: true

Size: 1.99 KB

Versions: 15

Compression:

Stored size: 1.99 KB

Contents

module Heirloom

  class Reader

    def initialize(args)
      @config = args[:config]
      @name = args[:name]
      @domain = "heirloom_#{@name}"
      @id = args[:id]
      @logger = @config.logger
    end

    def exists?
      if domain_exists? && show.any?
        @logger.debug "Found entry for #{@id} in SimpleDB."
        true
      else
        @logger.debug "Entry for #{@id} not found in SimpleDB."
        false
      end
    end

    def regions
      data = show.keys.map do |key|
        key.gsub('-s3-url', '') if key =~ /-s3-url$/
      end
      data.compact
    end

    def get_bucket(args)
      @logger.debug "Looking for bucket in #{args[:region]} for #{@id}"
      url = get_url(args)
      if url
        bucket = url.gsub('s3://', '').split('/').first
        @logger.debug "Found bucket #{bucket}."
        bucket
      else
        @logger.debug "Bucket not found."
        nil
      end
    end

    def get_key(args)
      url = get_url(args)
      if url
        bucket_path = get_bucket :region => args[:region]
        bucket = url.gsub('s3://', '').gsub(bucket_path, '')
        bucket.slice!(0)
        bucket
      else
        nil
      end
    end

    def count
      sdb.count @domain
    end

    def show
      query = sdb.select "select * from `#{@domain}` where itemName() = '#{@id}'"
      items = query[@id] ? query[@id] : {}
      Hash.new.tap do |hash|
        items.each_pair.map do |key,value|
          hash[key] = value.first
        end
      end
    end

    private

    def domain_exists?
      sdb.domain_exists? @domain
    end

    def get_url(args)
      return nil unless exists?
      @logger.debug "Looking for #{args[:region]} endpoint for #{@id}"
      url = "#{args[:region]}-s3-url"
      if show[url]
        @logger.debug "Found #{url} for #{@id}."
        show[url]
      else
        @logger.debug "#{args[:region]} endpoint for #{@id} not found."
        nil
      end
    end

    def sdb
      @sdb ||= AWS::SimpleDB.new :config => @config
    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
heirloom-0.9.0 lib/heirloom/archive/reader.rb
heirloom-0.8.3 lib/heirloom/archive/reader.rb
heirloom-0.8.2 lib/heirloom/archive/reader.rb
heirloom-0.8.1 lib/heirloom/archive/reader.rb
heirloom-0.8.0 lib/heirloom/archive/reader.rb
heirloom-0.7.4 lib/heirloom/archive/reader.rb
heirloom-0.7.3 lib/heirloom/archive/reader.rb
heirloom-0.7.3rc2 lib/heirloom/archive/reader.rb
heirloom-0.7.3rc1 lib/heirloom/archive/reader.rb
heirloom-0.7.2 lib/heirloom/archive/reader.rb
heirloom-0.7.2rc2 lib/heirloom/archive/reader.rb
heirloom-0.7.2rc1 lib/heirloom/archive/reader.rb
heirloom-0.7.1 lib/heirloom/archive/reader.rb
heirloom-0.7.0 lib/heirloom/archive/reader.rb
heirloom-0.7.0rc1 lib/heirloom/archive/reader.rb