aliyun-oss-sdk 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b2e96e96c0a7b06bd88f47438253eafed9dc23e0
4
+ data.tar.gz: 45ea2abaf578d016a75cd6352bd4adb83a080ee4
5
+ SHA512:
6
+ metadata.gz: 6281c501347c3a4b596737c259f43716fde2da7b54330534b88fab93d9a898583076b6e2747ba389c47ecfba95a359f8c90f9b4bb5ceacdaa183b9051b0f0ab9
7
+ data.tar.gz: 98d94648c71197f89b40f5d60c1dae649b27bca725926757dff834c31955e7d1a73d6a06bb1f6564ea7cd3b0012c74b46528f4a4d8ddf3aad4377acfb11f8983
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ demo/config/secrets.yml
11
+ demo/config/database.yml
data/.rubocop.yml CHANGED
@@ -1,5 +1,9 @@
1
1
  # This is the configuration used to check the rubocop source code.
2
2
 
3
+ AllCops:
4
+ Exclude:
5
+ - 'demo/**/*'
6
+
3
7
  Metrics/LineLength:
4
8
  Max: 100
5
9
  Enabled: false
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Aliyun OSS SDK
2
2
 
3
- [![Build Status](https://travis-ci.org/zlx/aliyun-oss-sdk.svg?branch=develop)](https://travis-ci.org/zlx/aliyun-oss-sdk)
4
- [![Code Climate](https://codeclimate.com/repos/56349060695680028b00b4a5/badges/fccd40948ea96a4eb507/gpa.svg)](https://codeclimate.com/repos/56349060695680028b00b4a5/feed)
5
- [![Coverage Status](https://coveralls.io/repos/zlx/aliyun-oss-sdk/badge.svg?branch=develop&service=github)](https://coveralls.io/github/zlx/aliyun-oss-sdk?branch=develop)
3
+ [![Build Status](https://travis-ci.org/zlx/aliyun-oss-ruby-sdk.svg)](https://travis-ci.org/zlx/aliyun-oss-ruby-sdk)
4
+ [![Coverage Status](https://coveralls.io/repos/zlx/aliyun-oss-ruby-sdk/badge.svg?branch=master&service=github)](https://coveralls.io/github/zlx/aliyun-oss-ruby-sdk?branch=master)
5
+ [![Inline docs](http://inch-ci.org/github/zlx/aliyun-oss-ruby-sdk.svg?branch=master)](http://inch-ci.org/github/zlx/aliyun-oss-ruby-sdk)
6
6
 
7
7
  -----
8
8
 
@@ -19,7 +19,7 @@ It's a Ruby Gem, so you can install it like any Gem:
19
19
 
20
20
  If you use Gemfile manage your Gems, Add below to your Gemfile.
21
21
 
22
- gem "aliyun-oss-sdk"
22
+ gem "aliyun-oss-sdk", require: 'aliyun/oss'
23
23
 
24
24
  And run:
25
25
 
@@ -73,7 +73,7 @@ Here are some more guides for help you. Welcome to advice.
73
73
  # Details: https://docs.aliyun.com/#/pub/oss/product-documentation/domain-region#menu2
74
74
  # bucket: your bucket name
75
75
 
76
- client = Aliyun::OSS::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
76
+ client = Aliyun::Oss::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
77
77
 
78
78
 
79
79
  # Upload object
@@ -96,7 +96,7 @@ Here are some more guides for help you. Welcome to advice.
96
96
  # Details: https://docs.aliyun.com/#/pub/oss/product-documentation/domain-region#menu2
97
97
  # bucket: your bucket name
98
98
 
99
- client = Aliyun::OSS::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
99
+ client = Aliyun::Oss::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
100
100
 
101
101
 
102
102
  # Upload object
@@ -116,12 +116,23 @@ Here are some more guides for help you. Welcome to advice.
116
116
  bucket = client.buckets.list.first || Aliyun::Oss::Struct::Bucket.new(name: bucket_name, client: client)
117
117
  multipart = client.bucket_multiparts.list.first || Aliyun::Oss::Struct::Multipart.new(upload_id: upload_id, key: object_key, client: client)
118
118
  bucket_object = client.bucket_objects.list.first || Aliyun::Oss::Struct::Object.new(key: object_key, client: client)
119
+ file = client.bucket_objects.list.select(&:file?).first || Aliyun::Oss::Struct::File.new(key: object_key, client: client)
120
+ directory = Client.bucket_objects.list.reject(&:file?) || Aliyun::Oss::Struct::Directory.new(key: object_key, client: client)
119
121
 
120
122
  ### Share your files
121
123
 
122
- Sometimes, you want to share some file in your private bucket with your friends , but you donot want to share your AccessKey, thus, Aliyun provide alternative way: [Put signature in URL](https://docs.aliyun.com/#/pub/oss/api-reference/access-control&signature-url)
124
+ Sometimes, you want to share some file from your private bucket with your friends , but you donot want to share your AccessKey, thus, Aliyun provide alternative way: [Put signature in URL](https://docs.aliyun.com/#/pub/oss/api-reference/access-control&signature-url)
123
125
 
124
- We provide a method to calculate signature for you:
126
+ We provide a method to get share link for your object:
127
+
128
+ # Generate Share link expired in 3600 seconds
129
+ share_link = client.bucket_get_object_share_link('object-key', 3600)
130
+
131
+ # OR
132
+ file = Aliyun::Oss::Struct::File.new(key: 'object-key', client: client)
133
+ share_link = file.share_link(3600)
134
+
135
+ Besides, if you need more control for temporary signature:
125
136
 
126
137
  # Return Singature string
127
138
  Aliyun::Oss::Authorization.get_temporary_signature('SECRET_KEY', Time.now.to_i + 60*60, verb: 'GET', bucket: 'bucket-name', key: 'object-name')
@@ -141,6 +152,7 @@ With Post Form, we need Post Policy to restrict permissions, here we provide two
141
152
  # Return Signature with policy, can used to fill your form field: Signature
142
153
  client.get_policy_signature(SECRET_KEY, policy)
143
154
 
155
+ Here, we provide a [DEMO](demo/app/views/home/new_post.html.erb).
144
156
 
145
157
  ### API Mapping
146
158
 
@@ -151,55 +163,82 @@ Note:
151
163
  + All Function Based API are instance methods of `Aliyun::Oss::Client`
152
164
  + Object Based API belongs to some other class list below:
153
165
 
154
- + buckets: `Aliyun::Oss::Client::BucketsService`
155
- + bucket_objects: `Aliyun::Oss::Client::BucketObjectsService`
156
- + bucket_multiparts: `Aliyun::Oss::Client::BucketMultipartsService`
157
- + bucket: `Aliyun::Oss::Struct::Bucket`
158
- + multipart: `Aliyun::Oss::Struct::Multipart`
159
- + object: `Aliyun::Oss::Struct::Object`
166
+ + Bucket: `Aliyun::Oss::Client::BucketsService`
167
+ + BucketObject: `Aliyun::Oss::Client::BucketObjectsService`
168
+ + BucketMultipart: `Aliyun::Oss::Client::BucketMultipartsService`
169
+ + Bucket: `Aliyun::Oss::Struct::Bucket`
170
+ + Multipart: `Aliyun::Oss::Struct::Multipart`
171
+ + Object: `Aliyun::Oss::Struct::Object`
172
+ + File: `Aliyun::Oss::Struct::File`
173
+ + Directory: `Aliyun::Oss::Strcut:Directory`
174
+
175
+
176
+ #### Service
177
+
178
+ | Restful API | Function Based | Object Based |
179
+ | ------------ | --------------- | ------------- |
180
+ |[GetService (ListBucket)](https://docs.aliyun.com/#/pub/oss/api-reference/service&GetService) |bucket_list |Buckets#list |
181
+
182
+ #### Bucket
183
+
184
+ | Restful API | Function Based | Object Based |
185
+ | ------------ | --------------- | ------------- |
186
+ |[Put Bucket](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucket) |bucket_create | Buckets#create|
187
+ |[Put Bucket Acl](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketACL) |bucket_set_acl | Bucket#set_acl|
188
+ |[Put Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketLogging)|bucket_enable_logging | Bucket#enable_logging|
189
+ |[Put Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketWebsite) |bucket_enable_website | Bucket#enable_website|
190
+ |[Put Bucket Referer](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketReferer) |bucket_set_referer | Bucket#set_referer|
191
+ |[Put Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketLifecycle) | bucket_enable_lifecycle| Bucket#enable_lifecycle|
192
+ |[Get Bucket (List Object)](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket) | bucket_list_objects| Bucket_objects#list, Directory#list|
193
+ |[Get Bucket ACL](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketAcl) | bucket_get_acl| Bucket#acl!|
194
+ |[Get Bucket Location](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLocation)| bucket_get_location| Bucket#location!|
195
+ |[Get Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLogging) | bucket_get_logging| Bucket#logging!|
196
+ |[Get Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketWebsite) | bucket_get_website| Bucket#website!|
197
+ |[Get Bucket Referer](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketReferer) | bucket_get_referer| Bucket#referer!|
198
+ |[Get Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLifecycle) | bucket_get_lifecycle| Bucket#lifecycle!|
199
+ |[Delete Bucket](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucket) | bucket_delete| Buckets#delete|
200
+ |[Delete Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketLogging) | bucket_disable_logging| Bucket#disable_logging|
201
+ |[Delete Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketWebsite) | bucket_disable_website| Bucket#disable_website|
202
+ |[Delete Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketLifecycle) | bucket_disable_lifecycle| Bucket#disable_lifecycle|
203
+
204
+
205
+ #### Object
206
+
207
+ | Restful API | Function Based | Object Based |
208
+ | ------------ | --------------- | ------------- |
209
+ |[Put Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&PutObject)| bucket_create_object| BucketObject#create|
210
+ |[Copy Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&CopyObject) | bucket_copy_object| BucketObject#copy|
211
+ |[Get Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&GetObject) | bucket_get_object| BucketObject#get|
212
+ |[Append Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&AppendObject)| bucket_append_object| BucketObject#append|
213
+ |[Delete Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&DeleteObject)| bucket_delete_object| BucketObject#delete|
214
+ |[Delete Multiple Objects](https://docs.aliyun.com/#/pub/oss/api-reference/object&DeleteMultipleObjects)| bucket_delete_objects| BucketObject#delete_multiple|
215
+ |[Head Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&HeadObject) | bucket_preflight| Bucket#preflight, Bucket#options|
216
+ |[Put Object ACL](https://docs.aliyun.com/#/pub/oss/api-reference/object&PutObjectACL) | bucket_set_object_acl| Object#set_acl|
217
+ |[Get Object ACL](https://docs.aliyun.com/#/pub/oss/api-reference/object&GetObjectACL) | bucket_get_object_acl| Object#acl!|
218
+ |[Post Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&PostObject) | [DEMO](demo/app/views/home/new_post.html.erb)| [DEMO](demo/app/views/home/new_post.html.erb)|
219
+ | Share Link | bucket_get_object_share_link | file#share_link |
220
+
221
+
222
+ #### Multipart Upload
223
+
224
+ | Restful API | Function Based | Object Based |
225
+ | ------------ | --------------- | ------------- |
226
+ |[Initiate Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&InitiateMultipartUpload) | bucket_init_multipart| BucketMultipart#init|
227
+ |[Upload Part](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&UploadPart) | bucket_multipart_upload| Multipart#upload|
228
+ |[Upload Part Copy](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&UploadPartCopy) | bucket_multipart_copy_upload| Multipart#copy|
229
+ |[Complete Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&CompleteMultipartUpload) | bucket_complete_multipart| Multipart#complete|
230
+ |[Abort Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&AbortMultipartUpload) | bucket_abort_multipart| Multipart#abort|
231
+ |[List Multipart Uploads](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&ListMultipartUploads) | bucket_list_multiparts| BucketMultipart#list|
232
+ |[List Parts](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&ListParts) | bucket_list_parts| Multipart#list_parts|
160
233
 
234
+ #### CORS
161
235
 
162
236
  | Restful API | Function Based | Object Based |
163
- |---|---|
164
- |[GetService (ListBucket)](https://docs.aliyun.com/#/pub/oss/api-reference/service&GetService) |bucket_list |buckets#list |
165
- |[Put Bucket](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucket) |bucket_create | buckets#create|
166
- |[Put Bucket Acl](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketACL) |bucket_set_acl | bucket#set_acl|
167
- |[Put Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketLogging)|bucket_enable_logging | bucket#enable_logging|
168
- |[Put Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketWebsite) |bucket_enable_website | bucket#enable_website|
169
- |[Put Bucket Referer](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketReferer) |bucket_set_referer | bucket#set_referer|
170
- |[Put Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&PutBucketLifecycle) | bucket_enable_lifecycle| bucket#enable_lifecycle|
171
- |[Get Bucket (List Object)](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket) | bucket_list_objects| bucket_objects#list|
172
- |[Get Bucket ACL](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketAcl) | bucket_get_acl| bucket#acl!|
173
- |[Get Bucket Location](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLocation)| bucket_get_location| bucket#location!|
174
- |[Get Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLogging) | bucket_get_logging| bucket#logging!|
175
- |[Get Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketWebsite) | bucket_get_website| bucket#website!|
176
- |[Get Bucket Referer](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketReferer) | bucket_get_referer| bucket#referer!|
177
- |[Get Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucketLifecycle) | bucket_get_lifecycle| bucket#lifecycle!|
178
- |[Delete Bucket](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucket) | bucket_delete| buckets#delete|
179
- |[Delete Bucket Logging](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketLogging) | bucket_disable_logging| bucket#disable_logging|
180
- |[Delete Bucket Website](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketWebsite) | bucket_disable_website| bucket#disable_website|
181
- |[Delete Bucket Lifecycle](https://docs.aliyun.com/#/pub/oss/api-reference/bucket&DeleteBucketLifecycle) | bucket_disable_lifecycle| bucket#disable_lifecycle|
182
- |[Put Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&PutObject)| bucket_create_object| bucket_objects#create|
183
- |[Copy Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&CopyObject) | bucket_copy_object| bucket_objects#copy|
184
- |[Get Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&GetObject) | bucket_get_object| bucket_objects#get|
185
- |[Append Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&AppendObject)| bucket_append_object| bucket_objects#append|
186
- |[Delete Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&DeleteObject)| bucket_delete_object| bucket_objects#delete|
187
- |[Delete Multiple Objects](https://docs.aliyun.com/#/pub/oss/api-reference/object&DeleteMultipleObjects)| bucket_delete_objects| bucket_objects#delete_multiple|
188
- |[Head Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&HeadObject) | bucket_preflight| bucket#preflight, bucket#options|
189
- |[Put Object ACL](https://docs.aliyun.com/#/pub/oss/api-reference/object&PutObjectACL) | bucket_set_object_acl| object#set_acl|
190
- |[Get Object ACL](https://docs.aliyun.com/#/pub/oss/api-reference/object&GetObjectACL) | bucket_get_object_acl| object#acl!|
191
- |[Post Object](https://docs.aliyun.com/#/pub/oss/api-reference/object&PostObject) | ...| ...|
192
- |[Initiate Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&InitiateMultipartUpload) | bucket_init_multipart| bucket_multiparts#init|
193
- |[Upload Part](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&UploadPart) | bucket_multipart_upload| multipart#upload|
194
- |[Upload Part Copy](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&UploadPartCopy) | bucket_multipart_copy_upload| multipart#copy|
195
- |[Complete Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&CompleteMultipartUpload) | bucket_complete_multipart| multipart#complete|
196
- |[Abort Multipart Upload](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&AbortMultipartUpload) | bucket_abort_multipart| multipart#abort|
197
- |[List Multipart Uploads](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&ListMultipartUploads) | bucket_list_multiparts| bucket_multiparts#list|
198
- |[List Parts](https://docs.aliyun.com/#/pub/oss/api-reference/multipart-upload&ListParts) | bucket_list_parts| multipart#list_parts|
199
- |[Put Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&PutBucketcors) | bucket_enable_cors| bucket#enable_cors|
200
- |[Get Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&GetBucketcors) | bucket_get_cors| bucket#cors!|
201
- |[Delete Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&DeleteBucketcors) | bucket_disable_cors| bucket#disable_cors|
202
- |[OPTIONS Object](https://docs.aliyun.com/#/pub/oss/api-reference/cors&OptionObject)| bucket_get_meta_object| object#meta!|
237
+ | ------------ | --------------- | ------------- |
238
+ |[Put Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&PutBucketcors) | bucket_enable_cors| Bucket#enable_cors|
239
+ |[Get Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&GetBucketcors) | bucket_get_cors| Bucket#cors!|
240
+ |[Delete Bucket cors](https://docs.aliyun.com/#/pub/oss/api-reference/cors&DeleteBucketcors) | bucket_disable_cors| Bucket#disable_cors|
241
+ |[OPTIONS Object](https://docs.aliyun.com/#/pub/oss/api-reference/cors&OptionObject)| bucket_get_meta_object| Object#meta!|
203
242
 
204
243
 
205
244
  ## Test
data/aliyun-oss.gemspec CHANGED
@@ -13,12 +13,13 @@ Gem::Specification.new do |spec|
13
13
  spec.description = 'Aliyun OSS Ruby SDK'
14
14
  spec.homepage = 'https://github.com/zlx/aliyun-oss-sdk'
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|demo)/}) }
17
17
  spec.bindir = 'exe'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'httparty'
22
+ spec.add_dependency 'addressable'
22
23
  spec.add_dependency 'gyoku'
23
24
 
24
25
  spec.add_development_dependency 'bundler'
data/lib/aliyun/oss.rb CHANGED
@@ -1,13 +1,11 @@
1
1
  require 'aliyun/oss/version'
2
- require 'aliyun/oss/client'
3
2
  require 'aliyun/oss/struct'
4
3
  require 'aliyun/oss/error'
5
4
 
6
5
  module Aliyun
7
6
  module Oss
8
7
  autoload :Utils, 'aliyun/oss/utils'
9
- autoload :Http, 'aliyun/oss/http'
8
+ autoload :Client, 'aliyun/oss/client'
10
9
  autoload :Authorization, 'aliyun/oss/authorization'
11
- autoload :XmlGenerator, 'aliyun/oss/xml_generator'
12
10
  end
13
11
  end
@@ -52,15 +52,13 @@ module Aliyun
52
52
  # @param source_bucket [String] the source bucket name
53
53
  # @param source_key [String] the source object name
54
54
  # @param [Hash] headers
55
- # @option options [String] :source_bucket the source bucket name
56
- # @option options [String] :source_key the source object name
57
- # @option options [String] :x-oss-copy-source-if-match If the specified ETag match the source object ETag, normal transfer and return 200; Otherwise return 412(precondition)
58
- # @option options [String] :x-oss-copy-source-if-none-match If the specified ETag not match the source object ETag, normal transfer and return 200; Otherwise return 304(Not Modified)
59
- # @option options [String] :x-oss-copy-source-if-unmodified-since If the specified time is equal to or later than the source object last modification time, normal transfer ans return 200; Otherwise returns 412(precondition)
60
- # @option options [String] :x-oss-copy-source-if-modified-since If the specified time is earlier than the source object last modification time, normal transfer ans return 200; Otherwise returns 304(not modified)
61
- # @option options [String] :x-oss-metadata-directive ('COPY') supported value: COPY, REPLACE;
62
- # @option options [String] :x-oss-server-side-encryption supported value: AES256
63
- # @option options [String] :x-oss-object-acl supported value: public-read, private, public-read-write
55
+ # @option headers [String] :x-oss-copy-source-if-match If the specified ETag match the source object ETag, normal transfer and return 200; Otherwise return 412(precondition)
56
+ # @option headers [String] :x-oss-copy-source-if-none-match If the specified ETag not match the source object ETag, normal transfer and return 200; Otherwise return 304(Not Modified)
57
+ # @option headers [String] :x-oss-copy-source-if-unmodified-since If the specified time is equal to or later than the source object last modification time, normal transfer ans return 200; Otherwise returns 412(precondition)
58
+ # @option headers [String] :x-oss-copy-source-if-modified-since If the specified time is earlier than the source object last modification time, normal transfer ans return 200; Otherwise returns 304(not modified)
59
+ # @option headers [String] :x-oss-metadata-directive ('COPY') supported value: COPY, REPLACE;
60
+ # @option headers [String] :x-oss-server-side-encryption supported value: AES256
61
+ # @option headers [String] :x-oss-object-acl supported value: public-read, private, public-read-write
64
62
  #
65
63
  # @raise [RequestError]
66
64
  #
@@ -123,6 +121,27 @@ module Aliyun
123
121
  http.get("/#{key}", query: query, headers: headers, bucket: bucket, key: key)
124
122
  end
125
123
 
124
+ # Get object share link
125
+ #
126
+ # @param key [String] the Object name
127
+ # @param expired_in_seconds [Integer] expire after specify seconds
128
+ #
129
+ # @return [String]
130
+ def bucket_get_object_share_link(key, expired_in_seconds)
131
+ expire_time = Time.now.to_i + expired_in_seconds
132
+
133
+ signature = Authorization.get_temporary_signature(
134
+ @secret_key,
135
+ expire_time,
136
+ verb: 'GET',
137
+ bucket: bucket,
138
+ key: key
139
+ )
140
+
141
+ Utils.get_endpoint(bucket, @options[:host]) + "#{key}?" \
142
+ "OSSAccessKeyId=#{@access_key}&Expires=#{expire_time}&Signature=#{signature}"
143
+ end
144
+
126
145
  # Delete object from bucket
127
146
  #
128
147
  # @see https://docs.aliyun.com/#/pub/oss/api-reference/object&DeleteObject Delete Object
@@ -4,13 +4,15 @@ module Aliyun
4
4
  module Buckets
5
5
  # List buckets
6
6
  #
7
- # @see https://docs.aliyun.com/#/pub/oss/api-reference/service&GetService GetService (ListBucket
7
+ # @see https://docs.aliyun.com/#/pub/oss/api-reference/service&GetService GetService (ListBucket)
8
8
  #
9
9
  # @param options [Hash] options
10
10
  # @option options [String] :prefix Filter buckets with prefix
11
11
  # @option options [String] :marker Bucket name should after marker in alphabetical order
12
12
  # @option options [Integer] :max-keys (100) Limit number of buckets, the maxinum should <= 1000
13
13
  #
14
+ # @raise [RequestError]
15
+ #
14
16
  # @return [Response]
15
17
  def list_buckets(options = {})
16
18
  Utils.stringify_keys!(options)
@@ -29,7 +31,7 @@ module Aliyun
29
31
  # @param location [String] Specify the bucket's data center location, can be one of below:
30
32
  # oss-cn-hangzhou,oss-cn-qingdao,oss-cn-beijing,oss-cn-hongkong,
31
33
  # oss-cn-shenzhen,oss-cn-shanghai,oss-us-west-1 ,oss-ap-southeast-1
32
- # @param acl [String] Specify the bucket's access. (see #bucket_set_acl)
34
+ # @param acl [String] Specify the bucket's access. {Aliyun::Oss::Api::BucketProperty#bucket_set_acl}
33
35
  #
34
36
  # @raise [RequestError]
35
37
  #
@@ -1,9 +1,14 @@
1
+ require 'aliyun/oss/xml_generator'
2
+ # Function Based
1
3
  require 'aliyun/oss/api/buckets'
2
4
  require 'aliyun/oss/api/bucket_property'
3
5
  require 'aliyun/oss/api/bucket_objects'
4
6
  require 'aliyun/oss/api/bucket_multiparts'
7
+ # Object Based
5
8
  require 'aliyun/oss/client/clients'
6
9
 
10
+ require 'aliyun/oss/http'
11
+
7
12
  module Aliyun
8
13
  module Oss
9
14
  class Client
@@ -4,13 +4,12 @@ module Aliyun
4
4
  module BucketMultiparts
5
5
  # Init a Multipart Upload Event
6
6
  #
7
- # @param (see #bucket_init_multipart)
7
+ # @see Api::BucketMultiparts#bucket_init_multipart
8
+ # @example (see Api::BucketMultiparts#bucket_init_multipart)
9
+ # @param (see Api::BucketMultiparts#bucket_init_multipart)
10
+ # @raise (see Api::BucketMultiparts#bucket_init_multipart)
8
11
  #
9
- # @raise [RequestError]
10
- #
11
- # @return [Aliyun::Oss::Struct::Multipart]
12
- #
13
- # @see Client#bucket_init_multipart
12
+ # @return [Struct::Multipart]
14
13
  def init(*args)
15
14
  result = client.bucket_init_multipart(*args).parsed_response
16
15
 
@@ -20,15 +19,12 @@ module Aliyun
20
19
 
21
20
  # List exist Multipart Upload Events of bucket
22
21
  #
23
- # @param (see #bucket_list_multiparts)
24
- #
25
- # @option (see #bucket_list_multiparts)
26
- #
27
- # @raise [RequestError]
22
+ # @see Api::BucketMultiparts#bucket_list_multiparts
23
+ # @example (see Api::BucketMultiparts#bucket_list_multiparts)
24
+ # @param (see Api::BucketMultiparts#bucket_list_multiparts)
25
+ # @raise (see Api::BucketMultiparts#bucket_list_multiparts)
28
26
  #
29
27
  # @return [Array<Aliyun::Oss::Struct::Multipart>]
30
- #
31
- # @see Client#bucket_list_multiparts
32
28
  def list(*args)
33
29
  result = client.bucket_list_multiparts(*args).parsed_response
34
30
 
@@ -4,14 +4,12 @@ module Aliyun
4
4
  module BucketObjects
5
5
  # List objects of bucket
6
6
  #
7
- # @param (see #bucket_list_objects)
8
- # @option (see #bucket_list_objects)
9
- #
10
- # @raise [RequestError]
7
+ # @see Api::BucketObjects#bucket_list_objects
8
+ # @example (see Api::BucketObjects#bucket_list_objects)
9
+ # @param (see Api::BucketObjects#bucket_list_objects)
10
+ # @raise (see Api::BucketObjects#bucket_list_objects)
11
11
  #
12
12
  # @return [Array<Aliyun::Oss::Struct::Object>]
13
- #
14
- # @see Client#bucket_list_objects
15
13
  def list(*args)
16
14
  result = client.bucket_list_objects(*args).parsed_response
17
15
 
@@ -23,84 +21,72 @@ module Aliyun
23
21
 
24
22
  # create object of bucket
25
23
  #
26
- # @param (see #bucket_create_object)
27
- #
28
- # @raise [RequestError]
24
+ # @see Api::BucketObjects#bucket_create_object
25
+ # @example (see Api::BucketObjects#bucket_create_object)
26
+ # @param (see Api::BucketObjects#bucket_create_object)
27
+ # @raise (see Api::BucketObjects#bucket_create_object)
29
28
  #
30
29
  # @return [true]
31
- #
32
- # @see Client#bucket_create_object
33
30
  def create(*args)
34
31
  !!client.bucket_create_object(*args)
35
32
  end
36
33
 
37
34
  # Delete object for bucket
38
35
  #
39
- # @param (see #bucket_delete_object)
40
- #
41
- # @raise [RequestError]
36
+ # @see Api::BucketObjects#bucket_delete_object
37
+ # @example (see Api::BucketObjects#bucket_delete_object)
38
+ # @param (see Api::BucketObjects#bucket_delete_object)
39
+ # @raise (see Api::BucketObjects#bucket_delete_object)
42
40
  #
43
41
  # @return [true]
44
- #
45
- # @see Client#bucket_delete_object
46
42
  def delete(*args)
47
43
  !!client.bucket_delete_object(*args)
48
44
  end
49
45
 
50
46
  # Delete objects for bucket
51
47
  #
52
- # @param (see #bucket_delete_objects)
53
- #
54
- # @raise [RequestError]
48
+ # @see Api::BucketObjects#bucket_delete_objects
49
+ # @example (see Api::BucketObjects#bucket_delete_objects)
50
+ # @param (see Api::BucketObjects#bucket_delete_objects)
51
+ # @raise (see Api::BucketObjects#bucket_delete_objects)
55
52
  #
56
53
  # @return [true]
57
- #
58
- # @see Client#bucket_delete_objects
59
54
  def delete_multiple(*args)
60
55
  !!client.bucket_delete_objects(*args)
61
56
  end
62
57
 
63
58
  # Copy from existing object
64
59
  #
65
- # @param (see #bucket_copy_object)
66
- #
67
- # @option (see #bucket_copy_object)
68
- #
69
- # @raise [RequestError]
60
+ # @see Api::BucketObjects#bucket_copy_object
61
+ # @example (see Api::BucketObjects#bucket_copy_object)
62
+ # @param (see Api::BucketObjects#bucket_copy_object)
63
+ # @raise (see Api::BucketObjects#bucket_copy_object)
70
64
  #
71
65
  # @return [true]
72
- #
73
- # @see Client#bucket_copy_object
74
66
  def copy(*args)
75
67
  !!client.bucket_copy_object(*args)
76
68
  end
77
69
 
78
70
  # Get Object
79
71
  #
80
- # @param (see #bucket_get_object)
81
- #
82
- # @option (see #bucket_get_object)
83
- #
84
- # @raise [RequestError]
72
+ # @see Api::BucketObjects#bucket_get_object
73
+ # @example (see Api::BucketObjects#bucket_get_object)
74
+ # @param (see Api::BucketObjects#bucket_get_object)
75
+ # @raise (see Api::BucketObjects#bucket_get_object)
85
76
  #
86
- # @return [String]
87
- #
88
- # @see Client#bucekt_get_object
77
+ # @return [BodyString]
89
78
  def get(*args)
90
79
  client.bucket_get_object(*args).body
91
80
  end
92
81
 
93
82
  # Append data to a object, will create Appendable object
94
83
  #
95
- # @see https://docs.aliyun.com/#/pub/oss/api-reference/object&AppendObject Append Object
96
- #
97
- # @param (see #bucket_append_object)
98
- #
99
- # @raise (see #bucket_append_object)
84
+ # @see Api::BucketObjects#bucket_append_object
85
+ # @example (see Api::BucketObjects#bucket_append_object)
86
+ # @param (see Api::BucketObjects#bucket_append_object)
87
+ # @raise (see Api::BucketObjects#bucket_append_object)
100
88
  #
101
89
  # @return [HTTParty::Response::Headers]
102
- #
103
- # @see Client#bucket_append_object
104
90
  def append(*args)
105
91
  client.bucket_append_object(*args).headers
106
92
  end
@@ -4,12 +4,12 @@ module Aliyun
4
4
  module Buckets
5
5
  # List buckets
6
6
  #
7
- # @param (see #list_buckets)
8
- # @option (see #list_buckets)
7
+ # @see Api::Buckets#list_buckets
8
+ # @example (see Api::Buckets#list_buckets)
9
+ # @param (see Api::Buckets#list_buckets)
10
+ # @raise (see Api::Buckets#list_buckets)
9
11
  #
10
12
  # @return [Array<Aliyun::Oss::Struct::Bucket>]
11
- #
12
- # @see Client#list_buckets
13
13
  def list(options = {})
14
14
  result = client.list_buckets(options).parsed_response
15
15
 
@@ -21,22 +21,24 @@ module Aliyun
21
21
 
22
22
  # Create bucket
23
23
  #
24
- # @param (see #bucket_create)
24
+ # @see Api::Buckets#bucket_create
25
+ # @example (see Api::Buckets#bucket_create)
26
+ # @param (see Api::Buckets#bucket_create)
27
+ # @raise (see Api::Buckets#bucket_create)
25
28
  #
26
29
  # @return [true]
27
- #
28
- # @see Client#bucket_create
29
30
  def create(*args)
30
31
  !!client.bucket_create(*args)
31
32
  end
32
33
 
33
34
  # Delete bucket
34
35
  #
35
- # @param (see #bucket_delete)
36
+ # @see Api::Buckets#bucket_delete
37
+ # @example (see Api::Buckets#bucket_delete)
38
+ # @param (see Api::Buckets#bucket_delete)
39
+ # @raise (see Api::Buckets#bucket_delete)
36
40
  #
37
41
  # @return [true]
38
- #
39
- # @see Client#bucket_delete
40
42
  def delete(*args)
41
43
  !!client.bucket_delete(*args)
42
44
  end
@@ -15,6 +15,10 @@ module Aliyun
15
15
  #
16
16
  # client.bucket_multiparts
17
17
  #
18
+ # current_bucket: get current bucket
19
+ #
20
+ # client.current_bucket
21
+ #
18
22
  #
19
23
  class Client
20
24
  def buckets
@@ -30,6 +34,11 @@ module Aliyun
30
34
  Client::BucketMultipartsService.new(self)
31
35
  end
32
36
 
37
+ def current_bucket
38
+ @services[:current_bucket] ||= \
39
+ Aliyun::Oss::Struct::Bucket.new(name: bucket, client: self)
40
+ end
41
+
33
42
  ClientService = ::Struct.new(:client)
34
43
 
35
44
  require 'aliyun/oss/client/buckets'
@@ -1,4 +1,5 @@
1
1
  require 'httparty'
2
+ require 'addressable/uri'
2
3
  require 'aliyun/oss/error'
3
4
 
4
5
  module Aliyun
@@ -49,7 +50,7 @@ module Aliyun
49
50
  append_headers!(headers, verb, body, options)
50
51
 
51
52
  path = api_endpoint(headers['Host']) + resource
52
- options = { headers: headers, query: query, body: body }
53
+ options = { headers: headers, query: query, body: body, uri_adapter: Addressable::URI }
53
54
 
54
55
  wrap(HTTParty.__send__(verb.downcase, path, options))
55
56
  end
@@ -22,17 +22,18 @@ module Aliyun
22
22
  #
23
23
  # @return [String]
24
24
  #
25
- # @see Client#bucket_get_location
25
+ # @see Api::BucketProperty#bucket_get_location
26
26
  def location!
27
27
  result = client.bucket_get_location.parsed_response
28
- Utils.dig_value(result, 'LocationConstraint', '__content__')
28
+ Utils.dig_value(result, 'LocationConstraint', '__content__') ||
29
+ Utils.dig_value(result, 'LocationConstraint')
29
30
  end
30
31
 
31
32
  # Get Logging configration for bucket
32
33
  #
33
34
  # return [true]
34
35
  #
35
- # @see Client#bucket_get_logging
36
+ # @see Api::BucketProperty#bucket_get_logging
36
37
  def logging!
37
38
  result = client.bucket_get_logging.parsed_response
38
39
  Struct::Logging.new(Utils.dig_value(result, 'BucketLoggingStatus'))
@@ -40,11 +41,12 @@ module Aliyun
40
41
 
41
42
  # Used to enable access logging.
42
43
  #
43
- # @param (see #bucket_enable_logging)
44
+ # @see Api::BucketProperty#bucket_enable_logging
45
+ # @example (see Api::BucketProperty#bucket_enable_logging)
46
+ # @param (see Api::BucketProperty#bucket_enable_logging)
47
+ # @raise (see Api::BucketProperty#bucket_enable_logging)
44
48
  #
45
49
  # @return [true]
46
- #
47
- # @see Client#bucket_enable_logging
48
50
  def enable_logging(*args)
49
51
  !!client.bucket_enable_logging(*args)
50
52
  end
@@ -55,7 +57,7 @@ module Aliyun
55
57
  #
56
58
  # @return [true]
57
59
  #
58
- # @see Client#bucket_disable_logging
60
+ # @see Api::BucketProperty#bucket_disable_logging
59
61
  def disable_logging
60
62
  !!client.bucket_disable_logging
61
63
  end
@@ -64,7 +66,7 @@ module Aliyun
64
66
  #
65
67
  # @return [String]
66
68
  #
67
- # @see Client#bucket_get_acl
69
+ # @see Api::BucketProperty#bucket_get_acl
68
70
  def acl!
69
71
  result = client.bucket_get_acl.parsed_response
70
72
  acl_keys = %w(AccessControlPolicy AccessControlList Grant)
@@ -73,13 +75,12 @@ module Aliyun
73
75
 
74
76
  # Set ACL for bucket
75
77
  #
76
- # @param (see #bucket_set_acl)
77
- #
78
- # @raise (see #bucket_set_acl)
78
+ # @see Api::BucketProperty#bucket_set_acl
79
+ # @example (see Api::BucketProperty#bucket_set_acl)
80
+ # @param (see Api::BucketProperty#bucket_set_acl)
81
+ # @raise (see Api::BucketProperty#bucket_set_acl)
79
82
  #
80
83
  # @return [true]
81
- #
82
- # @see Client#bucket_set_acl
83
84
  def set_acl(*args)
84
85
  !!client.bucket_set_acl(*args)
85
86
  end
@@ -88,7 +89,7 @@ module Aliyun
88
89
  #
89
90
  # @return [Array<Aliyun::Oss::Struct::Cors>]
90
91
  #
91
- # @see Client#bucket_get_cors
92
+ # @see Api::BucketProperty#bucket_get_cors
92
93
  def cors!
93
94
  result = client.bucket_get_cors.parsed_response
94
95
  cors_keys = %w(CORSConfiguration CORSRule)
@@ -99,28 +100,21 @@ module Aliyun
99
100
 
100
101
  # Set CORS for bucket
101
102
  #
102
- # @see (see #bucket_enable_cors)
103
- #
104
- # @param (see #bucket_enable_cors)
105
- #
106
- # @raise (see #bucket_enable_cors)
103
+ # @see Api::BucketProperty#bucket_enable_cors
104
+ # @example (see Api::BucketProperty#bucket_enable_cors)
105
+ # @param (see Api::BucketProperty#bucket_enable_cors)
106
+ # @raise (see Api::BucketProperty#bucket_enable_cors)
107
107
  #
108
108
  # @return [true]
109
- #
110
- # @see Client#bucket_enable_cors
111
109
  def enable_cors(*args)
112
110
  !!client.bucket_enable_cors(*args)
113
111
  end
114
112
 
115
113
  # Disable CORS for bucket
116
114
  #
117
- # @see (see #bucket_disable_cors)
118
- #
119
- # @raise (see #bucket_disable_cors)
120
- #
121
115
  # @return [true]
122
116
  #
123
- # @see Client#bucket_disable_cors
117
+ # @see Api::BucketProperty#bucket_disable_cors
124
118
  def disable_cors
125
119
  !!client.bucket_disable_cors
126
120
  end
@@ -129,7 +123,7 @@ module Aliyun
129
123
  #
130
124
  # @return [Aliyun::Oss::Rule::Website]
131
125
  #
132
- # @see Client#bucket_get_website
126
+ # @see Api::BucketProperty#bucket_get_website
133
127
  def website!
134
128
  result = client.bucket_get_website.parsed_response
135
129
  suffix_keys = %w(WebsiteConfiguration IndexDocument Suffix)
@@ -142,28 +136,21 @@ module Aliyun
142
136
 
143
137
  # Used to enable static website hosted mode.
144
138
  #
145
- # @see (see #bucket_enable_website)
146
- #
147
- # @param (see #bucket_enable_website)
148
- #
149
- # @raise (see #bucket_enable_website)
139
+ # @see Api::BucketProperty#bucket_enable_website
140
+ # @example (see Api::BucketProperty#bucket_enable_website)
141
+ # @param (see Api::BucketProperty#bucket_enable_website)
142
+ # @raise (see Api::BucketProperty#bucket_enable_website)
150
143
  #
151
144
  # @return [true]
152
- #
153
- # @see Client#bucket_enable_website
154
145
  def enable_website(*args)
155
146
  !!client.bucket_enable_website(*args)
156
147
  end
157
148
 
158
149
  # Used to disable website hostted mode.
159
150
  #
160
- # @see (see #bucket_disable_website)
161
- #
162
- # @raise (see #bucket_disable_website)
163
- #
164
- # @return [Response]
151
+ # @return [true]
165
152
  #
166
- # @see Client#bucket_disable_website
153
+ # @see Api::BucketProperty#bucket_disable_website
167
154
  def disable_website
168
155
  !!client.bucket_disable_website
169
156
  end
@@ -172,7 +159,7 @@ module Aliyun
172
159
  #
173
160
  # @return [Aliyun::Oss::Struct::Referer]
174
161
  #
175
- # @see Client#bucket_get_referer
162
+ # @see Api::BucketProperty#bucket_get_referer
176
163
  def referer!
177
164
  result = client.bucket_get_referer.parsed_response
178
165
  allow_empty = %w(RefererConfiguration AllowEmptyReferer)
@@ -185,15 +172,12 @@ module Aliyun
185
172
 
186
173
  # Used to set referer for bucket.
187
174
  #
188
- # @see (see #bucket_set_referer)
189
- #
190
- # @param (see #bucket_set_referer)
191
- #
192
- # @raise (see #bucket_set_referer)
175
+ # @see Api::BucketProperty#bucket_set_referer
176
+ # @example (see Api::BucketProperty#bucket_set_referer)
177
+ # @param (see Api::BucketProperty#bucket_set_referer)
178
+ # @raise (see Api::BucketProperty#bucket_set_referer)
193
179
  #
194
180
  # @return [true]
195
- #
196
- # @see Client#set_referer
197
181
  def set_referer(*args)
198
182
  !!client.bucket_set_referer(*args)
199
183
  end
@@ -202,7 +186,7 @@ module Aliyun
202
186
  #
203
187
  # @return [Array<Aliyun::Oss::Struct::Lifecycle?]
204
188
  #
205
- # @see Client#bucket_get_lifecycle
189
+ # @see Api::BucketProperty#bucket_get_lifecycle
206
190
  def lifecycle!
207
191
  result = client.bucket_get_lifecycle.parsed_response
208
192
  lifecycle_keys = %w(LifecycleConfiguration Rule)
@@ -226,26 +210,21 @@ module Aliyun
226
210
 
227
211
  # Used to disable lifecycle for bucket
228
212
  #
229
- # @raise (see #bucket_disable_lifecycle)
230
- #
231
213
  # @return [true]
232
214
  #
233
- # @see Client#bucket_disable_lifecycle
215
+ # @see Api::BucketProperty#bucket_disable_lifecycle
234
216
  def disable_lifecycle
235
217
  !!client.bucket_disable_lifecycle
236
218
  end
237
219
 
238
220
  # OPTIONS Object
239
221
  #
240
- # @see (see #bucket_preflight)
241
- #
242
- # @param (see #bucket_preflight)
243
- #
244
- # @raise (see #bucket_preflight)
222
+ # @see Api::BucketProperty#bucket_preflight
223
+ # @example (see Api::BucketProperty#bucket_preflight)
224
+ # @param (see Api::BucketProperty#bucket_preflight)
225
+ # @raise (see Api::BucketProperty#bucket_preflight)
245
226
  #
246
227
  # @return [true]
247
- #
248
- # @see Client#bucket_preflight
249
228
  def preflight(*args)
250
229
  !!client.bucket_preflight(*args)
251
230
  end
@@ -7,18 +7,20 @@ module Aliyun
7
7
 
8
8
  # List objects under directory
9
9
  #
10
- # @see #bucket_list_objects
11
- #
12
- # @param (see #bucket_list_objects)
13
- # @option (see #bucket_list_objects)
14
- #
15
- # @raise [RequestError]
10
+ # @see Api::BucketObjects#bucket_list_objects
11
+ # @example (see Api::BucketObjects#bucket_list_objects)
12
+ # @param (see Api::BucketObjects#bucket_list_objects)
13
+ # @raise (see Api::BucketObjects#bucket_list_objects)
16
14
  #
17
15
  # @return [Array<Aliyun::Oss::Struct::Object>]
18
16
  def list(options = {})
19
17
  Utils.stringify_keys!(options)
20
18
  client.bucket_objects.list(options.merge('prefix' => key))
21
19
  end
20
+
21
+ def file?
22
+ false
23
+ end
22
24
  end
23
25
  end
24
26
  end
@@ -2,6 +2,18 @@ module Aliyun
2
2
  module Oss
3
3
  module Struct
4
4
  class File < Object
5
+ def file?
6
+ true
7
+ end
8
+
9
+ # Get object share link
10
+ #
11
+ # @param expired_in_seconds [Integer] expire after specify seconds
12
+ #
13
+ # @return [URL]
14
+ def share_link(expired_in_seconds)
15
+ client.bucket_get_object_share_link(key, expired_in_seconds)
16
+ end
5
17
  end
6
18
  end
7
19
  end
@@ -23,11 +23,13 @@ module Aliyun
23
23
 
24
24
  # Upload part to Multipart Upload Event
25
25
  #
26
+ # @see Api::BucketMultiparts#bucket_multipart_upload
27
+ # @example (see Api::BucketMultiparts#bucket_multipart_upload)
28
+ # @raise (see Api::BucketMultiparts#bucket_multipart_upload)
29
+ #
26
30
  # @param number [Integer] the part number, Range in 1~10000.
27
31
  # @param file [File, bin data] the upload data
28
32
  #
29
- # @raise (see #bucket_multipart_upload)
30
- #
31
33
  # @return [HTTParty::Response::Headers]
32
34
  def upload(*args)
33
35
  client.bucket_multipart_upload(*args.unshift(upload_id, key)).headers
@@ -37,13 +39,12 @@ module Aliyun
37
39
  #
38
40
  # @param number [Integer] the part number, Range in 1~10000.
39
41
  # @param options [Hash] options
40
- # @option (see #bucket_multipart_copy_upload)
41
42
  #
42
- # @raise (see #bucket_multipart_copy_upload)
43
+ # @see Api::BucketMultiparts#bucket_multipart_copy_upload
44
+ # @example (see Api::BucketMultiparts#bucket_multipart_copy_upload)
45
+ # @raise (see Api::BucketMultiparts#bucket_multipart_copy_upload)
43
46
  #
44
47
  # @return [true]
45
- #
46
- # @see Client#bucket_list_parts
47
48
  def copy(*args)
48
49
  !!client.bucket_multipart_copy_upload(*args.unshift(upload_id, key))
49
50
  end
@@ -51,13 +52,12 @@ module Aliyun
51
52
  # List uploaded parts for the Multipart Upload Event
52
53
  #
53
54
  # @param options [Hash] options
54
- # @option (see #bucket_list_parts)
55
55
  #
56
- # @raise (see #bucket_list_parts)
56
+ # @see Api::BucketMultiparts#bucket_list_parts
57
+ # @example (see Api::BucketMultiparts#bucket_list_parts)
58
+ # @raise (see Api::BucketMultiparts#bucket_list_parts)
57
59
  #
58
60
  # @return [Array<Aliyun::Oss::Struct::Part>]
59
- #
60
- # @see Client#bucket_list_parts
61
61
  def list_parts(options = {})
62
62
  result = client.bucket_list_parts(upload_id, key, options)
63
63
  .parsed_response
@@ -70,13 +70,13 @@ module Aliyun
70
70
 
71
71
  # Complete Multipart Upload Event
72
72
  #
73
- # @param parts [Array<Multipart:Part>] parts
73
+ # @param parts [Array<Aliyun::Oss::Multipart:Part>] parts
74
74
  #
75
- # @raise (see #bucket_complete_multipart)
75
+ # @see Api::BucketMultiparts#bucket_complete_multipart
76
+ # @example (see Api::BucketMultiparts#bucket_complete_multipart)
77
+ # @raise (see Api::BucketMultiparts#bucket_complete_multipart)
76
78
  #
77
79
  # @return [Struct::Object]
78
- #
79
- # @see Client#bucket_complete_multipart
80
80
  def complete(parts = [])
81
81
  resp = client.bucket_complete_multipart(upload_id, key, parts)
82
82
  keys = %w(CompleteMultipartUploadResult)
@@ -87,11 +87,12 @@ module Aliyun
87
87
 
88
88
  # Abort Multipart Upload Event
89
89
  #
90
- # @raise (see #bucket_abort_multipart)
90
+ # @see Api::BucketMultiparts#bucket_abort_multipart
91
+ # @note (see Api::BucketMultiparts#bucket_abort_multipart)
92
+ # @example (see Api::BucketMultiparts#bucket_abort_multipart)
93
+ # @raise (see Api::BucketMultiparts#bucket_abort_multipart)
91
94
  #
92
95
  # @return [true]
93
- #
94
- # @see Client#bucket_abort_multipart
95
96
  def abort
96
97
  !!client.bucket_abort_multipart(upload_id, key)
97
98
  end
@@ -10,6 +10,7 @@ module Aliyun
10
10
 
11
11
  # etag of object
12
12
  attr_accessor :etag
13
+ alias_method :e_tag=, :etag=
13
14
 
14
15
  # type of object
15
16
  attr_accessor :type
@@ -6,6 +6,21 @@ require 'gyoku'
6
6
  module Aliyun
7
7
  module Oss
8
8
  class Utils
9
+ # Get endpoint
10
+ #
11
+ # @example
12
+ #
13
+ # get_endpoint('bucket-name', 'oss-cn-hangzhou.aliyuncs.com')
14
+ # # => 'http://bucket-name.oss-cn-hangzhou.aliyuncs.com'
15
+ #
16
+ # @param bucket [String] the Bucket name
17
+ # @param host [String] the host of Bucket
18
+ #
19
+ # @return [String]
20
+ def self.get_endpoint(bucket, host)
21
+ "http://#{bucket}.#{host}/"
22
+ end
23
+
9
24
  # Calculate content length
10
25
  #
11
26
  # @return [Integer]
@@ -1,5 +1,5 @@
1
1
  module Aliyun
2
2
  module Oss
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.5'
4
4
  end
5
5
  end
data/wiki/error.md CHANGED
@@ -6,7 +6,7 @@ If a error occurs when visit the OSS, the OSS will be return a error code and er
6
6
 
7
7
  require 'aliyun/oss'
8
8
 
9
- client = Aliyun::OSS::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
9
+ client = Aliyun::Oss::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
10
10
 
11
11
  res = client.bucket_create("invalid_bucket_name")
12
12
  unless res.success?
@@ -66,4 +66,4 @@ Here,
66
66
  |RequestTimeout |Request Timeout| 400|
67
67
  |RequestIsNotMultiPartContent | Content-Type Invalid| 400|
68
68
  |SignatureDoesNotMatch |Signature Does Not Match|403|
69
- |TooManyBuckets |Too Many Buckets| 400|
69
+ |TooManyBuckets |Too Many Buckets| 400|
@@ -6,7 +6,7 @@ If a error occurs when visit the OSS, the OSS will be return a error code and er
6
6
 
7
7
  require 'aliyun/oss'
8
8
 
9
- client = Aliyun::OSS::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
9
+ client = Aliyun::Oss::Client.new('ACCESS_KEY', 'SECRET_KEY', host: 'oss-cn-hangzhou.aliyuncs.com', bucket: 'oss-sdk-dev-hangzhou')
10
10
 
11
11
  begin
12
12
  client.buckets.create("invalid_bucket_name")
@@ -67,4 +67,4 @@ Here,
67
67
  |RequestTimeout |Request Timeout| 400|
68
68
  |RequestIsNotMultiPartContent | Content-Type Invalid| 400|
69
69
  |SignatureDoesNotMatch |Signature Does Not Match|403|
70
- |TooManyBuckets |Too Many Buckets| 400|
70
+ |TooManyBuckets |Too Many Buckets| 400|
metadata CHANGED
@@ -1,158 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aliyun-oss-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Newell Zhu
9
8
  autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2015-11-02 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: httparty
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: addressable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
28
39
  - !ruby/object:Gem::Version
29
40
  version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: gyoku
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - ">="
36
46
  - !ruby/object:Gem::Version
37
47
  version: '0'
38
48
  type: :runtime
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: bundler
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: rake
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: minitest
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - ">="
84
88
  - !ruby/object:Gem::Version
85
89
  version: '0'
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: mocha
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ! '>='
101
+ - - ">="
100
102
  - !ruby/object:Gem::Version
101
103
  version: '0'
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ! '>='
108
+ - - ">="
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: webmock
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ! '>='
122
+ - - ">="
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: timecop
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - ">="
132
130
  - !ruby/object:Gem::Version
133
131
  version: '0'
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - ">="
140
137
  - !ruby/object:Gem::Version
141
138
  version: '0'
142
139
  - !ruby/object:Gem::Dependency
143
140
  name: rubocop
144
141
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
142
  requirements:
147
- - - ! '>='
143
+ - - ">="
148
144
  - !ruby/object:Gem::Version
149
145
  version: '0'
150
146
  type: :development
151
147
  prerelease: false
152
148
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
149
  requirements:
155
- - - ! '>='
150
+ - - ">="
156
151
  - !ruby/object:Gem::Version
157
152
  version: '0'
158
153
  description: Aliyun OSS Ruby SDK
@@ -162,9 +157,9 @@ executables: []
162
157
  extensions: []
163
158
  extra_rdoc_files: []
164
159
  files:
165
- - .gitignore
166
- - .rubocop.yml
167
- - .travis.yml
160
+ - ".gitignore"
161
+ - ".rubocop.yml"
162
+ - ".travis.yml"
168
163
  - Gemfile
169
164
  - LICENSE
170
165
  - README.md
@@ -219,32 +214,25 @@ files:
219
214
  - wiki/object_based/object.md
220
215
  homepage: https://github.com/zlx/aliyun-oss-sdk
221
216
  licenses: []
217
+ metadata: {}
222
218
  post_install_message:
223
219
  rdoc_options: []
224
220
  require_paths:
225
221
  - lib
226
222
  required_ruby_version: !ruby/object:Gem::Requirement
227
- none: false
228
223
  requirements:
229
- - - ! '>='
224
+ - - ">="
230
225
  - !ruby/object:Gem::Version
231
226
  version: '0'
232
- segments:
233
- - 0
234
- hash: 314123667821853469
235
227
  required_rubygems_version: !ruby/object:Gem::Requirement
236
- none: false
237
228
  requirements:
238
- - - ! '>='
229
+ - - ">="
239
230
  - !ruby/object:Gem::Version
240
231
  version: '0'
241
- segments:
242
- - 0
243
- hash: 314123667821853469
244
232
  requirements: []
245
233
  rubyforge_project:
246
- rubygems_version: 1.8.23.2
234
+ rubygems_version: 2.2.0
247
235
  signing_key:
248
- specification_version: 3
236
+ specification_version: 4
249
237
  summary: Aliyun OSS Ruby SDK
250
238
  test_files: []