Class: CarrierWave::Qiniu::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/carrierwave/qiniu/connection.rb

Constant Summary collapse

StatusOK =
200
@@connection_established =
false

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Connection

Returns a new instance of Connection.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/carrierwave/qiniu/connection.rb', line 10

def initialize(options = {})
  @qiniu_bucket_domain = options[:qiniu_bucket_domain]
  @qiniu_bucket = options[:qiniu_bucket]
  @qiniu_bucket_private = options[:qiniu_bucket_private] || false
  @qiniu_access_key = options[:qiniu_access_key]
  @qiniu_secret_key = options[:qiniu_secret_key]
  @qiniu_block_size = options[:qiniu_block_size] || 1024 * 1024 * 4
  @qiniu_protocol = options[:qiniu_protocol] || "http"
  @qiniu_persistent_ops = options[:qiniu_persistent_ops] || options[:qiniu_async_ops] || ""
  @qiniu_persistent_pipeline = options[:qiniu_persistent_pipeline] || ""
  @qiniu_persistent_notify_url = options[:qiniu_persistent_notify_url] || ""
  @qiniu_can_overwrite = options[:qiniu_can_overwrite] || false
  @qiniu_expires_in = options[:qiniu_expires_in] || options[:expires_in] || 3600
  @qiniu_up_host = options[:qiniu_up_host]
  @qiniu_private_url_expires_in = options[:qiniu_private_url_expires_in] || 3600
  @qiniu_callback_url = options[:qiniu_callback_url] || ""
  @qiniu_callback_body = options[:qiniu_callback_body] || ""
  @qiniu_style_separator = options[:qiniu_style_separator] || "-"
  @qiniu_delete_after_days = options[:qiniu_delete_after_days] || 0
  init
end

Instance Method Details

#copy(origin, target) ⇒ Boolean

复制

Parameters:

  • origin (String)
  • target (String)

Returns:

  • (Boolean)


63
64
65
66
67
68
69
70
71
# File 'lib/carrierwave/qiniu/connection.rb', line 63

def copy(origin, target)
  success = ::Qiniu.copy(
      @qiniu_bucket,
      origin,
      @qiniu_bucket,
      target
  )
  success
end

#delete(key) ⇒ Boolean

删除

Parameters:

  • key (String)

Returns:

  • (Boolean)


94
95
96
97
98
99
100
# File 'lib/carrierwave/qiniu/connection.rb', line 94

def delete(key)
  success = ::Qiniu.delete(
      @qiniu_bucket,
      key
  )
  success
end

#download_url(path) ⇒ Object



120
121
122
123
124
# File 'lib/carrierwave/qiniu/connection.rb', line 120

def download_url(path)
  encode_path = path_escape(path)
  primitive_url = "#{@qiniu_protocol}://#{@qiniu_bucket_domain}/#{encode_path}"
  @qiniu_bucket_private ? ::Qiniu::Auth.authorize_download_url(primitive_url, :expires_in => @qiniu_private_url_expires_in) : primitive_url
end

#get(path) ⇒ Object



115
116
117
118
# File 'lib/carrierwave/qiniu/connection.rb', line 115

def get(path)
  code, result, _ = ::Qiniu::HTTP.get(download_url(path))
  code == 200 ? result : nil
end

#move(origin, target) ⇒ Boolean

移动

Parameters:

  • origin (String)
  • target (String)

Returns:

  • (Boolean)


79
80
81
82
83
84
85
86
87
# File 'lib/carrierwave/qiniu/connection.rb', line 79

def move(origin, target)
  success = ::Qiniu.move(
      @qiniu_bucket,
      origin, # 源资源名
      @qiniu_bucket,
      target # 目标资源名
  )
  success
end

#stat(key) ⇒ Hash

获取文件信息

Parameters:

  • key (String)

Returns:

  • (Hash)


107
108
109
110
111
112
113
# File 'lib/carrierwave/qiniu/connection.rb', line 107

def stat(key)
  info = ::Qiniu.stat(
      @qiniu_bucket, # 存储空间
      key # 资源名
  )
  info
end

#upload_file(file_path, key) ⇒ Object

Raises:

  • (::Qiniu::UploadFailedError)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/carrierwave/qiniu/connection.rb', line 32

def upload_file(file_path, key)
  overwrite_file = nil
  overwrite_file = key if @qiniu_can_overwrite

  put_policy = ::Qiniu::Auth::PutPolicy.new(
      @qiniu_bucket,
      overwrite_file,
      @qiniu_expires_in,
      nil
  )

  put_policy.callback_url = @qiniu_callback_url if @qiniu_callback_url.present?
  put_policy.callback_body = @qiniu_callback_body if @qiniu_callback_body.present?
  put_policy.persistent_ops = @qiniu_persistent_ops
  put_policy.persistent_notify_url = @qiniu_persistent_notify_url if @qiniu_persistent_notify_url.present?
  put_policy.persistent_pipeline = @qiniu_persistent_pipeline

  resp_code, resp_body, resp_headers =
      ::Qiniu::Storage.upload_with_put_policy(put_policy, file_path, key, nil, bucket: @qiniu_bucket)

  raise ::Qiniu::UploadFailedError.new(resp_code, resp_body) if resp_code != StatusOK

  resp_body
end