diff options
Diffstat (limited to 'golang/cmd/fatcatd')
-rw-r--r-- | golang/cmd/fatcatd/main.go | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/golang/cmd/fatcatd/main.go b/golang/cmd/fatcatd/main.go index c0b9a2e5..7f2c4374 100644 --- a/golang/cmd/fatcatd/main.go +++ b/golang/cmd/fatcatd/main.go @@ -3,15 +3,20 @@ package main import ( "os" + "net/http" log "github.com/sirupsen/logrus" loads "github.com/go-openapi/loads" flags "github.com/jessevdk/go-flags" + middleware "github.com/go-openapi/runtime/middleware" "github.com/spf13/viper" "github.com/getsentry/raven-go" + "github.com/carbocation/interpose" + "github.com/carbocation/interpose/adaptors" + "github.com/meatballhat/negroni-logrus" - "git.archive.org/bnewbold/fatcat/golang/restapi" - "git.archive.org/bnewbold/fatcat/golang/restapi/operations" + "git.archive.org/bnewbold/fatcat/golang/gen/restapi" + "git.archive.org/bnewbold/fatcat/golang/gen/restapi/operations" ) func init() { @@ -49,12 +54,18 @@ func main() { // create new service API api := operations.NewFatcatAPI(swaggerSpec) + + // Set your custom logger if needed. Default one is log.Printf + // Expected interface func(string, ...interface{}) + api.Logger = log.Printf + server := restapi.NewServer(api) defer server.Shutdown() parser := flags.NewParser(server, flags.Default) parser.ShortDescription = "fatcat" parser.LongDescription = "A scalable, versioned, API-oriented catalog of bibliographic entities and file metadata" + server.ConfigureFlags() for _, optsGroup := range api.CommandLineOptionsGroups { _, err := parser.AddGroup(optsGroup.ShortDescription, optsGroup.LongDescription, optsGroup.Options) @@ -73,7 +84,36 @@ func main() { os.Exit(code) } - server.ConfigureAPI() + // XXX: server.ConfigureAPI() + api.GetCreatorIDHandler = operations.GetCreatorIDHandlerFunc(func(params operations.GetCreatorIDParams) middleware.Responder { + // "get or 404" using params.ID. join creator_ident and creator_rev. + // populate result data + // return that + return middleware.NotImplemented("operation .GetCreatorID has not yet been implemented") + }) + api.PostCreatorHandler = operations.PostCreatorHandlerFunc(func(params operations.PostCreatorParams) middleware.Responder { + // get-or-create editgroup based on current editor (session) + // insert new rev, ident, and edit + return middleware.NotImplemented("operation .PostCreator has not yet been implemented") + }) + + middle := interpose.New() + + // sentry and upstream + //middle.UseHandler(sentry.Recovery(raven.DefaultClient, false)) + + // logging + negroniMiddleware := negronilogrus.NewMiddleware() + middle.Use(adaptors.FromNegroni(negroniMiddleware)) + + // add clacks + middle.UseHandler(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + rw.Header().Set("X-Clacks-Overhead:", "GNU Aaron Swartz, John Perry Barlow") + })) + + middle.UseHandler(api.Serve(nil)) + + server.SetHandler(middle) if err := server.Serve(); err != nil { log.Fatalln(err) |