fog-aliyun 0.3.7 → 0.3.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71f324e607c567e9377a324698f35edd82667312c28fce1d3d8dc2e7e771af19
4
- data.tar.gz: 608ea19f6289e5fc3e6ab8642f1326b7b88cb81639853b91f98be251923633e5
3
+ metadata.gz: 111b9682a34af25b9856551baebc1acaff7a7b41c613d37f65ef47a9d5fd2e96
4
+ data.tar.gz: 242585bce56cba8e443a991e44f5b1b7306b61ded43c0b57e8af7a4e48bcd408
5
5
  SHA512:
6
- metadata.gz: 80f63cc617a5e1d1758955342ae252c94e89dbb429575ad8da406100d3dd56a446dd34cbfa896be2c8908e7fd118e7cfb6e87f648def81a52b812c1f72832be8
7
- data.tar.gz: 1da3cd3a1a3d8bc19d2290fdce54f2e9efe1e26849a93a8a5a2b7310f3303c46e1550d0e445cd316b1a7a8fdd5c39f2a07f79a19351e3857b02bd6cf117df37d
6
+ metadata.gz: fc4e02bae46ba2520af281d5321fe517b4030439239d771eddc89a235052627831ab13768e9784100654d0e6ba883bb6b15de0ddd5234cac446ac38d007f9424
7
+ data.tar.gz: df23687c6c0103993eb2bc5c276ce9f5c45ec8ff7c9478e80de1b7faff5d6cf32764c520316854fae4d3404425778a7912703f274216fe2a1671842142822380
@@ -7,10 +7,10 @@ require 'fog/aliyun/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'fog-aliyun'
9
9
  spec.version = Fog::Aliyun::VERSION
10
- spec.authors = ['Qinsi Deng, Jianxun Li, Jane Han']
11
- spec.email = ['dengqinsi@sina.com']
10
+ spec.authors = ['Qinsi Deng, Jianxun Li, Jane Han, Guimin He']
11
+ spec.email = ['dengqinsi@sina.com', 'guimin.hgm@alibaba-inc.com']
12
12
 
13
- spec.summary = 'Fog provider for Aliyun Web Services.'
13
+ spec.summary = 'Fog provider for Alibaba Cloud Web Services.'
14
14
  spec.description = 'As a FOG provider, fog-aliyun support aliyun OSS/ECS. It will support more aliyun services later.'
15
15
  spec.homepage = 'https://github.com/fog/fog-aliyun'
16
16
  spec.license = 'MIT'
@@ -38,8 +38,6 @@ module Fog
38
38
  new(key: key) if ret.data[:status] == 200
39
39
  else
40
40
  data = service.get_bucket(key)
41
- puts "[DEBUG] Getting the bucket named with #{key}..."
42
- puts data
43
41
  if data.class == Hash && data.key?('Code') && !data['Code'].nil? && !data['Code'].empty?
44
42
  dir = key + '/'
45
43
  ret = service.head_object(dir, options)
@@ -41,7 +41,18 @@ module Fog
41
41
 
42
42
  def save
43
43
  requires :key
44
- service.put_container(key)
44
+
45
+ # Checking whether the key is a bucket and meet the multi-bucket scenario.
46
+ # If the key is a existing bucket, return it directly.
47
+ key = key.chomp('/')
48
+ if !key.nil? && key != '' && key != '.' && !(key.include? '/')
49
+ data = service.get_bucket(key)
50
+ if data.class == Hash && data.key?('Code') && !data['Code'].nil? && !data['Code'].empty?
51
+ puts "[INFO] The key #{key} is not a bucket and create one folder named with it."
52
+ service.put_container(key)
53
+ end
54
+ end
55
+
45
56
  true
46
57
  end
47
58
  end
@@ -35,11 +35,13 @@ module Fog
35
35
 
36
36
  def copy(target_directory_key, target_file_key, options = {})
