* first draft of a new server interface * allow any response type * complete interface docs * refelct the format from the proposal * intermediate commit with some methods implemented * implement remaining token grant type methods * implement remaining server methods * error handling * rewrite auth request validation * define handlers, routes * input validation and concrete handlers * check if client credential client is authenticated * copy and modify the routes test for the legacy server * run integration tests against both Server and Provider * remove unuse ValidateAuthRequestV2 function * unit tests for error handling * cleanup tokenHandler * move server routest test * unit test authorize * handle client credentials in VerifyClient * change code exchange route test * finish http unit tests * review server interface docs and spelling * add withClient unit test * server options * cleanup unused GrantType method * resolve typo comments * make endpoints pointers to enable/disable them * jwt profile base work * jwt: correct the test expect --------- Co-authored-by: Livio Spring <livio.a@gmail.com>
53 lines
907 B
Go
53 lines
907 B
Go
package op
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
type Endpoint struct {
|
|
path string
|
|
url string
|
|
}
|
|
|
|
func NewEndpoint(path string) *Endpoint {
|
|
return &Endpoint{path: path}
|
|
}
|
|
|
|
func NewEndpointWithURL(path, url string) *Endpoint {
|
|
return &Endpoint{path: path, url: url}
|
|
}
|
|
|
|
func (e *Endpoint) Relative() string {
|
|
if e == nil {
|
|
return ""
|
|
}
|
|
return relativeEndpoint(e.path)
|
|
}
|
|
|
|
func (e *Endpoint) Absolute(host string) string {
|
|
if e == nil {
|
|
return ""
|
|
}
|
|
if e.url != "" {
|
|
return e.url
|
|
}
|
|
return absoluteEndpoint(host, e.path)
|
|
}
|
|
|
|
var ErrNilEndpoint = errors.New("nil endpoint")
|
|
|
|
func (e *Endpoint) Validate() error {
|
|
if e == nil {
|
|
return ErrNilEndpoint
|
|
}
|
|
return nil // TODO:
|
|
}
|
|
|
|
func absoluteEndpoint(host, endpoint string) string {
|
|
return strings.TrimSuffix(host, "/") + relativeEndpoint(endpoint)
|
|
}
|
|
|
|
func relativeEndpoint(endpoint string) string {
|
|
return "/" + strings.TrimPrefix(endpoint, "/")
|
|
}
|