class Backup::Storage::Qiniu

Attributes

access_key[RW]
access_key_secret[RW]
bucket[RW]
path[RW]

Public Class Methods

new(model, storage_id = nil, &block) click to toggle source
Calls superclass method
# File lib/backup/storage/qiniu.rb, line 10
def initialize(model, storage_id = nil, &block)
  super(model, storage_id)

  @bucket ||= 'backups'
  @path ||= ''

  instance_eval(&block) if block_given?
end

Public Instance Methods

establish_connection!() click to toggle source
# File lib/backup/storage/qiniu.rb, line 49
def establish_connection!
  raise 'access_key is missing' if access_key.nil?
  raise 'access_key_secret is missing' if access_key_secret.nil?
  ::Qiniu.establish_connection! :access_key => access_key, :secret_key => access_key_secret
end
remove!(package) click to toggle source
# File lib/backup/storage/qiniu.rb, line 38
def remove!(package)
  remote_path = remote_path_for(package)
  establish_connection!

  package.filenames.each do |filename|
    dest = File.join(remote_path, filename)
    raise "#{storage_name} delete #{remote_path} failed" unless ::Qiniu.delete(bucket, dest)
  end

end
transfer!() click to toggle source
# File lib/backup/storage/qiniu.rb, line 19
def transfer!
  remote_path = remote_path_for(package)
  establish_connection!

  package.filenames.each do |filename|
    src = File.join(Config.tmp_path, filename)
    dest = File.join(remote_path, filename)

    Logger.info "#{storage_name} uploading '#{ dest }'..."
    upload_token = ::Qiniu.generate_upload_token :scope => bucket
    result = ::Qiniu.upload_file :uptoken => upload_token,
                               :file => src,
                               :bucket => bucket,
                               :key => dest
    raise "#{storage_name} upload #{dest} failed" unless result
  end

end