in web/web.go [65:108]
func (a *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
a.once.Do(func() {
const public = "/public/"
fileserver := http.FileServer(a.PublicFS)
mux, err := ctxmux.New(
ctxmux.MuxErrorHandler(a.handleError),
ctxmux.MuxNotFoundHandler(a.ExamplesHandler.Example),
ctxmux.MuxRedirectTrailingSlash(),
ctxmux.MuxContextChanger(a.contextChanger),
)
if err != nil {
panic(err)
}
mux.GET(a.Static.Path+"*rest", ctxmux.HTTPHandler(a.Static))
mux.GET("/favicon.ico", ctxmux.HTTPHandler(fileserver))
mux.GET("/f8.jpg", ctxmux.HTTPHandler(fileserver))
mux.GET("/robots.txt", ctxmux.HTTPHandler(fileserver))
mux.GET(public+"*rest", ctxmux.HTTPHandler(http.StripPrefix(public, fileserver)))
mux.GET("/info/*rest", a.ContextHandler.Info)
mux.POST("/info/*rest", a.ContextHandler.Info)
mux.GET("/examples/", a.ExamplesHandler.List)
mux.GET("/og/*rest", a.OgHandler.Values)
mux.GET("/rog/*rest", a.OgHandler.Base64)
mux.GET("/rog-redirect/*rest", a.OgHandler.Redirect)
mux.GET(oauth.Path+"*rest", a.OauthHandler.Handler)
if a.AdminHandler.Path != "" {
adminPath := path.Join("/", a.AdminHandler.Path) + "/*rest"
mux.GET(adminPath, ctxmux.HTTPHandler(a.AdminHandler))
}
var handler http.Handler
handler = &appdata.Handler{
Handler: mux,
Secret: a.App.SecretByte(),
MaxAge: a.SignedRequestMaxAge,
}
a.mux = handler
})
a.mux.ServeHTTP(w, r)
}