diff --git a/cmd/CatsOfMastodonBotGo/main.go b/cmd/CatsOfMastodonBotGo/main.go index 95cb5be..0d29de6 100644 --- a/cmd/CatsOfMastodonBotGo/main.go +++ b/cmd/CatsOfMastodonBotGo/main.go @@ -18,6 +18,9 @@ import ( func main() { fx.New( fx.Provide( + // Logger + NewLogger, + // Configuration config.Load, @@ -37,9 +40,6 @@ func main() { handlers.NewApiEndpointHandler, handlers.NewEmbedCardHandler, handlers.NewOauthLoginHandler, - - // Logger - NewLogger, ), fx.Invoke( // Start background tasks diff --git a/internal/auth/oauth2.go b/internal/auth/oauth2.go index 705efbb..64c21f9 100644 --- a/internal/auth/oauth2.go +++ b/internal/auth/oauth2.go @@ -5,13 +5,15 @@ import ( "bytes" "encoding/json" "io" - "log/slog" "net/http" "net/url" + + "go.uber.org/zap" ) type GiteaOAuth2Handler struct { cfg *config.Config + logger *zap.Logger } func NewGiteaOauth2Token(cfg *config.Config) *GiteaOAuth2Handler { @@ -24,7 +26,7 @@ func (g *GiteaOAuth2Handler) GetGiteaLoginURL(redirectHost string) (string, erro } if redirectHost == "" { - slog.Error("Redirect host not provided") + g.logger.Error("Redirect host not provided") return "", nil } @@ -35,7 +37,7 @@ func (g *GiteaOAuth2Handler) GetGiteaLoginURL(redirectHost string) (string, erro func (g *GiteaOAuth2Handler) GetGiteaUserEmailByCode(code string) (string, error) { if g.cfg.GiteaOauthInstance == "" { - slog.Error("Instance URL not provided") + g.logger.Error("Instance URL not provided") return "", nil } // No need to verify since we are accesing the gitea once and only for the email @@ -45,7 +47,7 @@ func (g *GiteaOAuth2Handler) GetGiteaUserEmailByCode(code string) (string, error } userInfoUrl := g.cfg.GiteaOauthInstance + "/login/oauth/userinfo" - slog.Info(userInfoUrl) + g.logger.Info(userInfoUrl) req, err := http.NewRequest("POST", userInfoUrl, nil) if err != nil { return "", err diff --git a/internal/config/config.go b/internal/config/config.go index b8864b6..12ac6c6 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,11 +1,11 @@ package config import ( - "log/slog" "os" "strings" "github.com/joho/godotenv" + "go.uber.org/zap" ) type Config struct { @@ -32,10 +32,10 @@ type Config struct { GiteaOauthAllowedEmails []string } -func Load() *Config { +func Load(logger *zap.Logger) *Config { err := godotenv.Load() if err != nil { - slog.Warn("Error loading .env file - Using environment variables instead") + logger.Warn("Error loading .env file - Using environment variables instead") } // Get mastodon instance @@ -51,7 +51,7 @@ func Load() *Config { // Get admin password (Its a single user/admin app so its just fine) adminPassword := os.Getenv("CAOM_ADMIN_PASSWORD") if adminPassword == "" { - slog.Warn("No admin password provided, using default password 'catsaregood'") + logger.Warn("No admin password provided, using default password 'catsaregood'") adminPassword = "catsaregood" } @@ -62,12 +62,12 @@ func Load() *Config { } issuer := os.Getenv("CAOM_JWT_ISSUER") if issuer == "" { - slog.Info("No jwt issuer provided, using default issuer 'CatsOfMastodonBotGo'") + logger.Info("No jwt issuer provided, using default issuer 'CatsOfMastodonBotGo'") issuer = "CatsOfMastodonBotGo" } audience := os.Getenv("CAOM_JWT_AUDIENCE") if audience == "" { - slog.Info("No jwt audience provided, using default audience 'CatsOfMastodonBotGo'") + logger.Info("No jwt audience provided, using default audience 'CatsOfMastodonBotGo'") audience = "CatsOfMastodonBotGo" } @@ -89,7 +89,7 @@ func Load() *Config { } if dbEngine == "" || dbHost == "" || dbPort == "" || dbUser == "" || dbPassword == "" || dbName == "" { - slog.Info("No database connection provided, using sqlite") + logger.Info("No database connection provided, using sqlite") dbEngine = "sqlite" dbHost = "" dbPort = "" @@ -100,7 +100,7 @@ func Load() *Config { imageKitId := os.Getenv("CAOM_IMAGEKIT_ID") if imageKitId == "" { - slog.Info("No imagekit id provided, not using imagekit.io") + logger.Info("No imagekit id provided, not using imagekit.io") } // Initialize AppContext return &Config{ @@ -126,4 +126,4 @@ func Load() *Config { GiteaOauthClientSecret: giteaOauthClientSecret, GiteaOauthAllowedEmails: giteaOauthAllowedEmailsParsed, } -} \ No newline at end of file +}