Reorganized package tree and added doc comments
This commit is contained in:
@@ -3,10 +3,12 @@ package mux
|
||||
import "net/url"
|
||||
import "net/http"
|
||||
|
||||
// HTTP is an HTTP request multiplexer.
|
||||
type HTTP struct {
|
||||
Mux[http.Handler]
|
||||
}
|
||||
|
||||
// NewHTTP creates a new HTTP request multiplexer.
|
||||
func NewHTTP (resolver Resolver) *HTTP {
|
||||
mux := &HTTP { }
|
||||
mux.Mux.Redirect = mux.newRedirect
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Package mux provides request multiplexers for all protocols Hnakra supports.
|
||||
package mux
|
||||
|
||||
import "net"
|
||||
@@ -8,6 +9,8 @@ import "errors"
|
||||
import "strings"
|
||||
import "net/url"
|
||||
|
||||
// Resolver represents an object capable of transforming a hosname alias into
|
||||
// another hostname.
|
||||
type Resolver interface {
|
||||
ResolveAlias (alias string) string
|
||||
}
|
||||
@@ -68,6 +71,7 @@ func stripHostPort (h string) string {
|
||||
return host
|
||||
}
|
||||
|
||||
// Handler returns the handler for a particular URL.
|
||||
func (mux *Mux[HANDLER]) Handler (where *url.URL) (h HANDLER, pattern string) {
|
||||
// All other requests have any port stripped and path cleaned
|
||||
// before passing to mux.handler.
|
||||
@@ -144,6 +148,10 @@ func (mux *Mux[HANDLER]) match (path string, original *url.URL) (h HANDLER, patt
|
||||
return mux.NotFound(original), ""
|
||||
}
|
||||
|
||||
// Handle registers a handler on the specified pattern. If a pattern ends in
|
||||
// '/', all requests for URLS under the pattern will be directed to the handler,
|
||||
// as well as the pattern itself. Additionally, requests for the pattern without
|
||||
// the trailing slash will be redirected to the pattern with the trailing slash.
|
||||
func (mux *Mux[HANDLER]) Handle (pattern string, handler HANDLER) error {
|
||||
mux.mutex.Lock()
|
||||
defer mux.mutex.Unlock()
|
||||
@@ -176,6 +184,7 @@ func (mux *Mux[HANDLER]) Handle (pattern string, handler HANDLER) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Unhandler removes the handler that was registered on the specified pattern.
|
||||
func (mux *Mux[HANDLER]) Unhandle (pattern string) error {
|
||||
mux.mutex.Lock()
|
||||
defer mux.mutex.Unlock()
|
||||
@@ -199,6 +208,7 @@ func (mux *Mux[HANDLER]) Unhandle (pattern string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// OverHandlers calls a function for each registered handler.
|
||||
func (mux *Mux[HANDLER]) OverHandlers (callback func (pattern string, handler HANDLER) bool) {
|
||||
overSorted (mux.exactEntries, func (pattern string, entry muxEntry[HANDLER]) bool {
|
||||
return callback(pattern, entry.handler)
|
||||
|
||||
Reference in New Issue
Block a user