qinium 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -3
- data/lib/qinium/auth.rb +45 -0
- data/lib/qinium/client.rb +1 -12
- data/lib/qinium/config.rb +1 -1
- data/lib/qinium/host_manager.rb +1 -1
- data/lib/qinium/utils.rb +1 -1
- data/lib/qinium/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1882ca15da2a4be5ef0fd71015e167d3e5c1803bd8be620aebf092407604fc14
|
4
|
+
data.tar.gz: 5ba5f38fdde0eeede9f67cad0405b5cf4cc92a5d457b45c73194e3c569369869
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eab9765b2a129823cdf304e3848b6137119bc04b866fa2dd3a3269ba28659d3d8e47ff9bde86488defe2fc2f5b719d18ef71429cd8af3c88f58774802bf40e98
|
7
|
+
data.tar.gz: f74c6321970f164702754a4ba9a512898c83da2528824d487644c5536aebbeaa6e010a709d5069beb43814a419fe3035e07e41d1fb5bb921d69bf3b6a3624cd9
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Qinium
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Qiniu Cloud Storage SDK for Ruby, support multiple configure for SaaS product.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
data/lib/qinium/auth.rb
CHANGED
@@ -32,5 +32,50 @@ class Qinium
|
|
32
32
|
sign = calculate_hmac_sha1_digest(secret_key, signing_str)
|
33
33
|
Utils.urlsafe_base64_encode(sign)
|
34
34
|
end
|
35
|
+
|
36
|
+
def authorize_download_url(domain, key, access_key, secret_key, args = {})
|
37
|
+
url_encoded_key = CGI::escape(key)
|
38
|
+
schema = args[:schema] || "http"
|
39
|
+
port = args[:port]
|
40
|
+
|
41
|
+
if port.nil? then
|
42
|
+
download_url = "#{schema}://#{domain}/#{url_encoded_key}"
|
43
|
+
else
|
44
|
+
download_url = "#{schema}://#{domain}:#{port}/#{url_encoded_key}"
|
45
|
+
end
|
46
|
+
|
47
|
+
### URL变换:追加FOP指令
|
48
|
+
if args[:fop].is_a?(String) && args[:fop] != '' then
|
49
|
+
if download_url.include?('?')
|
50
|
+
# 已有参数
|
51
|
+
download_url = "#{download_url}&#{args[:fop]}"
|
52
|
+
else
|
53
|
+
# 尚无参数
|
54
|
+
download_url = "#{download_url}?#{args[:fop]}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
### 授权期计算
|
59
|
+
e = Time.now.to_i + args[:expires_in]
|
60
|
+
|
61
|
+
### URL变换:追加授权期参数
|
62
|
+
if download_url.include?('?')
|
63
|
+
# 已有参数
|
64
|
+
download_url = "#{download_url}&e=#{e}"
|
65
|
+
else
|
66
|
+
# 尚无参数
|
67
|
+
download_url = "#{download_url}?e=#{e}"
|
68
|
+
end
|
69
|
+
|
70
|
+
### 生成数字签名
|
71
|
+
sign = calculate_hmac_sha1_digest(secret_key, download_url)
|
72
|
+
encoded_sign = Utils.urlsafe_base64_encode(sign)
|
73
|
+
|
74
|
+
### 生成下载授权凭证
|
75
|
+
dntoken = "#{access_key}:#{encoded_sign}"
|
76
|
+
|
77
|
+
### 返回下载授权URL
|
78
|
+
"#{download_url}&token=#{dntoken}"
|
79
|
+
end
|
35
80
|
end
|
36
81
|
end
|
data/lib/qinium/client.rb
CHANGED
@@ -73,7 +73,7 @@ class Qinium
|
|
73
73
|
end
|
74
74
|
|
75
75
|
logger.debug "POST #{uri}"
|
76
|
-
logger.debug " body: #{req_body[0, 50]}"
|
76
|
+
logger.debug " body: #{req_body[0, 50]}" if req_body.is_a?(String)
|
77
77
|
logger.debug " headers: #{opts.to_json}"
|
78
78
|
|
79
79
|
req = Net::HTTP::Post.new(uri)
|
@@ -123,16 +123,5 @@ class Qinium
|
|
123
123
|
def success?(http_code)
|
124
124
|
self.class.success?(http_code)
|
125
125
|
end
|
126
|
-
|
127
|
-
def self.to_query(params)
|
128
|
-
if params.is_a?(Hash)
|
129
|
-
total_param = params.map do |key, value|
|
130
|
-
%(#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s).gsub("+", "%20")})
|
131
|
-
end
|
132
|
-
return total_param.join("&")
|
133
|
-
end
|
134
|
-
|
135
|
-
params
|
136
|
-
end
|
137
126
|
end
|
138
127
|
end
|
data/lib/qinium/config.rb
CHANGED
data/lib/qinium/host_manager.rb
CHANGED
@@ -64,7 +64,7 @@ class Qinium
|
|
64
64
|
raise Error, "bucket is missing" if Utils.blank?(bucket)
|
65
65
|
|
66
66
|
cache.read(access_key, bucket) do
|
67
|
-
query =
|
67
|
+
query = Utils.to_query_string(ak: access_key, bucket: bucket)
|
68
68
|
url = "#{config.uc_host}/v1/query?#{query}"
|
69
69
|
http = Client.new(config)
|
70
70
|
code, body, headers = http.get(url)
|
data/lib/qinium/utils.rb
CHANGED
data/lib/qinium/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qinium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xiaohui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Qiniu Cloud Storage SDK for multi-tenant system, can call API with multiple
|
14
14
|
accounts
|
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
|
-
rubygems_version: 3.
|
64
|
+
rubygems_version: 3.4.19
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: Qiniu Cloud Storage SDK for multi-tenant system
|