Sfoglia il codice sorgente

Add option NormalizedRange

鸣镝 8 anni fa
parent
commit
7786085cb9
2 ha cambiato i file con 27 aggiunte e 0 eliminazioni
  1. 21 0
      oss/bucket_test.go
  2. 6 0
      oss/option.go

+ 21 - 0
oss/bucket_test.go

@@ -536,6 +536,27 @@ func (s *OssBucketSuite) TestGetObjectToFile(c *C) {
 	c.Assert(eq, Equals, true)
 	c.Assert(eq, Equals, true)
 	os.Remove(newFile)
 	os.Remove(newFile)
 
 
+	err = s.bucket.GetObjectToFile(objectName, newFile, NormalizedRange("15-35"))
+	c.Assert(err, IsNil)
+	eq, err = compareFileData(newFile, val[15:36])
+	c.Assert(err, IsNil)
+	c.Assert(eq, Equals, true)
+	os.Remove(newFile)
+
+	err = s.bucket.GetObjectToFile(objectName, newFile, NormalizedRange("15-"))
+	c.Assert(err, IsNil)
+	eq, err = compareFileData(newFile, val[15:])
+	c.Assert(err, IsNil)
+	c.Assert(eq, Equals, true)
+	os.Remove(newFile)
+
+	err = s.bucket.GetObjectToFile(objectName, newFile, NormalizedRange("-10"))
+	c.Assert(err, IsNil)
+	eq, err = compareFileData(newFile, val[(len(val)-10):len(val)])
+	c.Assert(err, IsNil)
+	c.Assert(eq, Equals, true)
+	os.Remove(newFile)
+
 	// If-Modified-Since
 	// If-Modified-Since
 	err = s.bucket.GetObjectToFile(objectName, newFile, IfModifiedSince(futureDate))
 	err = s.bucket.GetObjectToFile(objectName, newFile, IfModifiedSince(futureDate))
 	c.Assert(err, NotNil)
 	c.Assert(err, NotNil)

+ 6 - 0
oss/option.go

@@ -7,6 +7,7 @@ import (
 	"net/url"
 	"net/url"
 	"sort"
 	"sort"
 	"strconv"
 	"strconv"
+	"strings"
 	"time"
 	"time"
 )
 )
 
 
@@ -86,6 +87,11 @@ func Range(start, end int64) Option {
 	return setHeader(HTTPHeaderRange, fmt.Sprintf("bytes=%d-%d", start, end))
 	return setHeader(HTTPHeaderRange, fmt.Sprintf("bytes=%d-%d", start, end))
 }
 }
 
 
+// NormalizedRange is an option to set Range header, such as 1024-2048 or 1024- or -2048
+func NormalizedRange(nr string) Option {
+	return setHeader(HTTPHeaderRange, fmt.Sprintf("bytes=%s", strings.TrimSpace(nr)))
+}
+
 // AcceptEncoding is an option to set Accept-Encoding header
 // AcceptEncoding is an option to set Accept-Encoding header
 func AcceptEncoding(value string) Option {
 func AcceptEncoding(value string) Option {
 	return setHeader(HTTPHeaderAcceptEncoding, value)
 	return setHeader(HTTPHeaderAcceptEncoding, value)