mirror of
https://github.com/openfaas/faas.git
synced 2025-06-13 18:56:46 +00:00
The basic-auth middleware and credentials-loading code has been moved into the faas-provider project. This has now been brought back into the faas project via vendoring. Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
// Copyright (c) Alex Ellis 2017. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
package bootstrap
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/openfaas/faas-provider/types"
|
|
)
|
|
|
|
var r *mux.Router
|
|
|
|
// Mark this as a Golang "package"
|
|
func init() {
|
|
r = mux.NewRouter()
|
|
}
|
|
|
|
// Router gives access to the underlying router for when new routes need to be added.
|
|
func Router() *mux.Router {
|
|
return r
|
|
}
|
|
|
|
// Serve load your handlers into the correct OpenFaaS route spec. This function is blocking.
|
|
func Serve(handlers *types.FaaSHandlers, config *types.FaaSConfig) {
|
|
r.HandleFunc("/system/functions", handlers.FunctionReader).Methods("GET")
|
|
r.HandleFunc("/system/functions", handlers.DeployHandler).Methods("POST")
|
|
r.HandleFunc("/system/functions", handlers.DeleteHandler).Methods("DELETE")
|
|
r.HandleFunc("/system/functions", handlers.UpdateHandler).Methods("PUT")
|
|
|
|
r.HandleFunc("/system/function/{name:[-a-zA-Z_0-9]+}", handlers.ReplicaReader).Methods("GET")
|
|
r.HandleFunc("/system/scale-function/{name:[-a-zA-Z_0-9]+}", handlers.ReplicaUpdater).Methods("POST")
|
|
|
|
r.HandleFunc("/function/{name:[-a-zA-Z_0-9]+}", handlers.FunctionProxy)
|
|
r.HandleFunc("/function/{name:[-a-zA-Z_0-9]+}/", handlers.FunctionProxy)
|
|
|
|
r.HandleFunc("/system/info", handlers.InfoHandler).Methods("GET")
|
|
|
|
if config.EnableHealth {
|
|
r.HandleFunc("/healthz", handlers.Health).Methods("GET")
|
|
}
|
|
|
|
readTimeout := config.ReadTimeout
|
|
writeTimeout := config.WriteTimeout
|
|
|
|
tcpPort := 8080
|
|
if config.TCPPort != nil {
|
|
tcpPort = *config.TCPPort
|
|
}
|
|
|
|
s := &http.Server{
|
|
Addr: fmt.Sprintf(":%d", tcpPort),
|
|
ReadTimeout: readTimeout,
|
|
WriteTimeout: writeTimeout,
|
|
MaxHeaderBytes: http.DefaultMaxHeaderBytes, // 1MB - can be overridden by setting Server.MaxHeaderBytes.
|
|
Handler: r,
|
|
}
|
|
|
|
log.Fatal(s.ListenAndServe())
|
|
}
|