| 9 | type CacheControl map[string]string |
| 10 | |
| 11 | func ParseCacheControl(headers http.Header) CacheControl { |
| 12 | cc := CacheControl{} |
| 13 | ccHeader := headers.Get("Cache-Control") |
| 14 | for _, part := range strings.Split(ccHeader, ",") { |
| 15 | part = strings.Trim(part, " ") |
| 16 | if part == "" { |
| 17 | continue |
| 18 | } |
| 19 | if strings.ContainsRune(part, '=') { |
| 20 | keyval := strings.Split(part, "=") |
| 21 | cc[strings.ToLower(strings.Trim(keyval[0], " "))] = strings.Trim(keyval[1], ",") |
| 22 | } else { |
| 23 | cc[strings.ToLower(part)] = "" |
| 24 | } |
| 25 | } |
| 26 | return cc |
| 27 | } |
| 28 | |
| 29 | func (cc CacheControl) String() string { |
| 30 | parts := make([]string, 0, len(cc)) |