// Construct - Constructs http router. func (routes Routes) Construct(options ...Option) (xhandler.HandlerC, error) { // Create new router mux := xmux.New() tracing := tracingEnabled(options...) // Bind all routes handlers for route, handler := range routes { // Construct handler h, err := handler.Construct(options...) if err != nil { return nil, fmt.Errorf("%q: %v", route, err) } if tracing { h = routeTracing(route, h) } // Bind route handler mux.HandleC(route.Method, route.Path, h) } // Return handler return mux, nil }
func main() { router := xmux.New() router.GET("/unoconv/health", xhandler.HandlerFuncC(healthHandler)) router.POST("/unoconv/:filetype", xhandler.HandlerFuncC(unoconvHandler)) log.Fatal(http.ListenAndServe(":3000", mw.Handler(router))) }
func main() { c := xhandler.Chain{} setupHandlerChain(&c) mux := xmux.New() mux.GET("/gamble", xhandler.HandlerFuncC(shittyHandler)) log.Printf("Listening on http://localhost%v/gamble", port) http.ListenAndServe(port, c.Handler(mux)) }
func router(a *server) http.Handler { mux := xmux.New() c := xhandler.Chain{} c.Use(mwLogger) c.Use(mwAuthenticationCheck(a.key)) mux.GET("/sites", c.HandlerCF(xhandler.HandlerFuncC(a.handleAllSites))) mux.GET("/sites/:id", c.HandlerCF(xhandler.HandlerFuncC(a.handleSingleSite))) mux.GET("/torrents", c.HandlerCF(xhandler.HandlerFuncC(a.handleTorrents))) mux.POST("/download/:hash", c.HandlerCF(xhandler.HandlerFuncC(a.handleDownload))) return xhandler.New(context.Background(), mux) }
func ExampleMux_NewGroup() { mux := xmux.New() api := mux.NewGroup("/api") api.GET("/users/:name", xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "GET /api/users/%s", xmux.Param(ctx, "name")) })) api.POST("/users/:name", xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "POST /api/users/%s", xmux.Param(ctx, "name")) })) if err := http.ListenAndServe(":8080", xhandler.New(context.Background(), mux)); err != nil { log.Fatal(err) } }
func ExampleMux() { c := xhandler.Chain{} // Append a context-aware middleware handler c.UseC(xhandler.CloseHandler) // Another context-aware middleware handler c.UseC(xhandler.TimeoutHandler(2 * time.Second)) mux := xmux.New() // Use c.Handler to terminate the chain with your final handler mux.GET("/welcome/:name", xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "Welcome %s!", xmux.Param(ctx, "name")) })) if err := http.ListenAndServe(":8080", c.Handler(mux)); err != nil { log.Fatal(err) } }