Files
gortsplib/headerauth.go
2020-01-26 16:19:26 +01:00

41 lines
731 B
Go

package gortsplib
import (
"fmt"
"regexp"
"strings"
)
// HeaderAuth is an Authenticate or a WWWW-Authenticate header.
type HeaderAuth struct {
Prefix string
Values map[string]string
}
// ReadHeaderAuth parses an Authenticate or a WWW-Authenticate header.
func ReadHeaderAuth(in string) (*HeaderAuth, error) {
a := &HeaderAuth{
Values: make(map[string]string),
}
i := strings.IndexByte(in, ' ')
if i < 0 {
return nil, fmt.Errorf("parse error")
}
a.Prefix, in = in[:i], in[i+1:]
r := regexp.MustCompile("^([a-z]+)=\"(.+?)\"(, )?")
for len(in) > 0 {
m := r.FindStringSubmatch(in)
if m == nil {
return nil, fmt.Errorf("parse error")
}
in = in[len(m[0]):]
a.Values[m[1]] = m[2]
}
return a, nil
}