From: Matt Joiner Date: Wed, 23 Feb 2022 07:03:38 +0000 (+1100) Subject: Expose webseed.EscapePath X-Git-Tag: v1.42.0~28 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=09df09596dad8bf51512793f301a95fb8012f293;p=btrtrc.git Expose webseed.EscapePath --- diff --git a/webseed/request.go b/webseed/request.go index 6d62ccb6..4e3ef609 100644 --- a/webseed/request.go +++ b/webseed/request.go @@ -10,10 +10,12 @@ import ( "github.com/anacrolix/torrent/metainfo" ) -func trailingPath(infoName string, pathComps []string) string { +// Escapes path name components suitable for appending to a webseed URL. This works for converting +// S3 object keys to URLs too. +func EscapePath(pathComps []string) string { return path.Join( func() (ret []string) { - for _, comp := range append([]string{infoName}, pathComps...) { + for _, comp := range pathComps { ret = append(ret, url.QueryEscape(comp)) } return @@ -21,6 +23,10 @@ func trailingPath(infoName string, pathComps []string) string { ) } +func trailingPath(infoName string, fileComps []string) string { + return EscapePath(append([]string{infoName}, fileComps...)) +} + // Creates a request per BEP 19. func NewRequest(url_ string, fileIndex int, info *metainfo.Info, offset, length int64) (*http.Request, error) { fileInfo := info.UpvertedFiles()[fileIndex]