37
37
  requires :directory, :key
38
- source_object = if directory.key == ''
38
+ directory_key = collection.check_directory_key(directory.key)
39
+ source_object = if directory_key == ''
39
40
  key
40
41
  else
41
- directory.key + '/' + key
42
+ directory_key + '/' + key
42
43
  end
44
+ target_directory_key = collection.check_directory_key(target_directory_key)
43
45
  target_object = if target_directory_key == ''
44
46
  target_file_key
45
47
  else
@@ -52,10 +54,11 @@ module Fog
52
54
 
53
55
  def destroy
54
56
  requires :directory, :key
55
- object = if directory.key == ''
57
+ directory_key = collection.check_directory_key(directory.key)
58
+ object = if directory_key == ''
56
59
  key
57
60
  else
58
- directory.key + '/' + key
61
+ directory_key + '/' + key
59
62
  end
60
63
  service.delete_object(object)
61
64
  true
@@ -91,10 +94,11 @@ module Fog
91
94
  expires = expires.nil? ? 0 : expires.to_i
92
95
 
93
96
  requires :directory, :key
94
- object = if directory.key == ''
97
+ directory_key = collection.check_directory_key(directory.key)
98
+ object = if directory_key == ''
95
99
  key
96
100
  else
97
- directory.key + '/' + key
101
+ directory_key + '/' + key
98
102
  end
99
103
  service.get_object_http_url_public(object, expires, options)
100
104
  end
@@ -109,11 +113,11 @@ module Fog
109
113
  options['Content-Type'] = content_type if content_type
110
114
  options['Content-Disposition'] = content_disposition if content_disposition
111
115
  options.merge!(metadata_to_headers)
112
-
113
- object = if directory.key == ''
116
+ directory_key = collection.check_directory_key(directory.key)
117
+ object = if directory_key == ''
114
118
  key
115
119
  else
116
- directory.key + '/' + key
120
+ directory_key + '/' + key
117
121
  end
118
122
  if body.is_a?(::File)
119
123
  data = service.put_object(object, body, options).data
@@ -168,10 +172,11 @@ module Fog
168
172
 
169
173
  def metadata_attributes
170
174
  if last_modified
171
- object = if directory.key == ''
175
+ directory_key = collection.check_directory_key(directory.key)
176
+ object = if directory_key == ''
172
177
  key
173
178
  else
174
- directory.key + '/' + key
179
+ directory_key + '/' + key
175
180
  end
176
181
 
177
182
  data = service.head_object(object).data
@@ -15,9 +15,38 @@ module Fog
15
15
 
16
16
  model Fog::Storage::Aliyun::File
17
17
 
18
+ # check_directory_key have two functions:
19
+ # 1. trim the directory_key suffix '/'
20
+ # 2. checking whether the directory_key is a bucket.
21
+ # If so, it will return directly to avoid to create a new redundant folder named with directory_key.
22
+ # This point will be applied to multi-bucket and make bucket as a directory scenario.
23
+ def check_directory_key(directory_key)
24
+ if directory_key != ''
25
+ # trim the suffix '/'
26
+ directory_key = directory_key.chomp('/')
27
+ # The bucket name can not contain '/', so if directory_key, return directory.
28
+ if directory_key.include? '/'
29
+ directory_key
30
+ else
31
+ data = service.get_bucket(directory_key)
32
+ puts "[DEBUG] Getting the bucket named with directory name #{directory_key}..."
33
+ if data.class == Hash && data.key?('Code') && !data['Code'].nil? && !data['Code'].empty?
34
+ puts "[INFO] The directory name #{directory_key} is not a bucket and will create one folder named with it."
35
+ directory_key
36
+ else
37
+ puts "[INFO] The directory name #{directory_key} is a bucket and store objects directly."
38
+ ''
39
+ end
40
+ end
41
+ else
42
+ ''
43
+ end
44
+ end
45
+
18
46
  def all(_options = {})
