1
0
mirror of https://github.com/rclone/rclone.git synced 2026-01-03 17:13:18 +00:00

backend/http: support content-range response header

This commit is contained in:
Arnie97
2022-03-20 18:12:48 +08:00
committed by Nick Craig-Wood
parent ebac854512
commit 6a5b7664f7
5 changed files with 146 additions and 58 deletions

41
lib/rest/headers_test.go Normal file
View File

@@ -0,0 +1,41 @@
package rest
import (
"net/http"
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseSizeFromHeaders(t *testing.T) {
testCases := []struct {
ContentLength, ContentRange string
Size int64
}{{
"", "", -1,
}, {
"42", "", 42,
}, {
"42", "invalid", -1,
}, {
"", "bytes 22-33/42", 42,
}, {
"12", "bytes 22-33/42", 42,
}, {
"12", "otherUnit 22-33/42", -1,
}, {
"12", "bytes 22-33/*", -1,
}, {
"0", "bytes */42", 42,
}}
for _, testCase := range testCases {
headers := make(http.Header, 2)
if len(testCase.ContentLength) > 0 {
headers.Set("Content-Length", testCase.ContentLength)
}
if len(testCase.ContentRange) > 0 {
headers.Set("Content-Range", testCase.ContentRange)
}
assert.Equalf(t, testCase.Size, ParseSizeFromHeaders(headers), "%+v", testCase)
}
}