summaryrefslogtreecommitdiffstats
path: root/golang/cmd/fatcatd
diff options
context:
space:
mode:
Diffstat (limited to 'golang/cmd/fatcatd')
-rw-r--r--golang/cmd/fatcatd/main.go46
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)