aliyun-sdk 0.4.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +25 -0
- data/README.md +174 -172
- data/examples/aliyun/oss/bucket.rb +0 -0
- data/examples/aliyun/oss/callback.rb +0 -0
- data/examples/aliyun/oss/object.rb +0 -0
- data/examples/aliyun/oss/resumable_download.rb +0 -0
- data/examples/aliyun/oss/resumable_upload.rb +0 -0
- data/examples/aliyun/oss/streaming.rb +0 -0
- data/examples/aliyun/oss/using_sts.rb +0 -0
- data/examples/aliyun/sts/assume_role.rb +0 -0
- data/ext/crcx/crc64_ecma.c +270 -0
- data/ext/crcx/crcx.c +45 -0
- data/ext/crcx/crcx.h +8 -0
- data/ext/crcx/extconf.rb +3 -0
- data/lib/aliyun/common.rb +0 -0
- data/lib/aliyun/common/exception.rb +0 -0
- data/lib/aliyun/common/logging.rb +6 -1
- data/lib/aliyun/common/struct.rb +0 -0
- data/lib/aliyun/oss.rb +1 -0
- data/lib/aliyun/oss/bucket.rb +41 -33
- data/lib/aliyun/oss/client.rb +10 -2
- data/lib/aliyun/oss/config.rb +4 -1
- data/lib/aliyun/oss/download.rb +2 -2
- data/lib/aliyun/oss/exception.rb +6 -0
- data/lib/aliyun/oss/http.rb +32 -48
- data/lib/aliyun/oss/iterator.rb +0 -0
- data/lib/aliyun/oss/multipart.rb +1 -1
- data/lib/aliyun/oss/object.rb +0 -0
- data/lib/aliyun/oss/protocol.rb +68 -8
- data/lib/aliyun/oss/struct.rb +2 -2
- data/lib/aliyun/oss/upload.rb +0 -0
- data/lib/aliyun/oss/util.rb +25 -1
- data/lib/aliyun/sts.rb +0 -0
- data/lib/aliyun/sts/client.rb +1 -1
- data/lib/aliyun/sts/config.rb +0 -0
- data/lib/aliyun/sts/exception.rb +0 -0
- data/lib/aliyun/sts/protocol.rb +3 -3
- data/lib/aliyun/sts/struct.rb +0 -0
- data/lib/aliyun/sts/util.rb +0 -0
- data/lib/aliyun/version.rb +1 -1
- data/spec/aliyun/oss/bucket_spec.rb +194 -18
- data/spec/aliyun/oss/client/bucket_spec.rb +342 -30
- data/spec/aliyun/oss/client/client_spec.rb +26 -1
- data/spec/aliyun/oss/client/resumable_download_spec.rb +0 -0
- data/spec/aliyun/oss/client/resumable_upload_spec.rb +0 -0
- data/spec/aliyun/oss/http_spec.rb +26 -0
- data/spec/aliyun/oss/multipart_spec.rb +53 -8
- data/spec/aliyun/oss/object_spec.rb +256 -10
- data/spec/aliyun/oss/service_spec.rb +0 -0
- data/spec/aliyun/oss/util_spec.rb +101 -0
- data/spec/aliyun/sts/client_spec.rb +0 -0
- data/spec/aliyun/sts/util_spec.rb +0 -0
- data/tests/config.rb +2 -0
- data/tests/helper.rb +15 -0
- data/tests/test_content_encoding.rb +0 -0
- data/tests/test_content_type.rb +0 -0
- data/tests/test_crc_check.rb +184 -0
- data/tests/test_custom_headers.rb +14 -6
- data/tests/test_encoding.rb +0 -0
- data/tests/test_large_file.rb +0 -0
- data/tests/test_multipart.rb +0 -0
- data/tests/test_object_acl.rb +0 -0
- data/tests/test_object_key.rb +18 -0
- data/tests/test_object_url.rb +20 -0
- data/tests/test_resumable.rb +0 -0
- metadata +33 -12
File without changes
|
@@ -44,6 +44,107 @@ module Aliyun
|
|
44
44
|
expect(signature).to eq("7Oh2wobzeg6dw/cWYbF/2m6s6qc=")
|
45
45
|
end
|
46
46
|
|
47
|
+
# 测试CRC计算是否正确
|
48
|
+
it "should calculate a correct data crc" do
|
49
|
+
content = ""
|
50
|
+
crc = Util.crc(content)
|
51
|
+
expect(crc).to eq(0)
|
52
|
+
|
53
|
+
content = "hello world"
|
54
|
+
crc = Util.crc(content)
|
55
|
+
expect(crc).to eq(5981764153023615706)
|
56
|
+
|
57
|
+
content = "test\0hello\1world\2!\3"
|
58
|
+
crc = Util.crc(content)
|
59
|
+
expect(crc).to eq(6745424696046691431)
|
60
|
+
end
|
61
|
+
|
62
|
+
# 测试CRC Combine计算是否正确
|
63
|
+
it "should calculate a correct crc that crc_a combine with crc_b" do
|
64
|
+
content_a = "test\0hello\1world\2!\3"
|
65
|
+
crc_a = Util.crc(content_a)
|
66
|
+
expect(crc_a).to eq(6745424696046691431)
|
67
|
+
|
68
|
+
content_b = "hello world"
|
69
|
+
crc_b = Util.crc(content_b)
|
70
|
+
expect(crc_b).to eq(5981764153023615706)
|
71
|
+
|
72
|
+
crc_c = Util.crc_combine(crc_a, crc_b, content_b.size)
|
73
|
+
expect(crc_c).to eq(13027479509578346683)
|
74
|
+
|
75
|
+
crc_ab = Util.crc(content_a + content_b)
|
76
|
+
expect(crc_ab).to eq(crc_c)
|
77
|
+
|
78
|
+
crc_ab = Util.crc(content_b, crc_a)
|
79
|
+
expect(crc_ab).to eq(crc_c)
|
80
|
+
end
|
81
|
+
|
82
|
+
# 测试CRC校验和异常处理是否正确
|
83
|
+
it "should check inconsistent crc" do
|
84
|
+
expect {
|
85
|
+
Util.crc_check(6745424696046691431, 6745424696046691431, 'put')
|
86
|
+
}.not_to raise_error
|
87
|
+
|
88
|
+
expect {
|
89
|
+
Util.crc_check(6745424696046691431, 5981764153023615706, 'append')
|
90
|
+
}.to raise_error(CrcInconsistentError, "The crc of append between client and oss is not inconsistent.")
|
91
|
+
|
92
|
+
expect {
|
93
|
+
Util.crc_check(6745424696046691431, -1, 'post')
|
94
|
+
}.to raise_error(CrcInconsistentError, "The crc of post between client and oss is not inconsistent.")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should check bucket name valid" do
|
98
|
+
expect {
|
99
|
+
Util.ensure_bucket_name_valid('abc')
|
100
|
+
}.not_to raise_error
|
101
|
+
|
102
|
+
expect {
|
103
|
+
Util.ensure_bucket_name_valid('abc123-321cba')
|
104
|
+
}.not_to raise_error
|
105
|
+
|
106
|
+
expect {
|
107
|
+
Util.ensure_bucket_name_valid('abcdefghijklmnopqrstuvwxyz1234567890-0987654321zyxwuvtsrqponmlk')
|
108
|
+
}.not_to raise_error
|
109
|
+
|
110
|
+
#>63
|
111
|
+
expect {
|
112
|
+
Util.ensure_bucket_name_valid('abcdefghijklmnopqrstuvwxyz1234567890-0987654321zyxwuvtsrqponmlkj')
|
113
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
114
|
+
|
115
|
+
#<3
|
116
|
+
expect {
|
117
|
+
Util.ensure_bucket_name_valid('12')
|
118
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
119
|
+
|
120
|
+
#not [a-z0-9-]
|
121
|
+
expect {
|
122
|
+
Util.ensure_bucket_name_valid('Aabc')
|
123
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
124
|
+
|
125
|
+
expect {
|
126
|
+
Util.ensure_bucket_name_valid('abc/')
|
127
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
128
|
+
|
129
|
+
expect {
|
130
|
+
Util.ensure_bucket_name_valid('abc#')
|
131
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
132
|
+
|
133
|
+
expect {
|
134
|
+
Util.ensure_bucket_name_valid('abc?')
|
135
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
136
|
+
|
137
|
+
#start & end not -
|
138
|
+
expect {
|
139
|
+
Util.ensure_bucket_name_valid('-abc')
|
140
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
141
|
+
|
142
|
+
expect {
|
143
|
+
Util.ensure_bucket_name_valid('abc-')
|
144
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
145
|
+
|
146
|
+
end
|
147
|
+
|
47
148
|
end # Util
|
48
149
|
|
49
150
|
end # OSS
|
File without changes
|
File without changes
|
data/tests/config.rb
CHANGED
@@ -4,6 +4,8 @@ class TestConf
|
|
4
4
|
{
|
5
5
|
access_key_id: ENV['RUBY_SDK_OSS_ID'],
|
6
6
|
access_key_secret: ENV['RUBY_SDK_OSS_KEY'],
|
7
|
+
download_crc_enable: ENV['RUBY_SDK_OSS_DOWNLOAD_CRC_ENABLE'],
|
8
|
+
upload_crc_enable: ENV['RUBY_SDK_OSS_UPLOAD_CRC_ENABLE'],
|
7
9
|
endpoint: ENV['RUBY_SDK_OSS_ENDPOINT']
|
8
10
|
}
|
9
11
|
end
|
data/tests/helper.rb
ADDED
File without changes
|
data/tests/test_content_type.rb
CHANGED
File without changes
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'yaml'
|
3
|
+
require 'tempfile'
|
4
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
5
|
+
require 'aliyun/oss'
|
6
|
+
require_relative 'config'
|
7
|
+
require_relative 'helper'
|
8
|
+
|
9
|
+
class TestCrcCheck < Minitest::Test
|
10
|
+
|
11
|
+
include Aliyun::Test::Helper
|
12
|
+
|
13
|
+
@@tests_run = 0
|
14
|
+
@@test_file = nil
|
15
|
+
|
16
|
+
def setup
|
17
|
+
Aliyun::Common::Logging.set_log_level(Logger::DEBUG)
|
18
|
+
client = Aliyun::OSS::Client.new(TestConf.creds)
|
19
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
20
|
+
@prefix = 'tests/crc_check/'
|
21
|
+
|
22
|
+
if @@tests_run == 0
|
23
|
+
@@test_file = Tempfile.new('oss_ruby_sdk_test_crc')
|
24
|
+
(10 * 1024).times { @@test_file.write(random_bytes(1024)) }
|
25
|
+
end
|
26
|
+
@@tests_run += 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def teardown
|
30
|
+
if @@tests_run == TestCrcCheck.runnable_methods.length
|
31
|
+
@@test_file.unlink unless @@test_file.nil?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_key(k)
|
36
|
+
@prefix + k
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_put_object
|
40
|
+
skip unless TestConf.creds[:upload_crc_enable]
|
41
|
+
|
42
|
+
# Check crc status
|
43
|
+
assert(@bucket.upload_crc_enable)
|
44
|
+
|
45
|
+
# Create a test file with 10MB random bytes to put.
|
46
|
+
key = get_key('put_file')
|
47
|
+
|
48
|
+
@bucket.put_object(key, :file => @@test_file.path)
|
49
|
+
test_object = @bucket.get_object(key)
|
50
|
+
assert_equal(test_object.size, 10 * 1024 * 1024)
|
51
|
+
|
52
|
+
# Check crc wrong case.
|
53
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
54
|
+
@bucket.put_object(key, {:init_crc => 1, :file => @@test_file.path}) do |content|
|
55
|
+
content << 'hello world.'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Put a string to oss.
|
60
|
+
key = get_key('put_string')
|
61
|
+
@bucket.put_object(key, :init_crc => 0) do |content|
|
62
|
+
content << 'hello world.'
|
63
|
+
end
|
64
|
+
test_object = @bucket.get_object(key)
|
65
|
+
assert_equal(test_object.size, 'hello world.'.size)
|
66
|
+
|
67
|
+
# Check crc wrong case.
|
68
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
69
|
+
@bucket.put_object(key, :init_crc => 1) do |content|
|
70
|
+
content << 'hello world.'
|
71
|
+
end
|
72
|
+
end
|
73
|
+
ensure
|
74
|
+
@bucket.delete_object(key)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_append_object
|
78
|
+
skip unless TestConf.creds[:upload_crc_enable]
|
79
|
+
key = get_key('append_file')
|
80
|
+
|
81
|
+
# Check crc status
|
82
|
+
assert(@bucket.upload_crc_enable)
|
83
|
+
|
84
|
+
# Check $key object doesn't exist.
|
85
|
+
test_object = @bucket.get_object(key) rescue 0
|
86
|
+
@bucket.delete_object(key) if test_object.size
|
87
|
+
|
88
|
+
# Create a append object to oss with a string.
|
89
|
+
position = @bucket.append_object(key, 0, :init_crc => 0) do |content|
|
90
|
+
content << 'hello world.'
|
91
|
+
end
|
92
|
+
test_object = @bucket.get_object(key)
|
93
|
+
assert_equal(test_object.size, 'hello world.'.size)
|
94
|
+
|
95
|
+
# Append a test file to oss $key object.
|
96
|
+
@bucket.append_object(key, position, {:init_crc => test_object.headers[:x_oss_hash_crc64ecma], :file => @@test_file.path})
|
97
|
+
test_object = @bucket.get_object(key)
|
98
|
+
assert_equal(test_object.size, 'hello world.'.size + (10 * 1024 * 1024))
|
99
|
+
|
100
|
+
# No crc check when init_crc is nil
|
101
|
+
position = @bucket.append_object(key, test_object.size) do |content|
|
102
|
+
content << 'hello world.'
|
103
|
+
end
|
104
|
+
test_object = @bucket.get_object(key)
|
105
|
+
assert_equal(test_object.size, 'hello world.'.size * 2 + (10 * 1024 * 1024))
|
106
|
+
|
107
|
+
# Check crc wrong case.
|
108
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
109
|
+
position = @bucket.append_object(key, test_object.size, :init_crc => 0) do |content|
|
110
|
+
content << 'hello world.'
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
# Check crc wrong case.
|
115
|
+
test_object = @bucket.get_object(key)
|
116
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
117
|
+
@bucket.append_object(key, test_object.size, {:init_crc => 0, :file => @@test_file.path})
|
118
|
+
end
|
119
|
+
ensure
|
120
|
+
@bucket.delete_object(key)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_upload_object
|
124
|
+
skip unless TestConf.creds[:upload_crc_enable]
|
125
|
+
key = get_key('upload_file')
|
126
|
+
|
127
|
+
# Check crc status
|
128
|
+
assert(@bucket.upload_crc_enable)
|
129
|
+
@bucket.resumable_upload(key, @@test_file.path, :cpt_file => "#{@@test_file.path}.cpt", threads: 2, :part_size => 1024 * 1024)
|
130
|
+
|
131
|
+
test_object = @bucket.get_object(key)
|
132
|
+
assert_equal(test_object.size, (10 * 1024 * 1024))
|
133
|
+
|
134
|
+
ensure
|
135
|
+
@bucket.delete_object(key)
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_get_small_object
|
139
|
+
skip unless TestConf.creds[:download_crc_enable]
|
140
|
+
|
141
|
+
# Check crc status
|
142
|
+
assert(@bucket.download_crc_enable)
|
143
|
+
|
144
|
+
# Put a string to oss.
|
145
|
+
key = get_key('get_small_object')
|
146
|
+
@bucket.put_object(key) do |content|
|
147
|
+
content << 'hello world.'
|
148
|
+
end
|
149
|
+
temp_buf = ""
|
150
|
+
test_object = @bucket.get_object(key) { |c| temp_buf << c }
|
151
|
+
assert_equal(test_object.size, 'hello world.'.size)
|
152
|
+
|
153
|
+
# Check crc wrong case.
|
154
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
155
|
+
@bucket.get_object(key, {:init_crc => 1}) { |c| temp_buf << c }
|
156
|
+
end
|
157
|
+
ensure
|
158
|
+
@bucket.delete_object(key)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_get_large_object
|
162
|
+
skip unless TestConf.creds[:download_crc_enable]
|
163
|
+
|
164
|
+
# Check crc status
|
165
|
+
assert(@bucket.download_crc_enable)
|
166
|
+
|
167
|
+
# put a test file with 10MB random bytes to oss for testing get.
|
168
|
+
key = get_key('get_file')
|
169
|
+
@bucket.put_object(key, :file => @@test_file.path)
|
170
|
+
|
171
|
+
get_temp_file = Tempfile.new('oss_ruby_sdk_test_crc_get')
|
172
|
+
test_object = @bucket.get_object(key, {:file => get_temp_file})
|
173
|
+
assert_equal(test_object.size, 10 * 1024 * 1024)
|
174
|
+
|
175
|
+
# Check crc wrong case.
|
176
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
177
|
+
@bucket.get_object(key, {:file => get_temp_file, :init_crc => 1})
|
178
|
+
end
|
179
|
+
ensure
|
180
|
+
get_temp_file.unlink unless get_temp_file.nil?
|
181
|
+
@bucket.delete_object(key)
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
@@ -36,6 +36,7 @@ class TestCustomHeaders < Minitest::Test
|
|
36
36
|
|
37
37
|
content_encoding = 'deflate'
|
38
38
|
expires = (Time.now + 3600).httpdate
|
39
|
+
|
39
40
|
@bucket.put_object(
|
40
41
|
key,
|
41
42
|
headers: {'cache-control' => cache_control,
|
@@ -46,12 +47,19 @@ class TestCustomHeaders < Minitest::Test
|
|
46
47
|
end
|
47
48
|
|
48
49
|
content = ''
|
49
|
-
obj =
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
obj = nil
|
51
|
+
if @bucket.download_crc_enable
|
52
|
+
assert_raises Aliyun::OSS::CrcInconsistentError do
|
53
|
+
obj = @bucket.get_object(key) { |c| content << c }
|
54
|
+
end
|
55
|
+
else
|
56
|
+
obj = @bucket.get_object(key) { |c| content << c }
|
57
|
+
assert_equal 'hello world', content
|
58
|
+
assert_equal cache_control, obj.headers[:cache_control]
|
59
|
+
assert_equal content_disposition, obj.headers[:content_disposition]
|
60
|
+
assert_equal content_encoding, obj.headers[:content_encoding]
|
61
|
+
assert_equal expires, obj.headers[:expires]
|
62
|
+
end
|
55
63
|
end
|
56
64
|
|
57
65
|
def test_headers_overwrite
|
data/tests/test_encoding.rb
CHANGED
File without changes
|
data/tests/test_large_file.rb
CHANGED
File without changes
|
data/tests/test_multipart.rb
CHANGED
File without changes
|
data/tests/test_object_acl.rb
CHANGED
File without changes
|
data/tests/test_object_key.rb
CHANGED
@@ -17,6 +17,8 @@ class TestObjectKey < Minitest::Test
|
|
17
17
|
chinese: '杭州・中国',
|
18
18
|
space: '是 空格 yeah +-/\\&*#',
|
19
19
|
invisible: '' << 1 << 10 << 12 << 7 << 80 << 99,
|
20
|
+
specail1: 'testkey/',
|
21
|
+
specail2: 'testkey/?key=value#abc=def',
|
20
22
|
xml: 'a<b&c>d +'
|
21
23
|
}
|
22
24
|
end
|
@@ -57,6 +59,22 @@ class TestObjectKey < Minitest::Test
|
|
57
59
|
assert_equal key, @bucket.get_object(key).key
|
58
60
|
end
|
59
61
|
|
62
|
+
def test_specail1
|
63
|
+
key = get_key(:specail1)
|
64
|
+
@bucket.put_object(key)
|
65
|
+
all = @bucket.list_objects(prefix: @prefix).map(&:key)
|
66
|
+
assert_includes all, key
|
67
|
+
assert_equal key, @bucket.get_object(key).key
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_specail2
|
71
|
+
key = get_key(:specail2)
|
72
|
+
@bucket.put_object(key)
|
73
|
+
all = @bucket.list_objects(prefix: @prefix).map(&:key)
|
74
|
+
assert_includes all, key
|
75
|
+
assert_equal key, @bucket.get_object(key).key
|
76
|
+
end
|
77
|
+
|
60
78
|
def test_batch_delete
|
61
79
|
keys = @keys.map { |k, _| get_key(k) }
|
62
80
|
keys.each { |k| @bucket.put_object(k) }
|
data/tests/test_object_url.rb
CHANGED
@@ -66,4 +66,24 @@ class TestObjectUrl < Minitest::Test
|
|
66
66
|
|
67
67
|
assert_equal 200, r.code
|
68
68
|
end
|
69
|
+
|
70
|
+
def test_signed_url_with_parameters
|
71
|
+
key = get_key('example.jpg')
|
72
|
+
|
73
|
+
@bucket.put_object(key, :file => 'tests/example.jpg', acl: Aliyun::OSS::ACL::PRIVATE)
|
74
|
+
|
75
|
+
meta = @bucket.get_object(key)
|
76
|
+
assert_equal 21839, meta.size
|
77
|
+
|
78
|
+
parameters = {
|
79
|
+
'x-oss-process' => 'image/resize,m_fill,h_100,w_100',
|
80
|
+
}
|
81
|
+
signed_url = @bucket.object_url(key, true, 60, parameters)
|
82
|
+
r = RestClient.get(signed_url)
|
83
|
+
lenth = r.headers[:content_length].to_i
|
84
|
+
assert_equal 200, r.code
|
85
|
+
assert_equal true, lenth < meta.size
|
86
|
+
|
87
|
+
end
|
88
|
+
|
69
89
|
end
|
data/tests/test_resumable.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aliyun-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tianlong Wu
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: lib/aliyun
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.4'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake-compiler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.9.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.9.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +100,14 @@ dependencies:
|
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
103
|
+
version: '3.0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
110
|
+
version: '3.0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: simplecov
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +140,8 @@ description: A Ruby program to facilitate accessing Aliyun Object Storage Servic
|
|
126
140
|
email:
|
127
141
|
- rockuw.@gmail.com
|
128
142
|
executables: []
|
129
|
-
extensions:
|
143
|
+
extensions:
|
144
|
+
- ext/crcx/extconf.rb
|
130
145
|
extra_rdoc_files:
|
131
146
|
- README.md
|
132
147
|
- CHANGELOG.md
|
@@ -141,6 +156,10 @@ files:
|
|
141
156
|
- examples/aliyun/oss/streaming.rb
|
142
157
|
- examples/aliyun/oss/using_sts.rb
|
143
158
|
- examples/aliyun/sts/assume_role.rb
|
159
|
+
- ext/crcx/crc64_ecma.c
|
160
|
+
- ext/crcx/crcx.c
|
161
|
+
- ext/crcx/crcx.h
|
162
|
+
- ext/crcx/extconf.rb
|
144
163
|
- lib/aliyun/common.rb
|
145
164
|
- lib/aliyun/common/exception.rb
|
146
165
|
- lib/aliyun/common/logging.rb
|
@@ -180,8 +199,10 @@ files:
|
|
180
199
|
- spec/aliyun/sts/client_spec.rb
|
181
200
|
- spec/aliyun/sts/util_spec.rb
|
182
201
|
- tests/config.rb
|
202
|
+
- tests/helper.rb
|
183
203
|
- tests/test_content_encoding.rb
|
184
204
|
- tests/test_content_type.rb
|
205
|
+
- tests/test_crc_check.rb
|
185
206
|
- tests/test_custom_headers.rb
|
186
207
|
- tests/test_encoding.rb
|
187
208
|
- tests/test_large_file.rb
|
@@ -202,15 +223,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
223
|
requirements:
|
203
224
|
- - ">="
|
204
225
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
226
|
+
version: '2.0'
|
206
227
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
228
|
requirements:
|
208
229
|
- - ">="
|
209
230
|
- !ruby/object:Gem::Version
|
210
231
|
version: '0'
|
211
232
|
requirements: []
|
212
|
-
|
213
|
-
rubygems_version: 2.4.5.1
|
233
|
+
rubygems_version: 3.0.3
|
214
234
|
signing_key:
|
215
235
|
specification_version: 4
|
216
236
|
summary: Aliyun OSS SDK for Ruby
|
@@ -228,8 +248,10 @@ test_files:
|
|
228
248
|
- spec/aliyun/sts/client_spec.rb
|
229
249
|
- spec/aliyun/sts/util_spec.rb
|
230
250
|
- tests/config.rb
|
251
|
+
- tests/helper.rb
|
231
252
|
- tests/test_content_encoding.rb
|
232
253
|
- tests/test_content_type.rb
|
254
|
+
- tests/test_crc_check.rb
|
233
255
|
- tests/test_custom_headers.rb
|
234
256
|
- tests/test_encoding.rb
|
235
257
|
- tests/test_large_file.rb
|
@@ -238,4 +260,3 @@ test_files:
|
|
238
260
|
- tests/test_object_key.rb
|
239
261
|
- tests/test_object_url.rb
|
240
262
|
- tests/test_resumable.rb
|
241
|
-
has_rdoc:
|