From e9a20d346d8c5c2754576f45acdf645822cda6f3 Mon Sep 17 00:00:00 2001 From: KCarretto Date: Wed, 21 Feb 2024 04:25:32 +0000 Subject: [PATCH] fixes cdn url downloads --- tavern/app.go | 2 +- tavern/internal/cdn/download.go | 6 +++--- tavern/internal/cdn/download_test.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tavern/app.go b/tavern/app.go index cdd39a588..0675fb621 100644 --- a/tavern/app.go +++ b/tavern/app.go @@ -164,7 +164,7 @@ func NewServer(ctx context.Context, options ...func(*Config)) (*Server, error) { )}, "/graphql": tavernhttp.Endpoint{Handler: newGraphQLHandler(client, git)}, "/c2.C2/": tavernhttp.Endpoint{Handler: newGRPCHandler(client)}, - "/cdn/": tavernhttp.Endpoint{Handler: cdn.NewDownloadHandler(client)}, + "/cdn/": tavernhttp.Endpoint{Handler: cdn.NewDownloadHandler(client, "/cdn/")}, "/cdn/upload": tavernhttp.Endpoint{Handler: cdn.NewUploadHandler(client)}, "/": tavernhttp.Endpoint{ Handler: www.NewHandler(httpLogger), diff --git a/tavern/internal/cdn/download.go b/tavern/internal/cdn/download.go index 9c697dc16..708d12da1 100644 --- a/tavern/internal/cdn/download.go +++ b/tavern/internal/cdn/download.go @@ -3,7 +3,7 @@ package cdn import ( "bytes" "net/http" - "path/filepath" + "strings" "realm.pub/tavern/internal/ent" "realm.pub/tavern/internal/ent/file" @@ -18,12 +18,12 @@ const ( ) // NewDownloadHandler returns an HTTP handler responsible for downloading a file from the CDN. -func NewDownloadHandler(graph *ent.Client) http.Handler { +func NewDownloadHandler(graph *ent.Client, prefix string) http.Handler { return errors.WrapHandler(func(w http.ResponseWriter, req *http.Request) error { ctx := req.Context() // Get the File name from the request URI - fileName := filepath.Base(req.URL.Path) + fileName := strings.TrimPrefix(req.URL.Path, prefix) if fileName == "" || fileName == "." || fileName == "/" { return ErrInvalidFileName } diff --git a/tavern/internal/cdn/download_test.go b/tavern/internal/cdn/download_test.go index 10af277bc..9a6a07905 100644 --- a/tavern/internal/cdn/download_test.go +++ b/tavern/internal/cdn/download_test.go @@ -58,7 +58,7 @@ func TestDownload(t *testing.T) { func newDownloadTest(graph *ent.Client, req *http.Request, checks ...func(t *testing.T, fileContent []byte, err *errors.HTTP)) func(*testing.T) { return func(t *testing.T) { // Initialize Download Handler - handler := cdn.NewDownloadHandler(graph) + handler := cdn.NewDownloadHandler(graph, "/download/") // Send request and record response w := httptest.NewRecorder()