Middleware upgrade (#554)

* Adds root level middleware

* Added todo

* Better way for extensions to be added.

* Bad conflict merge?
This commit is contained in:
Travis Reeder
2017-12-05 08:22:03 -08:00
committed by GitHub
parent 9a17c79a3b
commit 0798f9fac8
23 changed files with 660 additions and 287 deletions

30
api/server/extensions.go Normal file
View File

@@ -0,0 +1,30 @@
package server
import (
"fmt"
"log"
"github.com/fnproject/fn/fnext"
)
// TODO: Move this into `github.com/fnproject/fn` package after main is moved out of root dir.
var extensions = map[string]fnext.Extension{}
// RegisterExtension registers the extension so it's available, but does not initialize it or anything
func RegisterExtension(ext fnext.Extension) {
extensions[ext.Name()] = ext
}
// AddExtensionByName This essentially just makes sure the extensions are ordered properly.
// It could do some initialization if required too.
func (s *Server) AddExtensionByName(name string) {
fmt.Printf("extensions: %+v\n", extensions)
e, ok := extensions[name]
if !ok {
log.Fatalf("Extension %v not registered.\n", name)
}
err := e.Setup(s)
if err != nil {
log.Fatalf("Failed to add extension %v: %v\n", name, err)
}
}