Skip to content

Commit c6ac8b7

Browse files
committed
Support ?path=file for deep linking APK
Signed-off-by: Jon Johnson <jon.johnson@chainguard.dev>
1 parent 1320c22 commit c6ac8b7

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

internal/apk/apk.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,8 @@ func (h *handler) renderFS(w http.ResponseWriter, r *http.Request) error {
421421
redir := fmt.Sprintf("%s@etag:%s", r.URL.Path, etagHex)
422422
if before, rest, ok := strings.Cut(r.URL.Path, "APKINDEX.tar.gz"); ok {
423423
redir = fmt.Sprintf("%sAPKINDEX.tar.gz@etag:%s%s", before, etagHex, rest)
424+
} else if p := r.URL.Query().Get("path"); p != "" {
425+
redir = fmt.Sprintf("%s@etag:%s/%s", before, etagHex, p)
424426
}
425427
http.Redirect(w, r, redir+qss, http.StatusFound)
426428
return nil
@@ -583,6 +585,8 @@ func (h *handler) renderLocalFS(w http.ResponseWriter, r *http.Request) error {
583585
redir := fmt.Sprintf("%s@etag:%s", r.URL.Path, etagHex)
584586
if before, rest, ok := strings.Cut(r.URL.Path, "APKINDEX.tar.gz"); ok {
585587
redir = fmt.Sprintf("%sAPKINDEX.tar.gz@etag:%s%s", before, etagHex, rest)
588+
} else if p := r.URL.Query().Get("path"); p != "" {
589+
redir = fmt.Sprintf("%s@etag:%s/%s", before, etagHex, p)
586590
}
587591
http.Redirect(w, r, redir+qss, http.StatusFound)
588592
return nil

0 commit comments

Comments
 (0)