Browse Source

Merge pull request #78 from aliyun/fix-sign-url

Fix sign url
Yubin Bai 8 năm trước cách đây
mục cha
commit
52de723902
6 tập tin đã thay đổi với 32 bổ sung10 xóa
  1. 5 0
      CHANGELOG.md
  2. 1 1
      README-CN.md
  3. 1 1
      README.md
  4. 18 1
      oss/bucket_test.go
  5. 4 4
      oss/client_test.go
  6. 3 3
      oss/conn.go

+ 5 - 0
CHANGELOG.md

@@ -1,5 +1,10 @@
 # ChangeLog - Aliyun OSS SDK for Go
 
+## 版本号:1.8.0 日期:2017-12-12
+### 变更内容
+ - 变更:空闲链接关闭时间调整为50秒
+ - 修复:修复临时账号使用SignURL的问题
+
 ## 版本号:1.7.0 日期:2017-09-25
 ### 变更内容
  - 增加:DownloadFile支持CRC校验

+ 1 - 1
README-CN.md

@@ -13,7 +13,7 @@
 > - 使用此SDK,用户可以方便地在任何应用、任何时间、任何地点上传,下载和管理数据。
 
 ## 版本
-> - 当前版本:1.7.0
+> - 当前版本:1.8.0
 
 ## 运行环境
 > - Go 1.5及以上。

+ 1 - 1
README.md

@@ -13,7 +13,7 @@
 > - With this SDK, you can upload, download and manage data on any app anytime and anywhere conveniently. 
 
 ## Version
-> - Current version: 1.7.0. 
+> - Current version: 1.8.0. 
 
 ## Running Environment
 > - Go 1.5 or above. 

+ 18 - 1
oss/bucket_test.go

@@ -1794,7 +1794,7 @@ func (s *OssBucketSuite) TestSTSToken(c *C) {
 	c.Assert(err, IsNil)
 
 	// Get
-	body, err := s.bucket.GetObject(objectName)
+	body, err := bucket.GetObject(objectName)
 	c.Assert(err, IsNil)
 	str, err := readBody(body)
 	c.Assert(err, IsNil)
@@ -1805,6 +1805,23 @@ func (s *OssBucketSuite) TestSTSToken(c *C) {
 	c.Assert(err, IsNil)
 	testLogger.Println("Objects:", lor.Objects)
 
+	// Put with url
+	signedURL, err := bucket.SignURL(objectName, HTTPPut, 3600)
+	c.Assert(err, IsNil)
+
+	err = bucket.PutObjectWithURL(signedURL, strings.NewReader(objectValue))
+	c.Assert(err, IsNil)
+
+	// Get with url
+	signedURL, err = bucket.SignURL(objectName, HTTPGet, 3600)
+	c.Assert(err, IsNil)
+
+	body, err = bucket.GetObjectWithURL(signedURL)
+	c.Assert(err, IsNil)
+	str, err = readBody(body)
+	c.Assert(err, IsNil)
+	c.Assert(str, Equals, objectValue)
+
 	// Delete
 	err = bucket.DeleteObject(objectName)
 	c.Assert(err, IsNil)

+ 4 - 4
oss/client_test.go

@@ -43,12 +43,12 @@ var (
 
 const (
 	// prefix of bucket name for bucket ops test
-	bucketNamePrefix = "go-sdk-test-bucket-xyzuv-"
+	bucketNamePrefix = "go-sdk-test-bucket-xyz-"
 	// bucket name for object ops test
-	bucketName        = "go-sdk-test-bucket-xyzuv-for-object"
-	archiveBucketName = "go-sdk-test-bucket-xyzuv-for-archive"
+	bucketName        = "go-sdk-test-bucket-xyz-for-object"
+	archiveBucketName = "go-sdk-test-bucket-xyz-for-archive"
 	// object name for object ops test
-	objectNamePrefix = "go-sdk-test-object-xyzuv-"
+	objectNamePrefix = "go-sdk-test-object-xyz-"
 	// sts region is one and only hangzhou
 	stsRegion = "cn-hangzhou"
 )

+ 3 - 3
oss/conn.go

@@ -243,6 +243,9 @@ func (conn Conn) doRequest(method string, uri *url.URL, canonicalizedResource st
 }
 
 func (conn Conn) signURL(method HTTPMethod, bucketName, objectName string, expiration int64, params map[string]interface{}, headers map[string]string) string {
+	if conn.config.SecurityToken != "" {
+		params[HTTPParamSecurityToken] = conn.config.SecurityToken
+	}
 	subResource := conn.getSubResource(params)
 	canonicalizedResource := conn.url.getResource(bucketName, objectName, subResource)
 
@@ -273,9 +276,6 @@ func (conn Conn) signURL(method HTTPMethod, bucketName, objectName string, expir
 	params[HTTPParamExpires] = strconv.FormatInt(expiration, 10)
 	params[HTTPParamAccessKeyID] = conn.config.AccessKeyID
 	params[HTTPParamSignature] = signedStr
-	if conn.config.SecurityToken != "" {
-		params[HTTPParamSecurityToken] = conn.config.SecurityToken
-	}
 
 	urlParams := conn.getURLParams(params)
 	return conn.url.getSignURL(bucketName, objectName, urlParams)