2019-06-03 18:44:43 +01:00
|
|
|
// Package resolver resolves a http request to an endpoint
|
|
|
|
package resolver
|
|
|
|
|
|
|
|
import (
|
2020-04-03 09:18:30 +01:00
|
|
|
"errors"
|
2019-06-03 18:44:43 +01:00
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
2020-04-03 09:18:30 +01:00
|
|
|
var (
|
2020-11-03 01:08:23 +03:00
|
|
|
// ErrNotFound returned when endpoint is not found
|
|
|
|
ErrNotFound = errors.New("not found")
|
|
|
|
// ErrInvalidPath returned on invalid path
|
2020-04-03 09:18:30 +01:00
|
|
|
ErrInvalidPath = errors.New("invalid path")
|
|
|
|
)
|
|
|
|
|
2019-06-03 18:44:43 +01:00
|
|
|
// Resolver resolves requests to endpoints
|
|
|
|
type Resolver interface {
|
2020-06-29 16:37:45 +01:00
|
|
|
Resolve(r *http.Request, opts ...ResolveOption) (*Endpoint, error)
|
2019-06-03 18:44:43 +01:00
|
|
|
String() string
|
|
|
|
}
|
|
|
|
|
|
|
|
// Endpoint is the endpoint for a http request
|
|
|
|
type Endpoint struct {
|
2020-11-03 01:08:23 +03:00
|
|
|
// Endpoint name e.g greeter
|
2019-06-03 18:44:43 +01:00
|
|
|
Name string
|
|
|
|
// HTTP Host e.g example.com
|
|
|
|
Host string
|
|
|
|
// HTTP Methods e.g GET, POST
|
|
|
|
Method string
|
|
|
|
// HTTP Path e.g /greeter.
|
|
|
|
Path string
|
2020-06-26 14:28:18 +01:00
|
|
|
// Domain endpoint exists within
|
|
|
|
Domain string
|
2020-04-09 11:03:33 +01:00
|
|
|
}
|