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