Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/pkg/cookie/cookie.go
1560 views
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
}
60
61