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) | 
