Class: QiniuMiniSdk::Policy

Inherits:
Object
  • Object
show all
Defined in:
lib/qiniu_mini_sdk/policy.rb

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Policy

Returns a new instance of Policy.



9
10
11
12
13
14
15
# File 'lib/qiniu_mini_sdk/policy.rb', line 9

def initialize args={}
  @params = {}
  args.each do |k, v|
    self.send "#{k}=", v
  end
  default
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &blk) ⇒ Object



41
42
43
44
45
# File 'lib/qiniu_mini_sdk/policy.rb', line 41

def method_missing(meth, *args, &blk)
  if meth =~ /(.+)=/
    @params[$1.to_s] = args.first
  end
end

Instance Method Details

#bucket=(bucket) ⇒ Object



21
22
23
# File 'lib/qiniu_mini_sdk/policy.rb', line 21

def bucket=(bucket)
  @bucket = bucket
end

#expires_in=(time) ⇒ Object



25
26
27
# File 'lib/qiniu_mini_sdk/policy.rb', line 25

def expires_in=(time)
  @params[:deadline] = Time.now.to_i + time
end

#key=(key) ⇒ Object



17
18
19
# File 'lib/qiniu_mini_sdk/policy.rb', line 17

def key=(key)
  @key = key
end

#to_jsonObject



47
48
49
50
51
# File 'lib/qiniu_mini_sdk/policy.rb', line 47

def to_json
  JSON.generate @params.map {|k, v|
    [change_key(k.to_s), v]
  }.to_h
end

#uptokenObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/qiniu_mini_sdk/policy.rb', line 29

def uptoken
  access_key = QiniuMiniSdk.access_key
  secret_key = QiniuMiniSdk.secret_key

  encoded_put_policy = urlsafe_base64_encode(self.to_json)
  digest = OpenSSL::Digest.new('sha1')
  sign = OpenSSL::HMAC.digest(digest, secret_key, encoded_put_policy)
  encoded_sign = urlsafe_base64_encode(sign)

  "#{access_key}:#{encoded_sign}:#{encoded_put_policy}"
end