|
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 |
|
} |
|
|