httphead.go
Tiny HTTP header value parsing library in go.
Overview
This library contains low-level functions for scanning HTTP RFC2616 compatible header value grammars.
Install
go get github.com/gobwas/httphead
Example
The example below shows how multiple-choise HTTP header value could be parsed with this library:
options, ok := httphead.ParseOptions([]byte(`foo;bar=1,baz`), nil)
fmt.Println(options, ok)
The low-level example below shows how to optimize keys skipping and selection
of some key:
header := []byte(`foo;a=0,foo;a=1,foo;a=2,foo;a=3`)
var (
foo = []byte(`foo`)
a = []byte(`a`)
v = []byte(`2`)
)
var found bool
httphead.ScanOptions(header, func(i int, key, param, value []byte) Control {
if !bytes.Equal(key, foo) {
return ControlSkip
}
if !bytes.Equal(param, a) {
if bytes.Equal(value, v) {
found = true
return ControlBreak
}
return ControlSkip
}
return ControlContinue
})
For more usage examples please see docs or package tests.