class QiniuDirectUploader::Uploader

Public Class Methods

new(options) click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 4
def initialize(options)
  @options = options.reverse_merge(
    expires_in:         360,
    ssl:                false,
    custom_fields:      {},
    submit_button_id:   nil,
    progress_bar_id:    nil,
    drop_paste_zone_id: nil,
    callback_method:    "POST"
  )
end

Public Instance Methods

action() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 49
def action
  @options[:action] || default_upload_url
end
custom_fields() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 40
def custom_fields
  @options[:custom_fields]
end
fields() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 33
def fields
  the_fields = {}
  the_fields[:token] = @options[:token] || token
  the_fields[:key] = @options[:key] if @options[:key]
  the_fields
end
form_options() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 16
def form_options
  {
    id:                 @options[:id],
    class:              @options[:class],
    method:             "post",
    authenticity_token: false,
    multipart:          true,
    data: {
      callback_url:     @options[:callback_url],
      callback_method:  @options[:callback_method],
      submit_button_id: @options[:submit_button_id],
      drop_paste_zone_id: @options[:drop_paste_zone_id],
      progress_bar_id:  @options[:progress_bar_id]
    }.reverse_merge(@options[:data] || {})
  }
end
return_body() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 53
def return_body
  fields_array = []
  fields_array.push '"etag": $(etag)'
  fields_array.push '"fname": $(fname)'
  fields_array.push '"fsize": $(fsize)'
  fields_array.push '"mimeType": $(mimeType)'
  fields_array.push '"imageInfo": $(imageInfo)'
  fields_array.push '"exif": $(exif)'
  fields_array.push '"endUser": $(endUser)'
  fields_array.push '"key": $(key)'

  custom_fields_array = []
  @options[:custom_fields].each do |k,v|
    custom_fields_array.push '"' + k.to_s + '": $(x:'+ k.to_s + ')'
  end
  custom_fields_json = '"custom_fields": {' + custom_fields_array.join(',') + '}'

  fields_array.push custom_fields_json

  '{'+ fields_array.join(',') +'}'
end
save_key() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 44
def save_key
  return @options[:save_key] if @options[:save_key]
  "uploads/$(year)/$(mon)/$(day)/$(etag)/$(fname)"
end
token() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 75
def token
  put_policy = Qiniu::Auth::PutPolicy.new( @options[:bucket], @options[:key], @options[:expires_in], nil )
  put_policy.return_body = return_body
  put_policy.save_key = save_key
  put_policy.end_user = @options[:customer] if @options[:customer]

  Qiniu::Auth.generate_uptoken(put_policy)
end

Private Instance Methods

default_upload_url() click to toggle source
# File lib/qiniu_direct_uploader/uploader.rb, line 86
def default_upload_url
  if @options[:ssl]
    "https://up.qbox.me"
  else
    "http://up.qiniu.com"
  end
end