From 09df09596dad8bf51512793f301a95fb8012f293 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 23 Feb 2022 18:03:38 +1100 Subject: [PATCH] Expose webseed.EscapePath --- webseed/request.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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] -- 2.44.0