summaryrefslogtreecommitdiff
path: root/pkg/web/cookie/option.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-30 15:20:25 -0600
committermo khan <mo@mokhan.ca>2025-04-30 15:20:25 -0600
commit0a3bbc641efda807af3e54e7f37b562def35e729 (patch)
tree431e3385e2101b844d9190b8d219f1ff7117ead4 /pkg/web/cookie/option.go
parent2ed3cc0a1a05c32fb7ecc32b02f3245c078b4baf (diff)
test: add test for each cookie option
Diffstat (limited to 'pkg/web/cookie/option.go')
-rw-r--r--pkg/web/cookie/option.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/pkg/web/cookie/option.go b/pkg/web/cookie/option.go
new file mode 100644
index 0000000..3f2cc93
--- /dev/null
+++ b/pkg/web/cookie/option.go
@@ -0,0 +1,56 @@
+package cookie
+
+import (
+ "net/http"
+ "time"
+
+ "github.com/xlgmokha/x/pkg/x"
+)
+
+func With(with func(*http.Cookie)) x.Option[*http.Cookie] {
+ return func(c *http.Cookie) *http.Cookie {
+ with(c)
+ return c
+ }
+}
+
+func WithPath(value string) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.Path = value
+ })
+}
+
+func WithHttpOnly(value bool) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.HttpOnly = value
+ })
+}
+
+func WithSecure(value bool) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.Secure = value
+ })
+}
+
+func WithDomain(value string) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.Domain = value
+ })
+}
+
+func WithSameSite(value http.SameSite) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.SameSite = value
+ })
+}
+
+func WithExpiration(expires time.Time) x.Option[*http.Cookie] {
+ return With(func(c *http.Cookie) {
+ c.Expires = expires
+ if expires.Before(time.Now()) {
+ c.MaxAge = -1
+ } else {
+ c.MaxAge = int(time.Until(expires).Seconds())
+ }
+ })
+}