| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package httptoo
- import (
- "fmt"
- "strings"
- "time"
- )
- type Visibility int
- const (
- Default = 0
- Public = 1
- Private = 2
- )
- type CacheControlHeader struct {
- MaxAge time.Duration
- Caching Visibility
- NoStore bool
- }
- func (me *CacheControlHeader) caching() []string {
- switch me.Caching {
- case Public:
- return []string{"public"}
- case Private:
- return []string{"private"}
- default:
- return nil
- }
- }
- func (me *CacheControlHeader) maxAge() []string {
- if me.MaxAge == 0 {
- return nil
- }
- d := me.MaxAge
- if d < 0 {
- d = 0
- }
- return []string{fmt.Sprintf("max-age=%d", d/time.Second)}
- }
- func (me *CacheControlHeader) noStore() []string {
- if me.NoStore {
- return []string{"no-store"}
- }
- return nil
- }
- func (me *CacheControlHeader) concat(sss ...[]string) (ret []string) {
- for _, ss := range sss {
- ret = append(ret, ss...)
- }
- return
- }
- func (me CacheControlHeader) String() string {
- return strings.Join(me.concat(me.caching(), me.maxAge()), ", ")
- }
|