feat(handlers): serve /patentstyle/HL-Patents-Style.dotm as "HL Patents Style.dotm" via Content-Disposition
URL keeps the dashed name for cleanliness; the on-disk filename PA users land in their Downloads folder has the canonical spaces.
This commit is contained in:
@@ -3,6 +3,7 @@ package handlers
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"mgit.msbls.de/m/paliad/internal/auth"
|
||||
"mgit.msbls.de/m/paliad/internal/services"
|
||||
@@ -21,6 +22,19 @@ func noCacheAssets(h http.Handler) http.Handler {
|
||||
})
|
||||
}
|
||||
|
||||
// patentstyleDownload sets a Content-Disposition with the spaced filename
|
||||
// "HL Patents Style.dotm" for .dotm requests under /patentstyle/. The URL
|
||||
// path stays clean (dashes), browsers and download tools land the file
|
||||
// with the name PAs expect to see.
|
||||
func patentstyleDownload(h http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if strings.HasSuffix(r.URL.Path, ".dotm") {
|
||||
w.Header().Set("Content-Disposition", `attachment; filename="HL Patents Style.dotm"`)
|
||||
}
|
||||
h.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
// noCachePages wraps a handler so its response always revalidates. Combined
|
||||
// with the build-time `?v=<buildVersion>` stamp on /assets/*.js and /css URLs
|
||||
// in dist/*.html, this is what makes a deploy actually reach users: the HTML
|
||||
@@ -176,8 +190,11 @@ func Register(mux *http.ServeMux, client *auth.Client, giteaAPIToken string, svc
|
||||
// the installed Word client polls; HL-Patents-Style.dotm is fetched on
|
||||
// version mismatch. Source files live in frontend/public/patentstyle/
|
||||
// (copied into dist/ at build time). noCacheAssets ensures the manifest
|
||||
// is never stale after a release.
|
||||
mux.Handle("GET /patentstyle/", noCacheAssets(http.StripPrefix("/patentstyle/", http.FileServer(http.Dir("dist/patentstyle")))))
|
||||
// is never stale after a release. patentstyleDownload renames the .dotm
|
||||
// to "HL Patents Style.dotm" (with spaces) on download — the on-disk
|
||||
// filename has dashes so the URL is clean, but Word users expect the
|
||||
// spaced name in their downloads folder.
|
||||
mux.Handle("GET /patentstyle/", noCacheAssets(patentstyleDownload(http.StripPrefix("/patentstyle/", http.FileServer(http.Dir("dist/patentstyle"))))))
|
||||
|
||||
// Protected routes
|
||||
protected := http.NewServeMux()
|
||||
|
||||
Reference in New Issue
Block a user