diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -0,0 +1,59 @@ +package main + +import ( + "net/http" + + "git.capotej.com/capotej/communique/cgi" + "git.capotej.com/capotej/communique/config" + "github.com/BurntSushi/toml" + "go.uber.org/zap" + "go.uber.org/zap/zapio" + + "github.com/gin-gonic/gin" +) + +func main() { + // ctx := context.Background() + // Logger + logger, _ := zap.NewDevelopment() + defer logger.Sync() // flushes buffer, if any + log := logger.Sugar() + + // Config + var cfg config.Config + //TODO use a flag here + _, err := toml.DecodeFile("sample-config.toml", &cfg) + if err != nil { + log.Fatal(err) + } + + log.Debugf("Loaded TOML Config: %+v", cfg) + + // Server + writer := &zapio.Writer{Log: logger, Level: zap.DebugLevel} + defer writer.Close() + + // CGI Servers + servers := cgi.NewServers() + servers.Start(cfg) + + // HTTP Server + router := gin.Default() + router.SetTrustedProxies(nil) + gin.DisableConsoleColor() + gin.DefaultWriter = writer // send gin logs to zap + + router.GET("/ping", func(c *gin.Context) { + c.JSON(http.StatusOK, gin.H{ + "message": "pong", + }) + }) + + // This handler will match /user/john but will not match /user/ or /user + router.GET("/.well-known/webfinger", func(c *gin.Context) { + // resource := c.Query("resource") + c.JSON(http.StatusOK, nil) + }) + + router.Run() +} |