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.
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