Skip to content

Commit c1525eb

Browse files
committed
feat: cookie operate util
1 parent 30277cd commit c1525eb

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

utils/cookie/cookie.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package cookie
2+
3+
import (
4+
"net/http"
5+
"strings"
6+
)
7+
8+
func Parse(str string) []*http.Cookie {
9+
header := http.Header{}
10+
header.Add("Cookie", str)
11+
request := http.Request{Header: header}
12+
return request.Cookies()
13+
}
14+
15+
func ToString(cookies []*http.Cookie) string {
16+
if cookies == nil {
17+
return ""
18+
}
19+
cookieStrings := make([]string, len(cookies))
20+
for i, cookie := range cookies {
21+
cookieStrings[i] = cookie.String()
22+
}
23+
return strings.Join(cookieStrings, ";")
24+
}
25+
26+
func SetCookie(cookies []*http.Cookie, name, value string) []*http.Cookie {
27+
for i, cookie := range cookies {
28+
if cookie.Name == name {
29+
cookies[i].Value = value
30+
return cookies
31+
}
32+
}
33+
cookies = append(cookies, &http.Cookie{Name: name, Value: value})
34+
return cookies
35+
}
36+
37+
func GetCookie(cookies []*http.Cookie, name string) *http.Cookie {
38+
for _, cookie := range cookies {
39+
if cookie.Name == name {
40+
return cookie
41+
}
42+
}
43+
return nil
44+
}
45+
46+
func SetStr(cookiesStr, name, value string) string {
47+
cookies := Parse(cookiesStr)
48+
cookies = SetCookie(cookies, name, value)
49+
return ToString(cookies)
50+
}
51+
52+
func GetStr(cookiesStr, name string) string {
53+
cookies := Parse(cookiesStr)
54+
cookie := GetCookie(cookies, name)
55+
if cookie == nil {
56+
return ""
57+
}
58+
return cookie.Value
59+
}

0 commit comments

Comments
 (0)