19
47
  requires :directory
20
- prefix = directory.key + '/' if directory.key != '' && directory.key != '.' && !directory.key.nil?
48
+ directory_key = check_directory_key(directory.key)
49
+ prefix = directory_key + '/' if directory_key != '' && directory_key != '.' && !directory_key.nil?
21
50
  files = service.list_objects(prefix: prefix)['Contents']
22
51
  return if files.nil?
23
52
  data = []
@@ -59,10 +88,11 @@ module Fog
59
88
 
60
89
  def get(key)
61
90
  requires :directory
62
- object = if directory.key == ''
91
+ directory_key = check_directory_key(directory.key)
92
+ object = if directory_key == ''
63
93
  key
64
94
  else
65
- directory.key + '/' + key
95
+ directory_key + '/' + key
66
96
  end
67
97
  begin
68
98
  data = service.get_object(object)
@@ -127,20 +157,22 @@ module Fog
127
157
 
128
158
  def get_url(key)
129
159
  requires :directory
130
- object = if directory.key == ''
160
+ directory_key = check_directory_key(directory.key)
161
+ object = if directory_key == ''
131
162
  key
132
163
  else
133
- directory.key + '/' + key
164
+ directory_key + '/' + key
134
165
  end
135
166
  service.get_object_http_url_public(object, 3600)
136
167
  end
137
168
 
138
169
  def get_http_url(key, expires, options = {})
139
170
  requires :directory
140
- object = if directory.key == ''
171
+ directory_key = check_directory_key(directory.key)
172
+ object = if directory_key == ''
141
173
  key
142
174
  else
143
- directory.key + '/' + key
175
+ directory_key + '/' + key
144
176
  end
145
177
  expires = expires.nil? ? 0 : expires.to_i
146
178
  service.get_object_http_url_public(object, expires, options)
@@ -148,10 +180,11 @@ module Fog
148
180
 
149
181
  def get_https_url(key, expires, options = {})
150
182
  requires :directory
151
- object = if directory.key == ''
183
+ directory_key = check_directory_key(directory.key)
184
+ object = if directory_key == ''
152
185
  key
153
186
  else
154
- directory.key + '/' + key
187
+ directory_key + '/' + key
155
188
  end
156
189
  expires = expires.nil? ? 0 : expires.to_i
157
190
  service.get_object_https_url_public(object, expires, options)
@@ -159,10 +192,11 @@ module Fog
159
192
 
160
193
  def head(key, _options = {})
161
194
  requires :directory
162
- object = if directory.key == ''
195
+ directory_key = check_directory_key(directory.key)
196
+ object = if directory_key == ''
163
197
  key
164
198
  else
165
- directory.key + '/' + key
199
+ directory_key + '/' + key
166
200
  end
167
201
  data = service.head_object(object).data
168
202
  return nil if data[:status] == 404
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fog
4
4
  module Aliyun
5
- VERSION = '0.3.7'
5
+ VERSION = '0.3.8'
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.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
- - Qinsi Deng, Jianxun Li, Jane Han
7
+ - Qinsi Deng, Jianxun Li, Jane Han, Guimin He
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-12 00:00:00.000000000 Z
11
+ date: 2020-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,6 +160,7 @@ description: As a FOG provider, fog-aliyun support aliyun OSS/ECS. It will suppo
160
160
  more aliyun services later.
161
161
  email:
162
162
  - dengqinsi@sina.com
163
+ - guimin.hgm@alibaba-inc.com
163
164
  executables: []
164
165
  extensions: []
165
166
  extra_rdoc_files: []
@@ -308,5 +309,5 @@ requirements: []
308
309
  rubygems_version: 3.0.6
309
310
  signing_key:
310
311
  specification_version: 4
311
- summary: Fog provider for Aliyun Web Services.
312
+ summary: Fog provider for Alibaba Cloud Web Services.
312
313
  test_files: []