fog-aliyun 0.3.18 → 0.3.19
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 +7 -1
- data/fog-aliyun.gemspec +2 -2
- data/lib/fog/aliyun/models/storage/directories.rb +30 -53
- data/lib/fog/aliyun/models/storage/directory.rb +96 -17
- data/lib/fog/aliyun/models/storage/file.rb +127 -126
- data/lib/fog/aliyun/models/storage/files.rb +48 -127
- data/lib/fog/aliyun/requests/storage/abort_multipart_upload.rb +22 -0
- data/lib/fog/aliyun/requests/storage/complete_multipart_upload.rb +21 -0
- data/lib/fog/aliyun/requests/storage/copy_object.rb +14 -18
- data/lib/fog/aliyun/requests/storage/delete_bucket.rb +3 -9
- data/lib/fog/aliyun/requests/storage/delete_multiple_objects.rb +20 -0
- data/lib/fog/aliyun/requests/storage/delete_object.rb +10 -11
- data/lib/fog/aliyun/requests/storage/get_bucket.rb +22 -99
- data/lib/fog/aliyun/requests/storage/get_bucket_location.rb +33 -0
- data/lib/fog/aliyun/requests/storage/get_object.rb +20 -12
- data/lib/fog/aliyun/requests/storage/get_object_acl.rb +30 -0
- data/lib/fog/aliyun/requests/storage/get_object_http_url.rb +6 -9
- data/lib/fog/aliyun/requests/storage/get_object_https_url.rb +6 -9
- data/lib/fog/aliyun/requests/storage/get_service.rb +13 -0
- data/lib/fog/aliyun/requests/storage/head_object.rb +25 -13
- data/lib/fog/aliyun/requests/storage/initiate_multipart_upload.rb +19 -0
- data/lib/fog/aliyun/requests/storage/list_buckets.rb +5 -25
- data/lib/fog/aliyun/requests/storage/list_objects.rb +10 -62
- data/lib/fog/aliyun/requests/storage/put_bucket.rb +2 -8
- data/lib/fog/aliyun/requests/storage/put_object.rb +16 -122
- data/lib/fog/aliyun/requests/storage/upload_part.rb +24 -0
- data/lib/fog/aliyun/storage.rb +20 -4
- data/lib/fog/aliyun/version.rb +1 -1
- metadata +14 -10
- data/lib/fog/aliyun/requests/storage/delete_container.rb +0 -30
- data/lib/fog/aliyun/requests/storage/get_container.rb +0 -57
- data/lib/fog/aliyun/requests/storage/get_containers.rb +0 -61
- data/lib/fog/aliyun/requests/storage/put_container.rb +0 -29
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
module Fog
|
3
|
+
module Aliyun
|
4
|
+
class Storage
|
5
|
+
class Real
|
6
|
+
# Upload a part for a multipart upload
|
7
|
+
#
|
8
|
+
# @param bucket_name [String] Name of bucket to add part to
|
9
|
+
# @param object_name [String] Name of object to add part to
|
10
|
+
# @param upload_id [String] Id of upload to add part to
|
11
|
+
# @param part_number [String] Index of part in upload
|
12
|
+
# @param data [File||String] Content for part
|
13
|
+
#
|
14
|
+
# @see https://help.aliyun.com/document_detail/31993.html
|
15
|
+
#
|
16
|
+
def upload_part(bucket_name, object_name, upload_id, part_number, data)
|
17
|
+
@oss_protocol.upload_part(bucket_name, object_name, upload_id, part_number) do |sw|
|
18
|
+
sw.write(data)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/fog/aliyun/storage.rb
CHANGED
@@ -9,6 +9,7 @@ AliyunOssSdk= Aliyun::OSS
|
|
9
9
|
module Fog
|
10
10
|
module Aliyun
|
11
11
|
class Storage < Fog::Service
|
12
|
+
COMPLIANT_BUCKET_NAMES = /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
|
12
13
|
DEFAULT_REGION = 'cn-hangzhou'
|
13
14
|
|
14
15
|
DEFAULT_SCHEME = 'https'
|
@@ -36,19 +37,23 @@ module Fog
|
|
36
37
|
request :copy_object
|
37
38
|
request :delete_bucket
|
38
39
|
request :delete_object
|
40
|
+
request :delete_multiple_objects
|
39
41
|
request :get_bucket
|
42
|
+
request :get_bucket_location
|
40
43
|
request :get_object
|
44
|
+
request :get_object_acl
|
41
45
|
request :get_object_http_url
|
42
46
|
request :get_object_https_url
|
43
47
|
request :head_object
|
44
48
|
request :put_bucket
|
45
49
|
request :put_object
|
50
|
+
request :get_service
|
46
51
|
request :list_buckets
|
47
52
|
request :list_objects
|
48
|
-
request :
|
49
|
-
request :
|
50
|
-
request :
|
51
|
-
request :
|
53
|
+
request :initiate_multipart_upload
|
54
|
+
request :upload_part
|
55
|
+
request :complete_multipart_upload
|
56
|
+
request :abort_multipart_upload
|
52
57
|
|
53
58
|
class Real
|
54
59
|
# Initialize connection to OSS
|
@@ -121,6 +126,7 @@ module Fog
|
|
121
126
|
:access_key_secret => @aliyun_accesskey_secret
|
122
127
|
)
|
123
128
|
@oss_http = AliyunOssSdk::HTTP.new(@oss_config)
|
129
|
+
@oss_protocol = AliyunOssSdk::Protocol.new(@oss_config)
|
124
130
|
end
|
125
131
|
|
126
132
|
def reload
|
@@ -136,6 +142,16 @@ module Fog
|
|
136
142
|
end
|
137
143
|
end
|
138
144
|
|
145
|
+
def object_to_path(object_name=nil)
|
146
|
+
'/' + escape(object_name.to_s).gsub('%2F','/')
|
147
|
+
end
|
148
|
+
|
149
|
+
def escape(string)
|
150
|
+
string.gsub(/([^a-zA-Z0-9_.\-~\/]+)/) {
|
151
|
+
"%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
139
155
|
def request(params)
|
140
156
|
method = params[:method]
|
141
157
|
time = Time.new.utc
|
data/lib/fog/aliyun/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-aliyun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Qinsi Deng, Jianxun Li, Jane Han, Guimin He
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -134,28 +134,28 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: 0.
|
137
|
+
version: 0.8.0
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 0.
|
144
|
+
version: 0.8.0
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: aliyun-sdk
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 0.
|
151
|
+
version: 0.8.0
|
152
152
|
type: :runtime
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: 0.
|
158
|
+
version: 0.8.0
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: fog-core
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -325,22 +325,26 @@ files:
|
|
325
325
|
- lib/fog/aliyun/requests/compute/start_server.rb
|
326
326
|
- lib/fog/aliyun/requests/compute/stop_server.rb
|
327
327
|
- lib/fog/aliyun/requests/compute/unassociate_eip_address.rb
|
328
|
+
- lib/fog/aliyun/requests/storage/abort_multipart_upload.rb
|
329
|
+
- lib/fog/aliyun/requests/storage/complete_multipart_upload.rb
|
328
330
|
- lib/fog/aliyun/requests/storage/copy_object.rb
|
329
331
|
- lib/fog/aliyun/requests/storage/delete_bucket.rb
|
330
|
-
- lib/fog/aliyun/requests/storage/
|
332
|
+
- lib/fog/aliyun/requests/storage/delete_multiple_objects.rb
|
331
333
|
- lib/fog/aliyun/requests/storage/delete_object.rb
|
332
334
|
- lib/fog/aliyun/requests/storage/get_bucket.rb
|
333
|
-
- lib/fog/aliyun/requests/storage/
|
334
|
-
- lib/fog/aliyun/requests/storage/get_containers.rb
|
335
|
+
- lib/fog/aliyun/requests/storage/get_bucket_location.rb
|
335
336
|
- lib/fog/aliyun/requests/storage/get_object.rb
|
337
|
+
- lib/fog/aliyun/requests/storage/get_object_acl.rb
|
336
338
|
- lib/fog/aliyun/requests/storage/get_object_http_url.rb
|
337
339
|
- lib/fog/aliyun/requests/storage/get_object_https_url.rb
|
340
|
+
- lib/fog/aliyun/requests/storage/get_service.rb
|
338
341
|
- lib/fog/aliyun/requests/storage/head_object.rb
|
342
|
+
- lib/fog/aliyun/requests/storage/initiate_multipart_upload.rb
|
339
343
|
- lib/fog/aliyun/requests/storage/list_buckets.rb
|
340
344
|
- lib/fog/aliyun/requests/storage/list_objects.rb
|
341
345
|
- lib/fog/aliyun/requests/storage/put_bucket.rb
|
342
|
-
- lib/fog/aliyun/requests/storage/put_container.rb
|
343
346
|
- lib/fog/aliyun/requests/storage/put_object.rb
|
347
|
+
- lib/fog/aliyun/requests/storage/upload_part.rb
|
344
348
|
- lib/fog/aliyun/storage.rb
|
345
349
|
- lib/fog/aliyun/version.rb
|
346
350
|
- lib/fog/bin/aliyun.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Aliyun
|
5
|
-
class Storage
|
6
|
-
class Real
|
7
|
-
# Delete an existing container
|
8
|
-
#
|
9
|
-
# ==== Parameters
|
10
|
-
# * container<~String> - Name of container to delete
|
11
|
-
# * options
|
12
|
-
#
|
13
|
-
def delete_container(container, options = {})
|
14
|
-
bucket = options[:bucket]
|
15
|
-
bucket ||= @aliyun_oss_bucket
|
16
|
-
object = container + '/'
|
17
|
-
resource = bucket + '/' + object
|
18
|
-
|
19
|
-
request(
|
20
|
-
expects: 204,
|
21
|
-
method: 'DELETE',
|
22
|
-
path: object,
|
23
|
-
bucket: bucket,
|
24
|
-
resource: resource
|
25
|
-
)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Aliyun
|
5
|
-
class Storage
|
6
|
-
class Real
|
7
|
-
def get_container(container, options = {})
|
8
|
-
options = options.reject { |_key, value| value.nil? }
|
9
|
-
|
10
|
-
bucket = options[:bucket]
|
11
|
-
bucket ||= @aliyun_oss_bucket
|
12
|
-
|
13
|
-
marker = options[:marker]
|
14
|
-
maxKeys = options[:maxKeys]||1000
|
15
|
-
maxKeys = maxKeys.to_i
|
16
|
-
maxKeys = [maxKeys,1000].min.to_s
|
17
|
-
delimiter = '/'
|
18
|
-
|
19
|
-
path = ''
|
20
|
-
|
21
|
-
prefix = if container == '' || container == '.' || container.nil?
|
22
|
-
nil
|
23
|
-
else
|
24
|
-
container + '/'
|
25
|
-
end
|
26
|
-
|
27
|
-
if prefix
|
28
|
-
path += '?prefix=' + prefix
|
29
|
-
path += '&marker=' + marker if marker
|
30
|
-
path += '&max-keys=' + maxKeys if maxKeys
|
31
|
-
path += '&delimiter=' + delimiter if delimiter
|
32
|
-
elsif marker
|
33
|
-
path += '?marker=' + marker
|
34
|
-
path += '&max-keys=' + maxKeys if maxKeys
|
35
|
-
path += '&delimiter=' + delimiter if delimiter
|
36
|
-
elsif maxKeys
|
37
|
-
path += '?max-keys=' + maxKeys
|
38
|
-
path += '&delimiter=' + delimiter if delimiter
|
39
|
-
elsif delimiter
|
40
|
-
path += '?delimiter=' + delimiter
|
41
|
-
end
|
42
|
-
|
43
|
-
resource = bucket + '/'
|
44
|
-
ret = request(
|
45
|
-
expects: [200, 203, 400],
|
46
|
-
method: 'GET',
|
47
|
-
path: path,
|
48
|
-
resource: resource,
|
49
|
-
bucket: bucket
|
50
|
-
)
|
51
|
-
xml = ret.data[:body]
|
52
|
-
XmlSimple.xml_in(xml)['CommonPrefixes']
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Aliyun
|
5
|
-
class Storage
|
6
|
-
class Real
|
7
|
-
# List existing storage containers
|
8
|
-
#
|
9
|
-
# ==== Parameters
|
10
|
-
# * options<~Hash>:
|
11
|
-
# * 'maxKeys'<~Integer> - Upper limit to number of results returned
|
12
|
-
# * 'marker'<~String> - Only return objects with name greater than this value
|
13
|
-
#
|
14
|
-
# ==== Returns
|
15
|
-
#
|
16
|
-
def get_containers(options = {})
|
17
|
-
options = options.reject { |_key, value| value.nil? }
|
18
|
-
bucket = options[:bucket]
|
19
|
-
bucket ||= @aliyun_oss_bucket
|
20
|
-
prefix = options[:prefix]
|
21
|
-
marker = options[:marker]
|
22
|
-
maxKeys = options[:maxKeys]||1000
|
23
|
-
maxKeys = maxKeys.to_i
|
24
|
-
maxKeys = [maxKeys,1000].min.to_s
|
25
|
-
delimiter = '/'
|
26
|
-
|
27
|
-
path = ''
|
28
|
-
if prefix
|
29
|
-
path += '?prefix=' + prefix
|
30
|
-
path += '&marker=' + marker if marker
|
31
|
-
path += '&max-keys=' + maxKeys if maxKeys
|
32
|
-
path += '&delimiter=' + delimiter if delimiter
|
33
|
-
|
34
|
-
elsif marker
|
35
|
-
path += '?marker=' + marker
|
36
|
-
path += '&max-keys=' + maxKeys if maxKeys
|
37
|
-
path += '&delimiter=' + delimiter if delimiter
|
38
|
-
|
39
|
-
elsif maxKeys
|
40
|
-
path += '?max-keys=' + maxKeys
|
41
|
-
path += '&delimiter=' + delimiter if delimiter
|
42
|
-
|
43
|
-
elsif delimiter
|
44
|
-
path += '?delimiter=' + delimiter
|
45
|
-
end
|
46
|
-
|
47
|
-
resource = bucket + '/'
|
48
|
-
ret = request(
|
49
|
-
expects: [200, 203, 400],
|
50
|
-
method: 'GET',
|
51
|
-
path: path,
|
52
|
-
resource: resource,
|
53
|
-
bucket: bucket
|
54
|
-
)
|
55
|
-
xml = ret.data[:body]
|
56
|
-
XmlSimple.xml_in(xml)['CommonPrefixes']
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Aliyun
|
5
|
-
class Storage
|
6
|
-
class Real
|
7
|
-
# Create a new container
|
8
|
-
#
|
9
|
-
# ==== Parameters
|
10
|
-
# * name<~String> - Name for container
|
11
|
-
#
|
12
|
-
def put_container(name, options = {})
|
13
|
-
bucket = options[:bucket]
|
14
|
-
bucket ||= @aliyun_oss_bucket
|
15
|
-
|
16
|
-
path = name + '/'
|
17
|
-
resource = bucket + '/' + name + '/'
|
18
|
-
request(
|
19
|
-
expects: [200, 203],
|
20
|
-
method: 'PUT',
|
21
|
-
path: path,
|
22
|
-
bucket: bucket,
|
23
|
-
resource: resource
|
24
|
-
)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|