Sha256: 6be7a74273676908807b0550895c4ddebc16964cddfa8d5768749a515788ce80

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

require 'aws/s3'

module PictureSafe
  
  class << self
    
    def backup(home_directory)
      puts "Starting Backup!"
      
      pictures = Dir.glob([home_directory, ENV['PHOTO_ROOT'], '**/*.jpg'].join('/'))
      
      changes = pictures - pictures_in_safe
      
            
      changes.each_with_index do |photo, index|
        store photo
        puts "Stored #{photo}"
        puts "Completed #{index + 1} of #{changes.length}"
      end
      "Finished Backup!"
    end
    
    def pictures_in_safe
      get_conn
      pictures = []
      get_bucket.objects.each do |s3object|
        pictures << "/" + s3object.key
      end
      pictures
    end
    
    def store(filename)
      AWS::S3::S3Object.store(filename, open(filename, "rb"), ENV['PHOTO_BUCKET'], :access => :public_read)
    end
    
    def get_conn
      AWS::S3::Base.establish_connection!(
        :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
        :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
      )    
    end
    
    
    def get_bucket
      AWS::S3::Bucket.create(ENV['PHOTO_BUCKET'])
      AWS::S3::Bucket.find(ENV['PHOTO_BUCKET'])
    end
    
    def s3_list
      get_conn
      
      old = []

      bucket = AWS::S3::Bucket.find(get_bucket)

      # Get Old List from S3?
      pic_list = bucket.objects

      pic_list.each do |item|
        old << item.value
      end

      old      
    end
    
    def s3_store(filename)
      AWS::S3::S3Object.store(
        file_name,
        open(file_name, "rb"),
        get_bucket,
        :access => :public_read
      )
    end
    
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
twilson63-picture-safe-0.0.3 lib/picture-safe.rb
twilson63-picture-safe-0.0.4 lib/picture-safe.rb