mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
63 lines
2.3 KiB
Go
63 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"html"
|
|
"net/http"
|
|
|
|
"github.com/fnproject/fn/api/models"
|
|
"github.com/fnproject/fn/api/server"
|
|
)
|
|
|
|
func main() {
|
|
ctx := context.Background()
|
|
|
|
funcServer := server.NewFromEnv(ctx)
|
|
// Setup your custom extensions, listeners, etc here
|
|
funcServer.AddEndpoint("GET", "/custom1", &custom1Handler{})
|
|
funcServer.AddEndpointFunc("GET", "/custom2", func(w http.ResponseWriter, r *http.Request) {
|
|
// fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
|
fmt.Println("custom2Handler called")
|
|
fmt.Fprintf(w, "Hello func, %q", html.EscapeString(r.URL.Path))
|
|
})
|
|
|
|
// the following will be at /v1/apps/:app_name/custom2
|
|
funcServer.AddAppEndpoint("GET", "/custom3", &custom3Handler{})
|
|
funcServer.AddAppEndpointFunc("GET", "/custom4", func(w http.ResponseWriter, r *http.Request, app *models.App) {
|
|
// fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
|
fmt.Println("custom4Handler called")
|
|
fmt.Fprintf(w, "Hello app %v func, %q", app.Name, html.EscapeString(r.URL.Path))
|
|
})
|
|
// the following will be at /v1/apps/:app_name/routes/:route_name/custom5
|
|
// and /v1/apps/:app_name/routes/:route_name/custom6
|
|
funcServer.AddRouteEndpoint("GET", "/custom5", &custom5Handler{})
|
|
funcServer.AddRouteEndpointFunc("GET", "/custom6", func(w http.ResponseWriter, r *http.Request, app *models.App, route *models.Route) {
|
|
// fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
|
fmt.Println("custom6Handler called")
|
|
fmt.Fprintf(w, "Hello app %v, route %v, request %q", app.Name, route.Path, html.EscapeString(r.URL.Path))
|
|
})
|
|
funcServer.Start(ctx)
|
|
}
|
|
|
|
type custom1Handler struct{}
|
|
|
|
func (h *custom1Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Println("custom1Handler called")
|
|
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
|
}
|
|
|
|
type custom3Handler struct{}
|
|
|
|
func (h *custom3Handler) ServeHTTP(w http.ResponseWriter, r *http.Request, app *models.App) {
|
|
fmt.Println("custom3Handler called")
|
|
fmt.Fprintf(w, "Hello app %v, %q", app.Name, html.EscapeString(r.URL.Path))
|
|
}
|
|
|
|
type custom5Handler struct{}
|
|
|
|
func (h *custom5Handler) ServeHTTP(w http.ResponseWriter, r *http.Request, app *models.App, route *models.Route) {
|
|
fmt.Println("custom5Handler called")
|
|
fmt.Fprintf(w, "Hello! app %v, route %v, request %q", app.Name, route.Path, html.EscapeString(r.URL.Path))
|
|
}
|