mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-05-16 11:38:30 +00:00
refactor(web): pass render URL state explicitly
Signed-off-by: Jason Cameron <jason.cameron@stanwith.me>
This commit is contained in:
+46
-4
@@ -7,17 +7,43 @@ import (
|
||||
|
||||
"github.com/a-h/templ"
|
||||
|
||||
"github.com/TecharoHQ/anubis"
|
||||
"github.com/TecharoHQ/anubis/lib/challenge"
|
||||
"github.com/TecharoHQ/anubis/lib/config"
|
||||
"github.com/TecharoHQ/anubis/lib/localization"
|
||||
)
|
||||
|
||||
// Options carries per-server render state for Anubis pages. Embedders can
|
||||
// render multiple Server instances in one process without mutating package
|
||||
// globals.
|
||||
type Options struct {
|
||||
BasePrefix string
|
||||
PublicURL string
|
||||
}
|
||||
|
||||
// DefaultOptions preserves the legacy package-global behavior for callers that
|
||||
// render web components directly.
|
||||
func DefaultOptions() Options {
|
||||
return Options{
|
||||
BasePrefix: anubis.BasePrefix,
|
||||
PublicURL: anubis.PublicUrl,
|
||||
}
|
||||
}
|
||||
|
||||
func Base(title string, body templ.Component, impressum *config.Impressum, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return base(title, body, impressum, nil, nil, localizer)
|
||||
return BaseWithOptions(DefaultOptions(), title, body, impressum, localizer)
|
||||
}
|
||||
|
||||
func BaseWithOptions(opts Options, title string, body templ.Component, impressum *config.Impressum, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return base(opts, title, body, impressum, nil, nil, localizer)
|
||||
}
|
||||
|
||||
func BaseWithChallengeAndOGTags(title string, body templ.Component, impressum *config.Impressum, challenge *challenge.Challenge, rules *config.ChallengeRules, ogTags map[string]string, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return base(title, body, impressum, struct {
|
||||
return BaseWithChallengeAndOGTagsWithOptions(DefaultOptions(), title, body, impressum, challenge, rules, ogTags, localizer)
|
||||
}
|
||||
|
||||
func BaseWithChallengeAndOGTagsWithOptions(opts Options, title string, body templ.Component, impressum *config.Impressum, challenge *challenge.Challenge, rules *config.ChallengeRules, ogTags map[string]string, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return base(opts, title, body, impressum, struct {
|
||||
Rules *config.ChallengeRules `json:"rules"`
|
||||
Challenge any `json:"challenge"`
|
||||
}{
|
||||
@@ -27,11 +53,27 @@ func BaseWithChallengeAndOGTags(title string, body templ.Component, impressum *c
|
||||
}
|
||||
|
||||
func ErrorPage(msg, mail, code string, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return errorPage(msg, mail, code, localizer)
|
||||
return ErrorPageWithOptions(DefaultOptions(), msg, mail, code, localizer)
|
||||
}
|
||||
|
||||
func ErrorPageWithOptions(opts Options, msg, mail, code string, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return errorPage(opts, msg, mail, code, localizer)
|
||||
}
|
||||
|
||||
func StaticHappy(localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return StaticHappyWithOptions(DefaultOptions(), localizer)
|
||||
}
|
||||
|
||||
func StaticHappyWithOptions(opts Options, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return staticHappy(opts, localizer)
|
||||
}
|
||||
|
||||
func Bench(localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return bench(localizer)
|
||||
return BenchWithOptions(DefaultOptions(), localizer)
|
||||
}
|
||||
|
||||
func BenchWithOptions(opts Options, localizer *localization.SimpleLocalizer) templ.Component {
|
||||
return bench(opts, localizer)
|
||||
}
|
||||
|
||||
func honeypotLink(href string) templ.Component {
|
||||
|
||||
Reference in New Issue
Block a user