lib/backup/storage/aliyun.rb in backup-aliyun-0.1.1 vs lib/backup/storage/aliyun.rb in backup-aliyun-0.2.0
- old
+ new
@@ -1,50 +1,49 @@
-require "carrierwave-aliyun"
-require "base64"
+require 'aliyun/oss'
module Backup
module Storage
class Aliyun < Base
- attr_accessor :bucket,:access_key_id,:access_key_secret,:aliyun_internal, :path
-
+ attr_accessor :bucket, :area, :access_key_id, :access_key_secret, :path
+
def initialize(model, storage_id = nil, &block)
super(model, storage_id)
@path ||= 'backups'
+ @area ||= 'cn-hangzhou'
instance_eval(&block) if block_given?
end
-
+
private
-
- def connection
- return @connection if @connection
+
+ def client
+ return @client if defined? @client
opts = {
- :aliyun_access_id => self.access_key_id,
- :aliyun_access_key => self.access_key_secret,
- :aliyun_bucket => self.bucket,
- :aliyun_internal => self.aliyun_internal || false
+ host: "oss-#{self.area}.aliyuncs.com",
+ bucket: self.bucket
}
- @connection = CarrierWave::Storage::Aliyun::Connection.new(opts)
+ @client = ::Aliyun::Oss::Client.new(self.access_key_id, self.access_key_secret, opts)
+ @client
end
-
+
def transfer!
remote_path = remote_path_for(@package)
@package.filenames.each do |filename|
src = File.join(Config.tmp_path, filename)
dest = File.join(remote_path, filename)
Logger.info "#{storage_name} uploading '#{ dest }'..."
File.open(src, 'r') do |file|
- connection.put(dest, file)
+ client.bucket_create_object(dest, file, {})
end
end
end
-
+
def remove!(package)
remote_path = remote_path_for(package)
Logger.info "#{storage_name} removing '#{remote_path}'..."
- connection.delete(remote_path)
+ client.bucket_delete_object(remote_path)
end
end
end
end