/
githubmirror
/
rclone
Обзор
Документация
Войти
/
githubmirror
/
rclone
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/rest/headers.go
39 строк
809 B
Arnie97
backend/http: support content-range response header
08 ноя 2022, 16:04
08 ноя 2022, 16:04
6a5b766
Код
Авторство
О чём код?
package rest import ( "net/http" "strconv" "strings" ) // ParseSizeFromHeaders parses HTTP response headers to get the full file size. // Returns -1 if the headers did not exist or were invalid. func ParseSizeFromHeaders(headers http.Header) (size int64) { size = -1 var contentLength = headers.Get("Content-Length") if len(contentLength) != 0 { var err error if size, err = strconv.ParseInt(contentLength, 10, 64); err != nil { return -1 } } var contentRange = headers.Get("Content-Range") if len(contentRange) == 0 { return size } if !strings.HasPrefix(contentRange, "bytes ") { return -1 } slash := strings.IndexRune(contentRange, '/') if slash < 0 { return -1 } ret, err := strconv.ParseInt(contentRange[slash+1:], 10, 64) if err != nil { return -1 } return ret }