aliyun-sdk 0.6.0 → 0.8.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 +5 -5
- data/CHANGELOG.md +27 -0
- data/README.md +0 -0
- 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 +0 -0
- data/ext/crcx/crcx.c +0 -0
- data/ext/crcx/crcx.h +0 -0
- data/ext/crcx/extconf.rb +0 -0
- data/lib/aliyun/common.rb +0 -0
- data/lib/aliyun/common/exception.rb +0 -0
- data/lib/aliyun/common/logging.rb +20 -3
- data/lib/aliyun/common/struct.rb +0 -0
- data/lib/aliyun/oss.rb +0 -0
- data/lib/aliyun/oss/bucket.rb +57 -32
- data/lib/aliyun/oss/client.rb +6 -2
- data/lib/aliyun/oss/config.rb +0 -0
- data/lib/aliyun/oss/download.rb +0 -0
- data/lib/aliyun/oss/exception.rb +0 -0
- data/lib/aliyun/oss/http.rb +8 -5
- data/lib/aliyun/oss/iterator.rb +0 -0
- data/lib/aliyun/oss/multipart.rb +0 -0
- data/lib/aliyun/oss/object.rb +0 -0
- data/lib/aliyun/oss/protocol.rb +116 -3
- data/lib/aliyun/oss/struct.rb +27 -2
- data/lib/aliyun/oss/upload.rb +0 -0
- data/lib/aliyun/oss/util.rb +6 -0
- 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 +1 -1
- 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 +143 -2
- data/spec/aliyun/oss/client/bucket_spec.rb +392 -22
- data/spec/aliyun/oss/client/client_spec.rb +25 -0
- 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 +0 -0
- data/spec/aliyun/oss/multipart_spec.rb +0 -0
- data/spec/aliyun/oss/object_spec.rb +95 -2
- data/spec/aliyun/oss/service_spec.rb +0 -0
- data/spec/aliyun/oss/util_spec.rb +51 -0
- data/spec/aliyun/sts/client_spec.rb +0 -0
- data/spec/aliyun/sts/util_spec.rb +0 -0
- data/tests/config.rb +0 -0
- data/tests/helper.rb +0 -0
- data/tests/test_bucket.rb +73 -0
- data/tests/test_content_encoding.rb +0 -0
- data/tests/test_content_type.rb +0 -0
- data/tests/test_crc_check.rb +0 -0
- data/tests/test_custom_headers.rb +0 -0
- 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 +8 -13
@@ -127,6 +127,31 @@ module Aliyun
|
|
127
127
|
expect(WebMock).to have_requested(:get, "#{bucket}.#{ep1}/#{object}")
|
128
128
|
expect(WebMock).to have_requested(:put, "#{bucket}.#{ep2}/#{object}")
|
129
129
|
end
|
130
|
+
|
131
|
+
it "should fail with invalid bucket name" do
|
132
|
+
bucket = 'INVALID'
|
133
|
+
ep1 = 'oss-cn-hangzhou.aliyuncs.com'
|
134
|
+
client = Client.new(
|
135
|
+
:endpoint => ep1,
|
136
|
+
:access_key_id => 'xxx', :access_key_secret => 'yyy')
|
137
|
+
|
138
|
+
expect {
|
139
|
+
client.create_bucket(bucket)
|
140
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
141
|
+
|
142
|
+
expect {
|
143
|
+
client.delete_bucket(bucket)
|
144
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
145
|
+
|
146
|
+
expect {
|
147
|
+
client.bucket_exists?(bucket)
|
148
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
149
|
+
|
150
|
+
expect {
|
151
|
+
client.get_bucket(bucket)
|
152
|
+
}.to raise_error(ClientError, "The bucket name is invalid.")
|
153
|
+
end
|
154
|
+
|
130
155
|
end # construct
|
131
156
|
|
132
157
|
def mock_buckets(buckets, more = {})
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -611,6 +611,15 @@ module Aliyun
|
|
611
611
|
})
|
612
612
|
end
|
613
613
|
|
614
|
+
it "should raise Exception on error when setting invalid range" do
|
615
|
+
object_name = 'ruby'
|
616
|
+
url = get_request_path(object_name)
|
617
|
+
stub_request(:get, url)
|
618
|
+
expect {
|
619
|
+
@protocol.get_object(@bucket, object_name, {:range => [0, 10, 5]}) {}
|
620
|
+
}.to raise_error(ClientError)
|
621
|
+
end
|
622
|
+
|
614
623
|
it "should match modify time and etag" do
|
615
624
|
object_name = 'ruby'
|
616
625
|
url = get_request_path(object_name)
|
@@ -662,6 +671,22 @@ module Aliyun
|
|
662
671
|
.with(:body => nil, :query => query)
|
663
672
|
end
|
664
673
|
|
674
|
+
it "should get object with headers" do
|
675
|
+
object_name = 'ruby'
|
676
|
+
url = get_request_path(object_name)
|
677
|
+
headers = {
|
678
|
+
'Range' => 'bytes=0-9'
|
679
|
+
}
|
680
|
+
stub_request(:get, url)
|
681
|
+
|
682
|
+
@protocol.get_object(@bucket, object_name, {:headers => headers}) {}
|
683
|
+
|
684
|
+
expect(WebMock).to have_requested(:get, url)
|
685
|
+
.with(:body => nil, :query => {},
|
686
|
+
:headers => {
|
687
|
+
'Range' => 'bytes=0-9'
|
688
|
+
})
|
689
|
+
end
|
665
690
|
|
666
691
|
it "should raise crc exception on error" do
|
667
692
|
object_name = 'ruby'
|
@@ -710,6 +735,23 @@ module Aliyun
|
|
710
735
|
'Range' => 'bytes=0-9'
|
711
736
|
})
|
712
737
|
end
|
738
|
+
|
739
|
+
it "should get to get object with special chars" do
|
740
|
+
object_name = 'ruby///adfadfa//!@#%^*//?key=value&aabc#abc=ad'
|
741
|
+
url = get_request_path(object_name)
|
742
|
+
|
743
|
+
return_content = "hello world"
|
744
|
+
stub_request(:get, url).to_return(:body => return_content)
|
745
|
+
|
746
|
+
content = ""
|
747
|
+
@protocol.get_object(@bucket, object_name) {|c| content << c}
|
748
|
+
|
749
|
+
expect(WebMock).to have_requested(:get, url)
|
750
|
+
.with(:body => nil, :query => {})
|
751
|
+
|
752
|
+
expect(content).to eq(return_content)
|
753
|
+
end
|
754
|
+
|
713
755
|
end # Get object
|
714
756
|
|
715
757
|
context "Get object meta" do
|
@@ -804,7 +846,7 @@ module Aliyun
|
|
804
846
|
|
805
847
|
it "should batch delete objects" do
|
806
848
|
url = get_request_path
|
807
|
-
query = {'delete' => nil
|
849
|
+
query = {'delete' => nil}
|
808
850
|
|
809
851
|
object_names = (1..5).map do |i|
|
810
852
|
"object-#{i}"
|
@@ -814,7 +856,7 @@ module Aliyun
|
|
814
856
|
.with(:query => query)
|
815
857
|
.to_return(:body => mock_delete_result(object_names))
|
816
858
|
|
817
|
-
opts = {:quiet => false
|
859
|
+
opts = {:quiet => false}
|
818
860
|
deleted = @protocol.batch_delete_objects(@bucket, object_names, opts)
|
819
861
|
|
820
862
|
expect(WebMock).to have_requested(:post, url)
|
@@ -844,6 +886,57 @@ module Aliyun
|
|
844
886
|
.with(:query => query, :body => mock_delete(object_names, opts))
|
845
887
|
expect(deleted).to match_array(object_names)
|
846
888
|
end
|
889
|
+
|
890
|
+
it "should batch delete objects in quiet mode" do
|
891
|
+
url = get_request_path
|
892
|
+
query = {'delete' => nil}
|
893
|
+
|
894
|
+
object_names = (1..5).map do |i|
|
895
|
+
"object-#{i}"
|
896
|
+
end
|
897
|
+
|
898
|
+
stub_request(:post, url)
|
899
|
+
.with(:query => query)
|
900
|
+
.to_return(:body => "")
|
901
|
+
|
902
|
+
opts = {:quiet => true}
|
903
|
+
deleted = @protocol.batch_delete_objects(@bucket, object_names, opts)
|
904
|
+
|
905
|
+
expect(WebMock).to have_requested(:post, url)
|
906
|
+
.with(:query => query, :body => mock_delete(object_names, opts))
|
907
|
+
expect(deleted).to match_array([])
|
908
|
+
end
|
909
|
+
|
910
|
+
it "should rasie Exception wiht invalid responsed body" do
|
911
|
+
url = get_request_path
|
912
|
+
query = {'delete' => nil}
|
913
|
+
body = '<DeleteResult>
|
914
|
+
<EncodingType>invaid<EncodingType>
|
915
|
+
<Deleted>
|
916
|
+
<Key>multipart.data</Key>
|
917
|
+
</Deleted>
|
918
|
+
<Deleted>
|
919
|
+
<Key>test.jpg</Key>
|
920
|
+
</Deleted>
|
921
|
+
<Deleted>
|
922
|
+
<Key>demo.jpg</Key>
|
923
|
+
</Deleted>
|
924
|
+
</DeleteResult>'
|
925
|
+
|
926
|
+
object_names = (1..5).map do |i|
|
927
|
+
"object-#{i}"
|
928
|
+
end
|
929
|
+
|
930
|
+
stub_request(:post, url)
|
931
|
+
.with(:query => query)
|
932
|
+
.to_return(:body => body)
|
933
|
+
|
934
|
+
opts = {:quiet => false}
|
935
|
+
expect {
|
936
|
+
deleted = @protocol.batch_delete_objects(@bucket, object_names, opts)
|
937
|
+
}.to raise_error(ClientError)
|
938
|
+
|
939
|
+
end
|
847
940
|
end # delete object
|
848
941
|
|
849
942
|
context "acl" do
|
File without changes
|
@@ -94,6 +94,57 @@ module Aliyun
|
|
94
94
|
}.to raise_error(CrcInconsistentError, "The crc of post between client and oss is not inconsistent.")
|
95
95
|
end
|
96
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
|
+
|
97
148
|
end # Util
|
98
149
|
|
99
150
|
end # OSS
|
File without changes
|
File without changes
|
data/tests/config.rb
CHANGED
File without changes
|
data/tests/helper.rb
CHANGED
File without changes
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'yaml'
|
3
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
require 'aliyun/oss'
|
5
|
+
require 'time'
|
6
|
+
require_relative 'config'
|
7
|
+
|
8
|
+
class TestBucket < Minitest::Test
|
9
|
+
def setup
|
10
|
+
Aliyun::Common::Logging.set_log_level(Logger::DEBUG)
|
11
|
+
@client = Aliyun::OSS::Client.new(TestConf.creds)
|
12
|
+
@bucket_name = TestConf.bucket + Time.now.to_i.to_s
|
13
|
+
@client.create_bucket(@bucket_name)
|
14
|
+
@bucket = @client.get_bucket(@bucket_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
@client.delete_bucket(@bucket_name)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_bucket_versioning
|
22
|
+
ret = @bucket.versioning
|
23
|
+
assert_nil ret.status
|
24
|
+
|
25
|
+
@bucket.versioning = Aliyun::OSS::BucketVersioning.new(:status => 'Enabled')
|
26
|
+
ret = @bucket.versioning
|
27
|
+
assert_equal 'Enabled', ret.status
|
28
|
+
|
29
|
+
@bucket.versioning = Aliyun::OSS::BucketVersioning.new(:status => 'Suspended')
|
30
|
+
ret = @bucket.versioning
|
31
|
+
assert_equal 'Suspended', ret.status
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_bucket_encryption
|
36
|
+
|
37
|
+
begin
|
38
|
+
ret = @bucket.encryption
|
39
|
+
assert_raises "should not here"
|
40
|
+
rescue => exception
|
41
|
+
end
|
42
|
+
|
43
|
+
@bucket.encryption = Aliyun::OSS::BucketEncryption.new(
|
44
|
+
:enable => true,
|
45
|
+
:sse_algorithm => 'KMS')
|
46
|
+
ret = @bucket.encryption
|
47
|
+
assert_equal 'KMS', ret.sse_algorithm
|
48
|
+
assert_nil ret.kms_master_key_id
|
49
|
+
|
50
|
+
@bucket.encryption = Aliyun::OSS::BucketEncryption.new(
|
51
|
+
:enable => true,
|
52
|
+
:sse_algorithm => 'KMS',
|
53
|
+
:kms_master_key_id => 'kms-id')
|
54
|
+
ret = @bucket.encryption
|
55
|
+
assert_equal 'KMS', ret.sse_algorithm
|
56
|
+
assert_equal 'kms-id', ret.kms_master_key_id
|
57
|
+
|
58
|
+
@bucket.encryption = Aliyun::OSS::BucketEncryption.new(
|
59
|
+
:enable => true,
|
60
|
+
:sse_algorithm => 'AES256')
|
61
|
+
ret = @bucket.encryption
|
62
|
+
assert_equal 'AES256', ret.sse_algorithm
|
63
|
+
assert_nil ret.kms_master_key_id
|
64
|
+
|
65
|
+
@bucket.encryption = Aliyun::OSS::BucketEncryption.new(
|
66
|
+
:enable => false)
|
67
|
+
begin
|
68
|
+
ret = @bucket.encryption
|
69
|
+
assert_raises "should not here"
|
70
|
+
rescue => exception
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
File without changes
|
data/tests/test_content_type.rb
CHANGED
File without changes
|
data/tests/test_crc_check.rb
CHANGED
File without changes
|
File without changes
|
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.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tianlong Wu
|
8
8
|
autorequire:
|
9
9
|
bindir: lib/aliyun
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -17,9 +17,6 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.7.0
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,23 +24,20 @@ dependencies:
|
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.6'
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.7.0
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rest-client
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: 2.0
|
33
|
+
version: '2.0'
|
40
34
|
type: :runtime
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.0
|
40
|
+
version: '2.0'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: bundler
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +200,7 @@ files:
|
|
206
200
|
- spec/aliyun/sts/util_spec.rb
|
207
201
|
- tests/config.rb
|
208
202
|
- tests/helper.rb
|
203
|
+
- tests/test_bucket.rb
|
209
204
|
- tests/test_content_encoding.rb
|
210
205
|
- tests/test_content_type.rb
|
211
206
|
- tests/test_crc_check.rb
|
@@ -229,15 +224,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
224
|
requirements:
|
230
225
|
- - ">="
|
231
226
|
- !ruby/object:Gem::Version
|
232
|
-
version:
|
227
|
+
version: '2.0'
|
233
228
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
234
229
|
requirements:
|
235
230
|
- - ">="
|
236
231
|
- !ruby/object:Gem::Version
|
237
232
|
version: '0'
|
238
233
|
requirements: []
|
239
|
-
|
240
|
-
rubygems_version: 2.5.2
|
234
|
+
rubygems_version: 3.0.3
|
241
235
|
signing_key:
|
242
236
|
specification_version: 4
|
243
237
|
summary: Aliyun OSS SDK for Ruby
|
@@ -256,6 +250,7 @@ test_files:
|
|
256
250
|
- spec/aliyun/sts/util_spec.rb
|
257
251
|
- tests/config.rb
|
258
252
|
- tests/helper.rb
|
253
|
+
- tests/test_bucket.rb
|
259
254
|
- tests/test_content_encoding.rb
|
260
255
|
- tests/test_content_type.rb
|
261
256
|
- tests/test_crc_check.rb
|