func Parse()

in pkg/dataplane/internal/challenge/parse.go [55:81]


func Parse(headers http.Header) ([]Challenge, error) {
	var challenges []Challenge
	var errors []error
	parsingErrors := &errorSink{}
	for _, value := range headers.Values("WWW-Authenticate") {
		p := NewChallengeParser(
			antlr.NewCommonTokenStream(
				NewChallengeLexer(
					antlr.NewInputStream(value),
				),
				0,
			),
		)
		p.AddErrorListener(parsingErrors)
		listener := &Listener{}
		antlr.ParseTreeWalkerDefault.Walk(listener, p.Header())
		challenges = append(challenges, listener.challenges...)
		errors = append(errors, listener.errors...)
	}
	if parsingErrors.errors != nil {
		return nil, collapseErrors(parsingErrors.errors)
	}
	if errors != nil {
		return nil, collapseErrors(errors)
	}
	return challenges, nil
}