summaryrefslogtreecommitdiff
path: root/gemini/handler.go
diff options
context:
space:
mode:
Diffstat (limited to 'gemini/handler.go')
-rw-r--r--gemini/handler.go54
1 files changed, 0 insertions, 54 deletions
diff --git a/gemini/handler.go b/gemini/handler.go
deleted file mode 100644
index 0f48e62..0000000
--- a/gemini/handler.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package gemini
-
-import "context"
-
-// Handler is a function which can turn a gemini request into a gemini response.
-//
-// A Handler MUST NOT return a nil response. Errors should be returned in the form
-// of error responses (4x, 5x, 6x response status). If the Handler should not be
-// responsible for the requested resource it can return a 51 response.
-type Handler func(context.Context, *Request) *Response
-
-// Middleware is a handle decorator.
-//
-// It returns a handler which may call the passed-in handler or not, or may
-// transform the request or response in some way.
-type Middleware func(Handler) Handler
-
-// FallthroughHandler builds a handler which tries multiple child handlers.
-//
-// The returned handler will invoke each of the passed child handlers in order,
-// stopping when it receives a response with status other than 51.
-func FallthroughHandler(handlers ...Handler) Handler {
- return func(ctx context.Context, req *Request) *Response {
- for _, handler := range handlers {
- response := handler(ctx, req)
- if response.Status != StatusNotFound {
- return response
- }
- }
-
- return NotFound("Resource does not exist.")
- }
-}
-
-// Filter wraps a handler with a predicate which determines whether to run the handler.
-//
-// When the predicate function returns false, the Filter returns the provided failure
-// response. The failure argument may be nil, in which case a "51 Resource does not exist."
-// response will be used.
-func Filter(
- predicate func(context.Context, *Request) bool,
- handler Handler,
- failure *Response,
-) Handler {
- if failure == nil {
- failure = NotFound("Resource does not exist.")
- }
- return func(ctx context.Context, req *Request) *Response {
- if !predicate(ctx, req) {
- return failure
- }
- return handler(ctx, req)
- }
-}