From 538d8d13c3ebc32e234d4d130ec2e862347d0774 Mon Sep 17 00:00:00 2001 From: wolmi Date: Thu, 5 Oct 2023 11:12:49 +0200 Subject: [PATCH] feat: refactor to use echo logger (#10) * feat: refactor to use echo logger * fix: lint & fmt * fix: missing lint --- cmd/root.go | 11 ++++++----- go.mod | 6 ++++-- main.go | 1 - types/proxy.go | 20 +++++++++++++++----- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 8daad41..676ff61 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -31,8 +31,6 @@ and manages to publish them in a GCP PubSub topic.`, proxy.Init(ctx) - - }, } @@ -50,14 +48,17 @@ func init() { rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.livekit-webhook-proxy.yaml)") + rootCmd.PersistentFlags().Bool("debug", false, "Debug mode") + viper.BindPFlag("debug", rootCmd.PersistentFlags().Lookup("debug")) // nolint + rootCmd.Flags().IntP("port", "p", 8080, "Port to start the proxy") - viper.BindPFlag("port", rootCmd.Flags().Lookup("port")) + viper.BindPFlag("port", rootCmd.Flags().Lookup("port")) // nolint rootCmd.Flags().StringP("topic", "t", "", "Topic in the GCP PubSub to publish events") - viper.BindPFlag("topic", rootCmd.Flags().Lookup("topic")) + viper.BindPFlag("topic", rootCmd.Flags().Lookup("topic")) // nolint rootCmd.Flags().StringP("project-id", "P", "", "GCP ProjectId") - viper.BindPFlag("project-id", rootCmd.Flags().Lookup("project-id")) + viper.BindPFlag("project-id", rootCmd.Flags().Lookup("project-id")) // nolint } // initConfig reads in config file and ENV variables if set. diff --git a/go.mod b/go.mod index f59cfc4..bdc4016 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,10 @@ module livekit-webhook-proxy go 1.20 -require cloud.google.com/go/compute/metadata v0.2.3 +require ( + cloud.google.com/go/compute/metadata v0.2.3 + github.com/labstack/gommon v0.4.0 +) require ( cloud.google.com/go v0.110.2 // indirect @@ -13,7 +16,6 @@ require ( github.com/google/s2a-go v0.1.4 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.11.0 // indirect - github.com/labstack/gommon v0.4.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect diff --git a/main.go b/main.go index d02eacf..fcb49b0 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,5 @@ /* Copyright © 2023 Miquel Ramon Ortega Tido - */ package main diff --git a/types/proxy.go b/types/proxy.go index f86f6e0..9d65b7b 100644 --- a/types/proxy.go +++ b/types/proxy.go @@ -5,9 +5,10 @@ import ( "encoding/json" "fmt" "livekit-webhook-proxy/utils" - "log" "net/http" + "github.com/labstack/gommon/log" + "cloud.google.com/go/pubsub" "github.com/labstack/echo/v4" "github.com/spf13/viper" @@ -22,6 +23,14 @@ func (p *Proxy) Init(ctx context.Context) { p.echo = echo.New() p.pubsub.Init(ctx) + p.echo.HideBanner = true + + // get log level from flag + logLevel := viper.GetBool("debug") + if logLevel { + p.echo.Logger.SetLevel(log.DEBUG) + } + p.echo.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "ok") }) @@ -33,11 +42,12 @@ func (p *Proxy) Init(ctx context.Context) { func (p *Proxy) publish(c echo.Context) error { var payload map[string]interface{} if err := json.NewDecoder(c.Request().Body).Decode(&payload); err != nil { + p.echo.Logger.Errorf("could not decode body: %v", err) return echo.NewHTTPError(http.StatusBadRequest, "could not bind body").SetInternal(err) } - log.Printf("[INFO] livekit event %s in room %s", payload["event"], payload["room"].(map[string]interface{})["name"]) + p.echo.Logger.Infof("livekit event %s in room %s", payload["event"], payload["room"].(map[string]interface{})["name"]) jsonPayload, _ := json.Marshal(payload) - log.Printf("[DEBUG] event payload data: %s", jsonPayload) + p.echo.Logger.Debugf("event payload data: %s", jsonPayload) topic := p.pubsub.Client.Topic(viper.GetString("topic")) res := topic.Publish(c.Request().Context(), &pubsub.Message{ @@ -45,8 +55,8 @@ func (p *Proxy) publish(c echo.Context) error { }) msgID, err := res.Get(c.Request().Context()) if err != nil { - log.Fatal(err) + p.echo.Logger.Fatal(err) } - log.Printf("[DEBUG] event published with msgID %v", msgID) + p.echo.Logger.Debugf("event published with msgID %v", msgID) return c.JSON(http.StatusOK, payload) }