class Backup::CloudIO::QiNiu

Attributes

access_key[R]
bucket[R]
expires_in[R]
secret_key[R]
uptoken[R]

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method Backup::CloudIO::Base::new
# File lib/backup/cloud_io/qi_niu.rb, line 33
def initialize(options = {})
  super

  @access_key = options[:access_key]
  @secret_key = options[:secret_key]
  @bucket     = options[:bucket]
  @expires_in = options[:expires_in] || 31536000 # 3600*24*365

  establish_connection!
end

Public Instance Methods

delete(objects) click to toggle source
# File lib/backup/cloud_io/qi_niu.rb, line 59
def delete(objects)
  Logger.info "\s\sDeleting from Qiniu..."
  with_retries("DELETE objects") do
    objects.each do |object|
      wrap_results Qiniu::Storage.delete(bucket, object['key']),
        success_info: "\s\sDelete #{object['key']} success",
        fail_info: "Delete #{object['key']} from Qiniu failed!"
    end
  end
end
objects(remote_path) click to toggle source
# File lib/backup/cloud_io/qi_niu.rb, line 54
def objects(remote_path)
  _, result, _ = Qiniu::Storage.list(bucket, remote_path)
  result['items']
end
upload(src, dest) click to toggle source
# File lib/backup/cloud_io/qi_niu.rb, line 44
def upload(src, dest)
  Logger.info "\s\sUploading #{src} to Qiniu..."
  put_policy = Qiniu::Auth::PutPolicy.new(bucket, nil, expires_in)
  with_retries("Upload with put policy") do
    wrap_results Qiniu::Storage.upload_with_put_policy(put_policy, src, dest),
      success_info: "\s\sUpload to Qiniu success",
      fail_info: 'Upload to Qiniu failed!'
  end
end

Private Instance Methods

establish_connection!() click to toggle source
# File lib/backup/cloud_io/qi_niu.rb, line 72
def establish_connection!
  Qiniu.establish_connection! access_key: access_key, secret_key: secret_key
end
wrap_results(results, options = {}) click to toggle source
# File lib/backup/cloud_io/qi_niu.rb, line 76
        def wrap_results(results, options = {})
          code, result, response_headers = results
          if code == 200
            Logger.info options[:success_info]
            Logger.info result
          else
            Logger.error Error.new(<<-EOS)
              #{Logger.info options[:fail_info]}
              code: #{code}
              result: #{result}
              headers: #{response_headers}
            EOS
          end
        end