summaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/a-h/templ/url.go
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-08-07 00:21:12 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-08-07 00:21:12 +0200
commit351c15d28e0444fd8a78c510a0c4d62ed433c758 (patch)
treeb97aae6ec45c1b341075da147fb9e333246c19f7 /vendor/github.com/a-h/templ/url.go
Genesis commit
Diffstat (limited to 'vendor/github.com/a-h/templ/url.go')
-rw-r--r--vendor/github.com/a-h/templ/url.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/vendor/github.com/a-h/templ/url.go b/vendor/github.com/a-h/templ/url.go
new file mode 100644
index 0000000..bf912e1
--- /dev/null
+++ b/vendor/github.com/a-h/templ/url.go
@@ -0,0 +1,20 @@
+package templ
+
+import "strings"
+
+// FailedSanitizationURL is returned if a URL fails sanitization checks.
+const FailedSanitizationURL = SafeURL("about:invalid#TemplFailedSanitizationURL")
+
+// URL sanitizes the input string s and returns a SafeURL.
+func URL(s string) SafeURL {
+ if i := strings.IndexRune(s, ':'); i >= 0 && !strings.ContainsRune(s[:i], '/') {
+ protocol := s[:i]
+ if !strings.EqualFold(protocol, "http") && !strings.EqualFold(protocol, "https") && !strings.EqualFold(protocol, "mailto") && !strings.EqualFold(protocol, "tel") && !strings.EqualFold(protocol, "ftp") && !strings.EqualFold(protocol, "ftps") {
+ return FailedSanitizationURL
+ }
+ }
+ return SafeURL(s)
+}
+
+// SafeURL is a URL that has been sanitized.
+type SafeURL string