Compare commits

..
46 Commits
Author SHA1 Message Date
longbai 98b1dc4fac update version for refresh gems 2014-06-20 22:35:37 +08:00
longbai 67f7011777 update doc 2014-06-20 22:23:26 +08:00
Bai Long f699236afd Merge pull request #89 from BluntBlade/qiniu-rs
去掉publish/unpublish接口的封装函数。
2014-04-20 14:31:22 +08:00
Liang Tao cfa75c7e28 添加PR号。 2014-04-18 16:53:24 +08:00
Liang Tao a031645e3c 去掉publish/unpublish接口的封装函数。 2014-04-18 16:50:18 +08:00
Liang Tao a86786b76c Merge branch 'qiniu-rs' of github.com:qiniu/ruby-sdk into qiniu-rs 2014-04-18 16:44:31 +08:00
Liang Tao c77ec97620 修正另一个可能引发大量重试的Bug点。 2014-04-08 16:52:41 +08:00
Bai Long d62fba8290 Merge pull request #87 from BluntBlade/qiniu-rs
修正一直重试上传出错片的Bug。
2014-04-08 11:00:44 +08:00
Liang Tao 35b1682096 添加版本更新说明。 2014-04-08 10:55:14 +08:00
Liang Tao 5aa5934da7 修正一直重试上传出错片的Bug。 2014-04-08 10:48:25 +08:00
LI Daobing c86e22395b Merge pull request #80 from BluntBlade/qiniu-rs
修正加密密钥方法。
2014-03-11 10:28:30 +08:00
Liang Tao ede5f2400a 恢复到最初的Travis配置。 2014-03-10 18:12:04 +08:00
Liang Tao 5a5adc79f9 修正密钥加密方法(#2)。 2014-03-10 17:51:08 +08:00
Liang Tao fdfee5c2bb 修正加密密钥方法。 2014-03-10 16:41:44 +08:00
LI Daobing 4106a5ddc6 Merge pull request #79 from BluntBlade/qiniu-rs
加密七牛密钥。
2014-03-10 15:47:33 +08:00
Liang Tao 3bb30f1b4f 加密七牛密钥。 2014-03-10 14:41:57 +08:00
LI Daobing 55daca055e Merge pull request #78 from BluntBlade/qiniu-rs
删除rbx测试项目,添加2.0.0和2.1.1测试项目。
2014-03-10 13:41:50 +08:00
Liang Tao 672b8d18cc 删除rbx测试项目,添加2.0.0和2.1.1测试项目。 2014-03-10 13:39:14 +08:00
LI Daobing 83f7939510 Merge pull request #77 from BluntBlade/qiniu-rs
修正授权凭证算法、删除过期SDK函数、修正相关测试用例
2014-03-10 12:58:06 +08:00
Liang Tao c506e410b6 删除过期的Auth函数和相关测试用例。 2014-03-10 11:35:34 +08:00
Liang Tao a7dbcbcee8 修正授权凭证生成算法,并调整测试用例。 2014-03-10 11:09:12 +08:00
LI Daobing 4548061f87 Merge pull request #76 from BluntBlade/qiniu-rs
添加版本更新信息,修正部分文档链接。
2014-03-06 15:39:33 +08:00
Liang Tao 4d7dc24c60 修正版本信息。 2014-03-06 15:36:44 +08:00
Liang Tao ff86b2ac50 添加版本更新信息,修正部分文档链接。 2014-03-06 15:06:32 +08:00
404 f1461c338e Merge pull request #66 from qiniu/v3
rm staus icon
2013-09-27 14:02:29 -07:00
why404 67280b714e rm status icons 2013-09-28 04:51:21 +08:00
404 8f86e6903a Merge pull request #65 from why404/hotfix/v3.4.6
Hotfix/v3.4.6
2013-09-27 12:46:15 -07:00
why404 47cf54069d Gemfile 2013-09-28 03:44:32 +08:00
why404 0bb4edcade fix :pattern requried 2013-09-28 03:42:00 +08:00
404 b1e6235b2e Merge pull request #57 from why404/hotfix/v3.4.5
Gemfile.lock ver fix
2013-07-24 18:24:51 -07:00
why404 e5d2367a27 ver fix 2013-07-25 09:22:56 +08:00
404 3186ba40df Merge pull request #56 from why404/release/v3.4.4
release v3.4.4
2013-07-23 11:12:30 -07:00
why404 c5708424b9 release v3.4.4 2013-07-24 02:09:19 +08:00
404 f85ee1159b Merge pull request #54 from qiniu/release/v3.4.3
callbackBody + returnUrl supported
2013-07-23 10:52:29 -07:00
why404 804c7609ef returnUrl 2013-07-24 01:47:50 +08:00
404 49ab640493 Merge pull request #53 from GaiaMagic/master
Support callback_body option
2013-07-23 10:37:48 -07:00
HungYuHei 85f8e68399 Support callback_body option 2013-07-22 23:18:54 +08:00
LI Daobing 7dbec75553 Merge pull request #50 from qiniu/develop
merge develop to master
2013-07-19 02:26:59 -07:00
LI Daobing 3299d2bd02 Merge remote-tracking branch 'origin/master' into develop
Conflicts:
	docs/README.md
2013-07-19 15:59:42 +08:00
LI Daobing ec8c50383b disable ruby-head on travis 2013-07-19 15:54:30 +08:00
LI Daobing 9cc157c21d Merge pull request #51 from longshanksmo/fix/test_account
use new account & correct test code
2013-07-18 22:33:25 -07:00
longshanksmo 3d40d4e967 use new account & correct test code 2013-07-19 13:23:45 +08:00
hantuo fa85e838fc Merge pull request #49 from longshanksmo/fix/lost_link
Fix/lost link
2013-07-17 22:02:33 -07:00
longshanksmo 38970b66e3 Update README.md 2013-07-17 20:33:46 +08:00
longshanksmo 63ccf3f2dc Update README.md
correct the title
2013-07-17 20:32:32 +08:00
longshanksmo 5c011aa816 fix links 2013-07-17 20:29:56 +08:00
18 changed files with 125 additions and 262 deletions
+3 -5
View File
@@ -3,13 +3,11 @@ rvm:
- 1.8.7
- 1.9.2
- 1.9.3
- 2.0.0
- jruby-18mode
- jruby-19mode
- rbx-18mode
- rbx-19mode
- ruby-head
- jruby-head
- ree
before_script:
- export QINIU_ACCESS_KEY=iN7NgwM31j4-BZacMjPrOQBs34UG1maYCAQmhdCV
- export QINIU_SECRET_KEY=6QTOr2Jg1gcZEWDQXKOGZh5PziC2MCV5KsntT70j
- export QINIU_ACCESS_KEY=LGRqJsjX7LAvtdtX6hhyxs861lS57HwnOQmJsOuX
- export QINIU_SECRET_KEY=g_OxhuN5iJ1O7BoA6YdXyF6zSszk34UZFKDfdIIW
+25 -4
View File
@@ -1,14 +1,35 @@
## CHANGE LOG
### v3.4.9
- 去掉publish和unpublish接口的封装函数。 [https://github.com/qiniu/ruby-sdk/pull/89](https://github.com/qiniu/ruby-sdk/pull/89) (#8143)
### v3.4.8
- 修复断点续上传功能中一直重试上传出错片的Bug。[https://github.com/qiniu/ruby-sdk/pull/87](https://github.com/qiniu/ruby-sdk/pull/87) (#7205)
### v3.4.7
- 停止追加新功能,仅进行Bug修正维护。
### v3.4.6
- `Qiniu::RS.generate_download_token()` 方法的 `:pattern` 调整为必选项。
### v3.4.5
- `Qiniu::RS.generate_upload_token()` 方法新增 `:callback_body``return_url` 选项。
- 选项含义参考: <http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html#put-policy-callback-body>
### v3.4.2
- `Qiniu::RS.generate_upload_token()` 方法新增 `:return_body` 选项。
该选项(`:return_body`)可设置文件上传成功后,执行七牛云存储规定的回调API,并以 JSON 响应格式返回其执行结果。参考 [uploadToken 之 returnBody 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-returnBody)。
该选项(`:return_body`)可设置文件上传成功后,执行七牛云存储规定的回调API,并以 JSON 响应格式返回其执行结果。参考 [uploadToken 之 returnBody 说明](http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html#put-policy-return-body)。
### v3.4.1
增加为上传文件进行预转的选项,参见 [uploadToken 之 asyncOps 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-asyncOps)
增加为上传文件进行预转的选项,参见 [uploadToken 之 asyncOps 说明](http://docs.qiniu.com/api/v6/put.html#uploadToken-asyncOps)
- `Qiniu::RS.generate_upload_token()` 方法新增 `:async_options` 选项用于进行预转操作。
@@ -35,9 +56,9 @@ Ruby 宿主环境如下
### v3.3.0
私有资源下载新版实现,添加 Qiniu::RS.generate_download_token() 方法。参考 [downloadToken](http://docs.qiniutek.com/v3/api/io/#get)
私有资源下载新版实现,添加 Qiniu::RS.generate_download_token() 方法。参考 [downloadToken](http://developer.qiniu.com/docs/v6/api/reference/security/download-token.html)
详见 [Ruby SDK 使用文档之私有资源下载](http://docs.qiniutek.com/v3/sdk/ruby/#download-private-files)
详见 [Ruby SDK 使用文档之私有资源下载](http://developer.qiniu.com/docs/v6/api/overview/dn/security.html)
### v3.2.2
+3 -3
View File
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
qiniu-rs (3.4.2)
qiniu-rs (3.4.9)
json (~> 1.7)
mime-types (~> 1.19)
rest-client (~> 1.6)
@@ -12,8 +12,8 @@ GEM
specs:
diff-lcs (1.1.3)
fakeweb (1.3.0)
json (1.7.6)
mime-types (1.20.1)
json (1.8.1)
mime-types (1.23)
rake (10.0.3)
rest-client (1.6.7)
mime-types (>= 1.16)
+8 -3
View File
@@ -1,8 +1,13 @@
# Qiniu Resource (Cloud) Storage SDK for Ruby - [![Build Status](https://api.travis-ci.org/qiniu/ruby-sdk.png?branch=master)](https://travis-ci.org/qiniu/ruby-sdk) [![Dependency Status](https://gemnasium.com/why404/qiniu-rs-for-ruby.png)](https://gemnasium.com/why404/qiniu-rs-for-ruby)
# Qiniu Resource (Cloud) Storage SDK for Ruby
# 版本说明
此版本不再进行技术升级,仅做Bug修正维护。
请移步 [https://github.com/qiniu/ruby-sdk](https://github.com/qiniu/ruby-sdk) 查看最新版本。
# 关于
此 Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 [七牛云存储官方API](http://docs.qiniutek.com/v3/api/) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
此 Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 [七牛云存储官方API](http://developer.qiniu.com/docs/v6/index.html) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
## 安装
@@ -20,7 +25,7 @@
## 使用
参考文档:[七牛云存储 Ruby SDK 使用指南](http://docs.qiniutek.com/v3/sdk/ruby/)
参考文档:[七牛云存储 Ruby SDK 使用指南](http://developer.qiniu.com/docs/v6/sdk/ruby-sdk.html)
## 贡献代码
+24 -22
View File
@@ -1,12 +1,10 @@
---
title: Ruby SDK 使用指南 | 七牛云存储
title: Ruby SDK
---
# Ruby SDK 使用指南
Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 [七牛云存储官方API](http://docs.qiniu.com/) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 [七牛云存储官方API](/v3/api/) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
七牛云存储 Ruby SDK 源码地址:<https://github.com/qiniu/ruby-sdk> [![Build Status](https://api.travis-ci.org/qiniu/ruby-sdk.png?branch=master)](https://travis-ci.org/qiniu/ruby-sdk) [![Dependency Status](https://gemnasium.com/why404/qiniu-rs-for-ruby.png)](https://gemnasium.com/why404/qiniu-rs-for-ruby)
七牛云存储 Ruby SDK 源码地址:<https://github.com/qiniu/ruby-sdk>
**目录**
@@ -76,8 +74,8 @@ title: Ruby SDK 使用指南 | 七牛云存储
要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得:
1. [开通七牛开发者帐号](https://dev.qiniutek.com/signup)
2. [登录七牛开发者自助平台,查看 Access Key 和 Secret Key](https://dev.qiniutek.com/account/keys)
1. [开通七牛开发者帐号](https://portal.qiniu.com/signup)
2. [登录七牛开发者自助平台,查看 Access Key 和 Secret Key](https://portal.qiniu.com/setting/key)
在获取到 Access Key 和 Secret Key 之后,您可以在您的程序中调用如下两行代码进行初始化对接:
@@ -110,7 +108,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
### 文件上传
**注意**:如果您只是想要上传已存在您电脑本地或者是服务器上的文件到七牛云存储,可以直接使用七牛提供的 [qrsync](/v3/tools/qrsync/) 上传工具。如果是需要通过您的网站或是移动应用(App)上传文件,则可以接入使用此 SDK,详情参考如下文档说明。
**注意**:如果您只是想要上传已存在您电脑本地或者是服务器上的文件到七牛云存储,可以直接使用七牛提供的 [qrsync](http://docs.qiniu.com/tools/qrsync.html) 上传工具。如果是需要通过您的网站或是移动应用(App)上传文件,则可以接入使用此 SDK,详情参考如下文档说明。
<a name="generate-upload-token"></a>
@@ -123,6 +121,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
Qiniu::RS.generate_upload_token :scope => target_bucket,
:expires_in => expires_in_seconds,
:callback_url => callback_url,
:callback_body => callback_body,
:callback_body_type => callback_body_type,
:customer => end_user_id,
:escape => allow_upload_callback_api,
@@ -140,6 +139,9 @@ title: Ruby SDK 使用指南 | 七牛云存储
:callback_url
: 可选,字符串类型(String),用于设置文件上传成功后,七牛云存储服务端要回调客户方的业务服务器地址。
:callback_body
: 可选,字符串类型(String),用于设置文件上传成功后,七牛云存储服务端向客户方的业务服务器发送回调请求的值。
:callback_body_type
: 可选,字符串类型(String),用于设置文件上传成功后,七牛云存储服务端向客户方的业务服务器发送回调请求的 `Content-Type`
@@ -147,15 +149,15 @@ title: Ruby SDK 使用指南 | 七牛云存储
: 可选,字符串类型(String),客户方终端用户(End User)的ID,该字段可以用来标示一个文件的属主,这在一些特殊场景下(比如给终端用户上传的图片打上名字水印)非常有用。
:escape
: 可选,数字类型,可选值 0 或者 1,缺省为 0 。值为 1 表示 callback 传递的自定义数据中允许存在转义符号 `$(VarExpression)`,参考 [VarExpression](/v3/api/words/#VarExpression)。
: 可选,数字类型,可选值 0 或者 1,缺省为 0 。值为 1 表示 callback 传递的自定义数据中允许存在转义符号 `$(VarExpression)`,参考 [VarExpression](http://docs.qiniutek.com/v3/api/words/#VarExpression)。
`escape` 的值为 `1` 时,常见的转义语法如下:
-`callbackBodyType``application/json` 时,一个典型的自定义回调数据([CallbackParams](/v3/api/io/#CallbackParams))为:
-`callbackBodyType``application/json` 时,一个典型的自定义回调数据([CallbackParams](http://docs.qiniutek.com/v3/api/io/#CallbackParams))为:
`{foo: "bar", w: $(imageInfo.width), h: $(imageInfo.height), exif: $(exif)}`
-`callbackBodyType``application/x-www-form-urlencoded` 时,一个典型的自定义回调数据([CallbackParams](/v3/api/io/#CallbackParams))为:
-`callbackBodyType``application/x-www-form-urlencoded` 时,一个典型的自定义回调数据([CallbackParams](http://docs.qiniutek.com/v3/api/io/#CallbackParams))为:
`foo=bar&w=$(imageInfo.width)&h=$(imageInfo.height)&exif=$(exif)`
@@ -163,7 +165,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
: 可选,字符串类型(String),用于设置文件上传成功后,执行指定的预转指令。参考 [uploadToken 之 asyncOps 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-asyncOps)
:return_body
: 可选,字符串类型(String),用于设置文件上传成功后,执行七牛云存储规定的回调API,并以 JSON 响应格式返回其执行结果。参考 [uploadToken 之 returnBody 说明](/v3/api/io/#uploadToken-returnBody)。
: 可选,字符串类型(String),用于设置文件上传成功后,执行七牛云存储规定的回调API,并以 JSON 响应格式返回其执行结果。参考 [uploadToken 之 returnBody 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-returnBody)。
**返回值**
@@ -227,7 +229,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
##### 开启断点续上传
无需任何额外改动,SDK 提供的 `Qiniu::RS.upload_file()` 方法缺省支持断点续上传。默认情况下,SDK 会自动启用断点续上传的方式来上传超过 4MB 大小的文件。您也可以在 [应用接入](/v3/sdk/ruby/#establish_connection!) 时通过修改缺省配置来设置该阀值:
无需任何额外改动,SDK 提供的 `Qiniu::RS.upload_file()` 方法缺省支持断点续上传。默认情况下,SDK 会自动启用断点续上传的方式来上传超过 4MB 大小的文件。您也可以在 [应用接入](http://docs.qiniutek.com/v3/sdk/ruby/#establish_connection!) 时通过修改缺省配置来设置该阀值:
Qiniu::RS.establish_connection! :access_key => YOUR_APP_ACCESS_KEY,
:secret_key => YOUR_APP_SECRET_KEY,
@@ -270,9 +272,9 @@ title: Ruby SDK 使用指南 | 七牛云存储
简单来讲,客户端上传流程分为两步:
1. [服务端生成上传授权凭证(uploadToken](#generate-upload-token)
2. 客户端程序调用 [iOS](/v3/sdk/objc/) / [Android](/v3/sdk/android/) SDK 的文件上传方法进行上传
2. 客户端程序调用 [iOS](http://docs.qiniu.com/ios-sdk/index.html) / [Android](http://docs.qiniu.com/android-sdk/index.html) SDK 的文件上传方法进行上传
如果是网页直传文件到七牛云存储,网页可以使用 JavaScript 动态实现 [七牛云存储上传API](/v3/api/io/#upload-file-by-html-form)。
如果是网页直传文件到七牛云存储,网页可以使用 JavaScript 动态实现 [七牛云存储上传API](http://docs.qiniutek.com/v3/api/io/#upload-file-by-html-form)。
通过客户端直传文件,您的终端用户即可把数据(比如图片或视频)直接上传到七牛云存储服务器上,而无须经由您的服务端中转,终端用户上传数据始终是离他物理距离最近的七牛存储节点。当终端用户上传成功后,七牛云存储服务端会向您指定的 `callback_url` (一般在 [uploadToken](#generate-upload-token) 里边指定)发送回调数据(回调数据在客户端程序里边指定)。如果 `callback_url` 所指向的服务端处理完毕后输出 `JSON` 格式的数据,七牛云存储服务端会将该回调请求所得的 JSON 响应信息原封不动地返回给客户端应用程序。
@@ -297,9 +299,9 @@ title: Ruby SDK 使用指南 | 七牛云存储
[GET] http://<绑定域名>/<key>
绑定域名可以是自定义域名,可以在 [七牛云存储开发者自助网站](https://dev.qiniutek.com/buckets) 进行域名绑定操作。
绑定域名可以是自定义域名,可以在 [七牛云存储开发者自助网站](https://portal.qiniu.com/) 进行域名绑定操作。
注意,尖括号不是必需,代表替换项。
**注意**,尖括号不是必需,代表替换项。
<a name="download-private-files"></a>
@@ -328,7 +330,7 @@ expires_in
: 可选,数字类型,用于设置上传 URL 的有效期,单位:秒,缺省为 3600 秒,即 1 小时后该下载授权凭证(downloadToken)不再有效。
pattern
: 必,字符串类型,用于设置可匹配的下载链接。参考:[downloadToken pattern 详解](/v3/api/io/#download-token-pattern)
: 必,字符串类型,用于设置可匹配的下载链接。参考:[downloadToken pattern 详解](http://docs.qiniutek.com/v3/api/io/#download-token-pattern)
<a name="other-download-features"></a>
@@ -339,7 +341,7 @@ pattern
##### 断点续下载
七牛云存储支持标准的断点续下载,参考:[云存储API之断点续下载](/v3/api/io/#download-by-range-bytes)
七牛云存储支持标准的断点续下载,参考:[云存储API之断点续下载](http://docs.qiniu.com/api/get.html#download-by-range-bytes)
<a name="upload-file-for-not-found"></a>
@@ -347,7 +349,7 @@ pattern
您可以上传一个应对 HTTP 404 出错处理的文件,当用户访问一个不存在的文件时,即可使用您上传的“自定义404文件”代替之。要这么做,您只须使用 `Qiniu::RS.upload_file` 函数上传一个 `key` 为固定字符串类型的值 `errno-404` 即可。
除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](/v3/tools/qboxrsctl/) 达到同样的目的:
除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](http://docs.qiniu.com/tools/qboxrsctl.html) 达到同样的目的:
qboxrsctl put <Bucket> <Key> <LocalFile>
@@ -687,7 +689,7 @@ mogrify_options
:auto_orient => <TrueOrFalse>
}
`Qiniu::RS.image_mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](/v3/api/foimg/#fo-imageMogr)。
`Qiniu::RS.image_mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](http://docs.qiniu.com/api/image-process.html#imageMogr)。
**返回值**
@@ -727,7 +729,7 @@ mogrify_options
:auto_orient => <TrueOrFalse>
}
`Qiniu::RS::Image.mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](/v3/api/foimg/#fo-imageMogr)
`Qiniu::RS::Image.mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](http://docs.qiniu.com/api/image-process.html#imageMogr)
**返回值**
+2 -12
View File
@@ -182,12 +182,12 @@ module Qiniu
end
def batch_copy(*args)
code, data = RS.batch_copy(args)
code, data = RS.batch_copy(*args)
code == StatusOK
end
def batch_move(*args)
code, data = RS.batch_move(args)
code, data = RS.batch_move(*args)
code == StatusOK
end
@@ -204,16 +204,6 @@ module Qiniu
code == StatusOK ? data : false
end
def publish(domain, bucket)
code, data = RS.publish(domain, bucket)
code == StatusOK
end
def unpublish(domain)
code, data = RS.unpublish(domain)
code == StatusOK
end
def drop(bucket)
code, data = RS.drop(bucket)
code == StatusOK
+1 -66
View File
@@ -8,78 +8,13 @@ module Qiniu
class << self
include Utils
def exchange_by_password!(username, password)
@username = username
@password = password
post_data = {
:client_id => Config.settings[:client_id],
:grant_type => "password",
:username => username,
:password => password
}
code, data = http_request Config.settings[:auth_url], post_data
reset_token(data["access_token"], data["refresh_token"]) if Utils.is_response_ok?(code)
[code, data]
end
def exchange_by_refresh_token!(refresh_token)
post_data = {
:client_id => Config.settings[:client_id],
:grant_type => "refresh_token",
:refresh_token => refresh_token
}
code, data = http_request Config.settings[:auth_url], post_data
reset_token(data["access_token"], data["refresh_token"]) if Utils.is_response_ok?(code)
[code, data]
end
def reset_token(access_token, refresh_token)
@access_token = access_token
@refresh_token = refresh_token
end
def call_with_logged_in(url, data, retry_times = 0)
raise MissingAccessToken if @access_token.nil?
code, data = http_request url, data, {:access_token => @access_token}
if code == 401
raise MissingRefreshToken if @refresh_token.nil?
code, data = exchange_by_refresh_token!(@refresh_token)
if code == 401
raise MissingUsernameOrPassword if (@username.nil? || @password.nil?)
code, data = exchange_by_password!(@username, @password)
end
if Utils.is_response_ok?(code)
retry_times += 1
if Config.settings[:auto_reconnect] && retry_times < Config.settings[:max_retry_times]
return call_with_logged_in(url, data, retry_times)
end
end
end
[code, data]
end
def call_with_signature(url, data, retry_times = 0, options = {})
code, data = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data)})
code, data = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data, options[:mime])})
[code, data]
end
def request(url, data = nil, options = {})
begin
if Config.settings[:access_key].empty? || Config.settings[:secret_key].empty?
code, data = Auth.call_with_logged_in(url, data)
else
code, data = Auth.call_with_signature(url, data, 0, options)
end
rescue MissingAccessToken => e
Log.logger.error e
code, data = 401, {}
rescue MissingRefreshToken => e
Log.logger.error e
code, data = 401, {}
rescue MissingUsernameOrPassword => e
Log.logger.error e
code, data = 401, {}
end
[code, data]
end
+2 -2
View File
@@ -20,9 +20,9 @@ module Qiniu
:method => :post,
:content_type => 'application/x-www-form-urlencoded',
:auth_url => "https://acc.qbox.me/oauth2/token",
:rs_host => "http://rs.qbox.me",
:rs_host => "http://rs.qiniu.com",
:io_host => "http://iovip.qbox.me",
:up_host => "http://up.qbox.me",
:up_host => "http://up.qiniu.com",
:pub_host => "http://pu.qbox.me:10200",
:eu_host => "http://eu.qbox.me",
:client_id => "a75604760c4da4caaa456c0c5895c061c3065c5a",
+2 -12
View File
@@ -40,16 +40,6 @@ module Qiniu
Auth.request Config.settings[:rs_host] + '/delete/' + encode_entry_uri(bucket, key)
end
def publish(domain, bucket)
encoded_domain = Utils.urlsafe_base64_encode(domain)
Auth.request Config.settings[:rs_host] + "/publish/#{encoded_domain}/from/#{bucket}"
end
def unpublish(domain)
encoded_domain = Utils.urlsafe_base64_encode(domain)
Auth.request Config.settings[:rs_host] + "/unpublish/#{encoded_domain}"
end
def drop(bucket)
Auth.request Config.settings[:rs_host] + "/drop/#{bucket}"
end
@@ -60,7 +50,7 @@ module Qiniu
encoded_uri = encode_entry_uri(bucket, key)
execs << "op=/#{command}/#{encoded_uri}"
end
Auth.request Config.settings[:rs_host] + "/batch?" + execs.join("&")
Auth.request Config.settings[:rs_host] + "/batch", execs.join("&"), {:mime => "application/x-www-form-urlencoded" }
end
def batch_get(bucket, keys)
@@ -108,7 +98,7 @@ module Qiniu
op_args.each do |e|
execs << 'op=' + _generate_cp_or_mv_opstr(command, e[0], e[1], e[2], e[3]) if e.size == 4
end
Auth.request Config.settings[:rs_host] + "/batch?" + execs.join("&")
Auth.request Config.settings[:rs_host] + "/batch", execs.join("&"), {:mime => "application/x-www-form-urlencoded" }
end
end
+4
View File
@@ -200,6 +200,8 @@ module Qiniu
break
elsif i == retry_times && data["crc32"] != body_crc32
Log.logger.error %Q(Uploading block error. Expected crc32: #{body_crc32}, but got: #{data["crc32"]})
# 上传重试达到上限,直接返回错误
return [code, data]
end
end
elsif progress[:offset] + progress[:restsize] != block_size
@@ -230,6 +232,8 @@ module Qiniu
break
elsif i == retry_times && data["crc32"] != body_crc32
Log.logger.error %Q(Uploading block error. Expected crc32: #{body_crc32}, but got: #{data["crc32"]})
# 上传重试达到上限,直接返回错误
return [code, data]
end
end
end
+4 -1
View File
@@ -127,7 +127,7 @@ module Qiniu
File.open(filepath, "rb") { |f| Zlib.crc32 f.read }
end
def generate_qbox_signature(url, params)
def generate_qbox_signature(url, params, mime = nil)
access_key = Config.settings[:access_key]
secret_key = Config.settings[:secret_key]
uri = URI.parse(url)
@@ -139,6 +139,9 @@ module Qiniu
params_string = generate_query_string(params)
signature += params_string
end
if mime.is_a?(String) && mime == "application/x-www-form-urlencoded" && params.is_a?(String)
signature += params
end
hmac = HMAC::SHA1.new(secret_key)
hmac.update(signature)
encoded_digest = urlsafe_base64_encode(hmac.digest)
+1 -1
View File
@@ -5,7 +5,7 @@ module Qiniu
module Version
MAJOR = 3
MINOR = 4
PATCH = 2
PATCH = 10
# Returns a version string by joining <tt>MAJOR</tt>, <tt>MINOR</tt>, and <tt>PATCH</tt> with <tt>'.'</tt>
#
# Example
+1 -1
View File
@@ -13,7 +13,7 @@ module Qiniu
attr_accessor :pattern, :expires_in
def initialize(opts = {})
@pattern = opts[:pattern] || "*"
@pattern = opts[:pattern]
@expires_in = opts[:expires_in] || 3600
end
+5 -1
View File
@@ -10,27 +10,31 @@ module Qiniu
include Utils
attr_accessor :scope, :expires_in, :callback_url, :callback_body_type, :customer, :escape, :async_options, :return_body
attr_accessor :scope, :expires_in, :callback_url, :callback_body, :callback_body_type, :customer, :escape, :async_options, :return_body, :return_url
def initialize(opts = {})
@scope = opts[:scope]
@expires_in = opts[:expires_in] || 3600
@callback_url = opts[:callback_url]
@callback_body = opts[:callback_body]
@callback_body_type = opts[:callback_body_type]
@customer = opts[:customer]
@escape = opts[:escape]
@async_options = opts[:async_options]
@return_body = opts[:return_body]
@return_url = opts[:return_url]
end
def generate_signature
params = {:scope => @scope, :deadline => Time.now.to_i + @expires_in}
params[:callbackUrl] = @callback_url if !@callback_url.nil? && !@callback_url.empty?
params[:callbackBody] = @callback_body if !@callback_body.nil? && !@callback_body.empty?
params[:callbackBodyType] = @callback_body_type if !@callback_body_type.nil? && !@callback_body_type.empty?
params[:customer] = @customer if !@customer.nil? && !@customer.empty?
params[:escape] = 1 if @escape == 1 || @escape == true
params[:asyncOps] = @async_options if !@async_options.nil? && !@async_options.empty?
params[:returnBody] = @return_body if !@return_body.nil? && !@return_body.empty?
params[:returnUrl] = @return_url if !@return_url.nil? && !@return_url.empty?
Utils.urlsafe_base64_encode(params.to_json)
end
+4 -4
View File
@@ -4,10 +4,10 @@ require File.expand_path('../lib/qiniu/rs/version', __FILE__)
Gem::Specification.new do |gem|
gem.authors = ["why404"]
gem.email = ["why404@gmail.com"]
gem.description = %q{Qiniu Resource (Cloud) Storage SDK for Ruby. See: http://docs.qiniutek.com/v3/sdk/ruby/}
gem.summary = %q{Qiniu Resource (Cloud) Storage SDK for Ruby}
gem.homepage = "https://github.com/qiniu/ruby-sdk"
gem.email = ["sdk@qiniu.com"]
gem.description = %q{Deprecated Qiniu Resource (Cloud) Storage SDK for Ruby. Please use new SDK https://rubygems.org/gems/qiniu}
gem.summary = %q{Deprecated Qiniu Resource (Cloud) Storage SDK for Ruby}
gem.homepage = "https://github.com/qiniu/ruby-sdk/tree/qiniu-rs"
gem.files = `git ls-files`.split($\)
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
-58
View File
@@ -1,58 +0,0 @@
# -*- encoding: utf-8 -*-
require 'spec_helper'
require 'qiniu/rs/auth'
module Qiniu
module RS
describe Auth do
before :all do
@username = "qboxtest"
@password = "qboxtest123"
code, data = Qiniu::RS::Auth.exchange_by_password!(@username, @password)
code.should == 200
data.should be_an_instance_of(Hash)
data["access_token"].should_not be_empty
data["refresh_token"].should_not be_empty
data["refresh_token"].should_not be_empty
@access_token = data["access_token"]
@refresh_token = data["refresh_token"]
puts data.inspect
end
context ".exchange_by_password" do
it "should sign in failed when pass a non-existent username" do
code, data = Qiniu::RS::Auth.exchange_by_password!("a_non_existent_user@example.com", "password")
code.should == 401
data["error_code"].should == 11
data["error"].should == "failed_authentication"
puts data.inspect
end
it "should sign in failed when pass a wrong password" do
code, data = Qiniu::RS::Auth.exchange_by_password!(@username, "a-wrong-password")
code.should == 401
data["error_code"].should == 11
data["error"].should == "failed_authentication"
puts data.inspect
end
end
context ".exchange_by_refresh_token" do
it "should works" do
@refresh_token.should_not be_empty
code, data = Qiniu::RS::Auth.exchange_by_refresh_token!(@refresh_token)
code.should == 200
data["access_token"].should_not be_empty
data["refresh_token"].should_not be_empty
data["expires_in"].should_not be_zero
puts data.inspect
end
end
end
end
end
+20 -33
View File
@@ -92,19 +92,24 @@ module Qiniu
context ".batch_copy" do
it "should works" do
code, data = Qiniu::RS::RS.batch_copy [@bucket, @key, @bucket, @key2]
code, data = Qiniu::RS::RS.batch_copy @bucket, @key, @bucket, @key2
code.should == 200
puts data.inspect
#code2, data2 = Qiniu::RS::RS.stat(@bucket, @key2)
#code2.should == 200
#puts data2.inspect
#
code, data = Qiniu::RS::RS.delete(@bucket, @key2)
code.should == 200
puts data.inspect
end
end
context ".batch_move" do
it "should works" do
code, data = Qiniu::RS::RS.batch_move [@bucket, @key, @bucket, @key2]
code, data = Qiniu::RS::RS.batch_move @bucket, @key, @bucket, @key2
code.should == 200
puts data.inspect
@@ -112,42 +117,12 @@ module Qiniu
#code2.should == 200
#puts data2.inspect
code3, data3 = Qiniu::RS::RS.batch_move [@bucket, @key2, @bucket, @key]
code3, data3 = Qiniu::RS::RS.batch_move @bucket, @key2, @bucket, @key
code3.should == 200
puts data3.inspect
end
end
=begin
context ".publish" do
it "should works" do
code, data = Qiniu::RS::RS.publish(@domain, @bucket)
code.should == 200
puts data.inspect
end
end
context ".unpublish" do
it "should works" do
code, data = Qiniu::RS::RS.unpublish(@domain)
code.should == 200
puts data.inspect
end
end
=end
context ".copy" do
it "should works" do
code, data = Qiniu::RS::RS.copy(@bucket, @key, @bucket, @key2)
code.should == 200
puts data.inspect
#code2, data2 = Qiniu::RS::RS.stat(@bucket, @key2)
#code2.should == 200
#puts data2.inspect
end
end
context ".move" do
it "should works" do
code, data = Qiniu::RS::RS.move(@bucket, @key, @bucket, @key2)
@@ -164,6 +139,18 @@ module Qiniu
end
end
context ".copy" do
it "should works" do
code, data = Qiniu::RS::RS.copy(@bucket, @key, @bucket, @key2)
code.should == 200
puts data.inspect
#code2, data2 = Qiniu::RS::RS.stat(@bucket, @key2)
#code2.should == 200
#puts data2.inspect
end
end
context ".delete" do
it "should works" do
code, data = Qiniu::RS::RS.delete(@bucket, @key)
+16 -34
View File
@@ -32,9 +32,6 @@ module Qiniu
end
after :all do
#result = Qiniu::RS.unpublish(@domain)
#result.should_not be_false
result1 = Qiniu::RS.drop(@bucket)
puts result1.inspect
result1.should_not be_false
@@ -278,57 +275,32 @@ module Qiniu
end
end
=begin
context ".publish" do
it "should works" do
result = Qiniu::RS.publish(@domain, @bucket)
result.should_not be_false
end
end
=end
=begin
context ".unpublish" do
it "should works" do
result = Qiniu::RS.unpublish(@domain)
result.should_not be_false
end
end
=end
context ".batch_copy" do
it "should works" do
result = Qiniu::RS.batch_copy [@bucket, @key, @bucket, @key2]
result = Qiniu::RS.batch_copy @bucket, @key, @bucket, @key2
result.should_not be_false
#result2 = Qiniu::RS.stat(@bucket, @key2)
#result2.should_not be_false
result = Qiniu::RS.delete @bucket, @key2
result.should_not be_false
end
end
context ".batch_move" do
it "should works" do
result = Qiniu::RS::RS.batch_move [@bucket, @key, @bucket, @key2]
result = Qiniu::RS.batch_move @bucket, @key, @bucket, @key2
result.should_not be_false
#result2 = Qiniu::RS.stat(@bucket, @key2)
#result2.should_not be_false
result3 = Qiniu::RS.batch_move [@bucket, @key2, @bucket, @key]
result3 = Qiniu::RS.batch_move @bucket, @key2, @bucket, @key
result3.should_not be_false
end
end
context ".copy" do
it "should works" do
result = Qiniu::RS.copy(@bucket, @key, @bucket, @key2)
result.should_not be_false
#result2 = Qiniu::RS.stat(@bucket, @key2)
#result2.should_not be_false
end
end
context ".move" do
it "should works" do
result = Qiniu::RS.move(@bucket, @key, @bucket, @key2)
@@ -342,6 +314,16 @@ module Qiniu
end
end
context ".copy" do
it "should works" do
result = Qiniu::RS.copy(@bucket, @key, @bucket, @key2)
result.should_not be_false
#result2 = Qiniu::RS.stat(@bucket, @key2)
#result2.should_not be_false
end
end
context ".delete" do
it "should works" do
result = Qiniu::RS.delete(@bucket, @key)