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.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +174 -172
  4. data/examples/aliyun/oss/bucket.rb +0 -0
  5. data/examples/aliyun/oss/callback.rb +0 -0
  6. data/examples/aliyun/oss/object.rb +0 -0
  7. data/examples/aliyun/oss/resumable_download.rb +0 -0
  8. data/examples/aliyun/oss/resumable_upload.rb +0 -0
  9. data/examples/aliyun/oss/streaming.rb +0 -0
  10. data/examples/aliyun/oss/using_sts.rb +0 -0
  11. data/examples/aliyun/sts/assume_role.rb +0 -0
  12. data/ext/crcx/crc64_ecma.c +270 -0
  13. data/ext/crcx/crcx.c +45 -0
  14. data/ext/crcx/crcx.h +8 -0
  15. data/ext/crcx/extconf.rb +3 -0
  16. data/lib/aliyun/common.rb +0 -0
  17. data/lib/aliyun/common/exception.rb +0 -0
  18. data/lib/aliyun/common/logging.rb +6 -1
  19. data/lib/aliyun/common/struct.rb +0 -0
  20. data/lib/aliyun/oss.rb +1 -0
  21. data/lib/aliyun/oss/bucket.rb +41 -33
  22. data/lib/aliyun/oss/client.rb +10 -2
  23. data/lib/aliyun/oss/config.rb +4 -1
  24. data/lib/aliyun/oss/download.rb +2 -2
  25. data/lib/aliyun/oss/exception.rb +6 -0
  26. data/lib/aliyun/oss/http.rb +32 -48
  27. data/lib/aliyun/oss/iterator.rb +0 -0
  28. data/lib/aliyun/oss/multipart.rb +1 -1
  29. data/lib/aliyun/oss/object.rb +0 -0
  30. data/lib/aliyun/oss/protocol.rb +68 -8
  31. data/lib/aliyun/oss/struct.rb +2 -2
  32. data/lib/aliyun/oss/upload.rb +0 -0
  33. data/lib/aliyun/oss/util.rb +25 -1
  34. data/lib/aliyun/sts.rb +0 -0
  35. data/lib/aliyun/sts/client.rb +1 -1
  36. data/lib/aliyun/sts/config.rb +0 -0
  37. data/lib/aliyun/sts/exception.rb +0 -0
  38. data/lib/aliyun/sts/protocol.rb +3 -3
  39. data/lib/aliyun/sts/struct.rb +0 -0
  40. data/lib/aliyun/sts/util.rb +0 -0
  41. data/lib/aliyun/version.rb +1 -1
  42. data/spec/aliyun/oss/bucket_spec.rb +194 -18
  43. data/spec/aliyun/oss/client/bucket_spec.rb +342 -30
  44. data/spec/aliyun/oss/client/client_spec.rb +26 -1
  45. data/spec/aliyun/oss/client/resumable_download_spec.rb +0 -0
  46. data/spec/aliyun/oss/client/resumable_upload_spec.rb +0 -0
  47. data/spec/aliyun/oss/http_spec.rb +26 -0
  48. data/spec/aliyun/oss/multipart_spec.rb +53 -8
  49. data/spec/aliyun/oss/object_spec.rb +256 -10
  50. data/spec/aliyun/oss/service_spec.rb +0 -0
  51. data/spec/aliyun/oss/util_spec.rb +101 -0
  52. data/spec/aliyun/sts/client_spec.rb +0 -0
  53. data/spec/aliyun/sts/util_spec.rb +0 -0
  54. data/tests/config.rb +2 -0
  55. data/tests/helper.rb +15 -0
  56. data/tests/test_content_encoding.rb +0 -0
  57. data/tests/test_content_type.rb +0 -0
  58. data/tests/test_crc_check.rb +184 -0
  59. data/tests/test_custom_headers.rb +14 -6
  60. data/tests/test_encoding.rb +0 -0
  61. data/tests/test_large_file.rb +0 -0
  62. data/tests/test_multipart.rb +0 -0
  63. data/tests/test_object_acl.rb +0 -0
  64. data/tests/test_object_key.rb +18 -0
  65. data/tests/test_object_url.rb +20 -0
  66. data/tests/test_resumable.rb +0 -0
  67. 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
@@ -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
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Aliyun
4
+ module Test
5
+ module Helper
6
+ def random_string(n)
7
+ (1...n).map { (65 + rand(26)).chr }.join + "\n"
8
+ end
9
+
10
+ def random_bytes(n)
11
+ (1...n).map { rand(255).chr }.join + "\n"
12
+ end
13
+ end
14
+ end
15
+ end
File without changes
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 = @bucket.get_object(key) { |c| content << c }
50
- assert_equal 'hello world', content
51
- assert_equal cache_control, obj.headers[:cache_control]
52
- assert_equal content_disposition, obj.headers[:content_disposition]
53
- assert_equal content_encoding, obj.headers[:content_encoding]
54
- assert_equal expires, obj.headers[:expires]
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
File without changes
File without changes
File without changes
File without changes
@@ -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) }
@@ -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
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.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tianlong Wu
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: lib/aliyun
10
10
  cert_chain: []
11
- date: 2016-07-19 00:00:00.000000000 Z
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: '1.8'
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: '1.8'
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: '1.22'
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: '1.22'
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: 1.9.3
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
- rubyforge_project:
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: