Sha256: ebdac351b9b029628edc1c64e01ad0e3a2bc2ceaecbc6f046062cf4c270874b3
Contents?: true
Size: 1.65 KB
Versions: 10
Compression:
Stored size: 1.65 KB
Contents
require "qiniu" module Backup module Storage class Qiniu < Base include Storage::Cycler class Error < Backup::Error; end ## # Qiniu API credentials attr_accessor :access_key, :secret_key ## # Qiniu bucket name attr_accessor :bucket def initialize(model, storage_id = nil) super @path ||= "backups" check_configuration config_credentials end private def transfer! package.filenames.each do |filename| src = File.join(Config.tmp_path, filename) dest = File.join(remote_path, filename) Logger.info "Storing '#{dest}'..." ::Qiniu.upload_file(uptoken: ::Qiniu.generate_upload_token, bucket: bucket, file: src, key: dest) end end # Called by the Cycler. # Any error raised will be logged as a warning. def remove!(package) Logger.info "Removing backup package dated #{package.time}..." remote_path = remote_path_for(package) package.filenames.each do |filename| ::Qiniu.delete(bucket, File.join(remote_path, filename)) end end def check_configuration required = %w[access_key secret_key bucket] raise Error, <<-EOS if required.map { |name| send(name) }.any?(&:nil?) Configuration Error #{required.map { |name| "##{name}" }.join(", ")} are all required EOS end def config_credentials ::Qiniu.establish_connection!(access_key: access_key, secret_key: secret_key) end end end end
Version data entries
10 entries across 10 versions & 3 rubygems