32bf0415/html_components/url.go
1970-01-01 00:00:00 +00:00

50 lines
1.0 KiB
Go

package html_components
import (
"fmt"
. "github.com/labstack/echo/v4"
"net/url"
"strconv"
)
const HeaderHxCurrentUrl = "Hx-Current-Url"
func getCurrentUrlHeader(c Context) string {
return c.Request().Header.Get(HeaderHxCurrentUrl)
}
const HeaderFromTable = "From-Table"
func HasFromTableHeader(c Context) bool {
parsed, err := strconv.ParseBool(c.Request().Header.Get(HeaderFromTable))
return err == nil && parsed
}
func checkForValidUrl(stringUrl string) string {
_, err := url.Parse(stringUrl)
if err != nil {
return "/" // safe fallback
}
return stringUrl
}
func GetCurrentUrl(c Context, defaultPath string) string {
currentUrlHeader := getCurrentUrlHeader(c)
if currentUrlHeader == "" {
return checkForValidUrl(defaultPath)
}
return currentUrlHeader
}
func GetCurrentUrlQueryParams(c Context) string {
currentUrlHeader := getCurrentUrlHeader(c)
if currentUrlHeader == "" {
return ""
}
currentUrl, err := url.Parse(currentUrlHeader)
if err != nil {
return ""
}
return fmt.Sprint("?", currentUrl.Query().Encode())
}