Class: Heirloom::Reader
- Inherits:
-
Object
- Object
- Heirloom::Reader
- Defined in:
- lib/heirloom/archive/reader.rb
Instance Method Summary collapse
- #count ⇒ Object
- #exists? ⇒ Boolean
- #get_bucket(args) ⇒ Object
- #get_key(args) ⇒ Object
-
#initialize(args) ⇒ Reader
constructor
A new instance of Reader.
- #key_name ⇒ Object
- #object_acls ⇒ Object
- #regions ⇒ Object
- #show ⇒ Object
Constructor Details
#initialize(args) ⇒ Reader
Returns a new instance of Reader.
5 6 7 8 9 10 11 |
# File 'lib/heirloom/archive/reader.rb', line 5 def initialize(args) @config = args[:config] @name = args[:name] @id = args[:id] @domain = "heirloom_#{@name}" @logger = @config.logger end |
Instance Method Details
#count ⇒ Object
55 56 57 |
# File 'lib/heirloom/archive/reader.rb', line 55 def count sdb.count @domain end |
#exists? ⇒ Boolean
13 14 15 16 17 18 19 20 21 |
# File 'lib/heirloom/archive/reader.rb', line 13 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 |
#get_bucket(args) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/heirloom/archive/reader.rb', line 30 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 |
#get_key(args) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/heirloom/archive/reader.rb', line 43 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 |
#key_name ⇒ Object
91 92 93 |
# File 'lib/heirloom/archive/reader.rb', line 91 def key_name encrypted? ? "#{@id}.tar.gz.gpg" : "#{@id}.tar.gz" end |
#object_acls ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/heirloom/archive/reader.rb', line 69 def object_acls data = {} regions.each do |region| object_name = "#{@name}/#{key_name}" bucket = get_bucket :region => region s3_acl = AWS::S3.new :config => @config, :region => region object_acl = s3_acl.get_object_acl :bucket => bucket, :object_name => object_name object_acl.delete "Owner" output = object_acl["AccessControlList"].map do |x| "#{x["Grantee"]["DisplayName"]}:#{x["Permission"]}".downcase end data.merge!"#{region}-permissions" => output.join(', ') end data end |
#regions ⇒ Object
23 24 25 26 27 28 |
# File 'lib/heirloom/archive/reader.rb', line 23 def regions data = show.keys.map do |key| key.gsub('-s3-url', '') if key =~ /-s3-url$/ end data.compact end |
#show ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/heirloom/archive/reader.rb', line 59 def show query = sdb.select "select * from `#{@domain}` where itemName() = '#{@id}'" items = query[@id] ? query[@id] : {} data = Hash.new.tap do |hash| items.each_pair.map do |key,value| hash[key] = value.first end end end |