fog-aliyun 0.3.18 → 0.3.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -1
  3. data/fog-aliyun.gemspec +2 -2
  4. data/lib/fog/aliyun/models/storage/directories.rb +30 -53
  5. data/lib/fog/aliyun/models/storage/directory.rb +96 -17
  6. data/lib/fog/aliyun/models/storage/file.rb +127 -126
  7. data/lib/fog/aliyun/models/storage/files.rb +48 -127
  8. data/lib/fog/aliyun/requests/storage/abort_multipart_upload.rb +22 -0
  9. data/lib/fog/aliyun/requests/storage/complete_multipart_upload.rb +21 -0
  10. data/lib/fog/aliyun/requests/storage/copy_object.rb +14 -18
  11. data/lib/fog/aliyun/requests/storage/delete_bucket.rb +3 -9
  12. data/lib/fog/aliyun/requests/storage/delete_multiple_objects.rb +20 -0
  13. data/lib/fog/aliyun/requests/storage/delete_object.rb +10 -11
  14. data/lib/fog/aliyun/requests/storage/get_bucket.rb +22 -99
  15. data/lib/fog/aliyun/requests/storage/get_bucket_location.rb +33 -0
  16. data/lib/fog/aliyun/requests/storage/get_object.rb +20 -12
  17. data/lib/fog/aliyun/requests/storage/get_object_acl.rb +30 -0
  18. data/lib/fog/aliyun/requests/storage/get_object_http_url.rb +6 -9
  19. data/lib/fog/aliyun/requests/storage/get_object_https_url.rb +6 -9
  20. data/lib/fog/aliyun/requests/storage/get_service.rb +13 -0
  21. data/lib/fog/aliyun/requests/storage/head_object.rb +25 -13
  22. data/lib/fog/aliyun/requests/storage/initiate_multipart_upload.rb +19 -0
  23. data/lib/fog/aliyun/requests/storage/list_buckets.rb +5 -25
  24. data/lib/fog/aliyun/requests/storage/list_objects.rb +10 -62
  25. data/lib/fog/aliyun/requests/storage/put_bucket.rb +2 -8
  26. data/lib/fog/aliyun/requests/storage/put_object.rb +16 -122
  27. data/lib/fog/aliyun/requests/storage/upload_part.rb +24 -0
  28. data/lib/fog/aliyun/storage.rb +20 -4
  29. data/lib/fog/aliyun/version.rb +1 -1
  30. metadata +14 -10
  31. data/lib/fog/aliyun/requests/storage/delete_container.rb +0 -30
  32. data/lib/fog/aliyun/requests/storage/get_container.rb +0 -57
  33. data/lib/fog/aliyun/requests/storage/get_containers.rb +0 -61
  34. 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
@@ -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 :get_containers
49
- request :get_container
50
- request :delete_container
51
- request :put_container
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fog
4
4
  module Aliyun
5
- VERSION = '0.3.18'
5
+ VERSION = '0.3.19'
6
6
  end
7
7
  end
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.18
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-03 00:00:00.000000000 Z
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.7.3
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.7.3
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.7.3
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.7.3
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/delete_container.rb
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/get_container.rb
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