61
vendor/github.com/anacrolix/missinggo/httptoo/headers.go
generated
vendored
Normal file
61
vendor/github.com/anacrolix/missinggo/httptoo/headers.go
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
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()), ", ")
|
||||
}
|
||||
Reference in New Issue
Block a user