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

Version Path
backup-5.0.0.beta.3 lib/backup/storage/qiniu.rb
backedup-5.0.0.beta.5 lib/backup/storage/qiniu.rb
backedup-5.0.0.beta.4 lib/backup/storage/qiniu.rb
backedup-5.0.0.beta.3 lib/backup/storage/qiniu.rb
ext_backup-5.0.0.beta.2.1 lib/backup/storage/qiniu.rb
ext_backup-5.0.0.beta.2.ext.0.1.2 lib/backup/storage/qiniu.rb
ext_backup-5.0.0.beta.2.ext.0.1.1 lib/backup/storage/qiniu.rb
ext_backup-5.0.0.beta.2.ext.0.1.0 lib/backup/storage/qiniu.rb
backup-5.0.0.beta.2 lib/backup/storage/qiniu.rb
backup-5.0.0.beta.1 lib/backup/storage/qiniu.rb