fog-aliyun 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
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: []