mirror of https://github.com/Xhofe/alist
feat: cookie operate util
parent
30277cd81f
commit
c1525ebc69
|
@ -0,0 +1,59 @@
|
|||
package cookie
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func Parse(str string) []*http.Cookie {
|
||||
header := http.Header{}
|
||||
header.Add("Cookie", str)
|
||||
request := http.Request{Header: header}
|
||||
return request.Cookies()
|
||||
}
|
||||
|
||||
func ToString(cookies []*http.Cookie) string {
|
||||
if cookies == nil {
|
||||
return ""
|
||||
}
|
||||
cookieStrings := make([]string, len(cookies))
|
||||
for i, cookie := range cookies {
|
||||
cookieStrings[i] = cookie.String()
|
||||
}
|
||||
return strings.Join(cookieStrings, ";")
|
||||
}
|
||||
|
||||
func SetCookie(cookies []*http.Cookie, name, value string) []*http.Cookie {
|
||||
for i, cookie := range cookies {
|
||||
if cookie.Name == name {
|
||||
cookies[i].Value = value
|
||||
return cookies
|
||||
}
|
||||
}
|
||||
cookies = append(cookies, &http.Cookie{Name: name, Value: value})
|
||||
return cookies
|
||||
}
|
||||
|
||||
func GetCookie(cookies []*http.Cookie, name string) *http.Cookie {
|
||||
for _, cookie := range cookies {
|
||||
if cookie.Name == name {
|
||||
return cookie
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetStr(cookiesStr, name, value string) string {
|
||||
cookies := Parse(cookiesStr)
|
||||
cookies = SetCookie(cookies, name, value)
|
||||
return ToString(cookies)
|
||||
}
|
||||
|
||||
func GetStr(cookiesStr, name string) string {
|
||||
cookies := Parse(cookiesStr)
|
||||
cookie := GetCookie(cookies, name)
|
||||
if cookie == nil {
|
||||
return ""
|
||||
}
|
||||
return cookie.Value
|
||||
}
|
Loading…
Reference in New Issue