diff --git a/api.go b/api.go index a701e88..47fdf9f 100644 --- a/api.go +++ b/api.go @@ -32,10 +32,7 @@ func GetTerms(search string, offset int, max int) ([]Term, error) { "_": Nonce(), }) - onRequest(req) - res, err := client.Do(req) - onResponse(res) - + res, err := doRequest(req) if err != nil { return nil, err } @@ -49,7 +46,7 @@ func GetTerms(search string, offset int, max int) ([]Term, error) { log.Printf("ERR Response was not JSON: %s", res.Header.Get("Content-Type")) } - return make([]Term, 0), nil + return make([]Term, 0, 0), nil } type TermParts struct { diff --git a/helpers.go b/helpers.go index 6098705..13fe053 100644 --- a/helpers.go +++ b/helpers.go @@ -67,12 +67,15 @@ func Nonce() string { return strconv.Itoa(int(time.Now().UnixMilli())) } -func onRequest(req *http.Request) { - log.Printf("GET %s", req.URL.String()) -} - -func onResponse(res *http.Response) { - log.Printf("%s %d %s", res.Status, res.ContentLength, res.Header["Content-Type"]) +func doRequest(req *http.Request) (*http.Response, error) { + log.Debug().Str("method", req.Method).Msg("Request") + res, err := client.Do(req) + if err != nil { + log.Err(err).Str("method", req.Method).Msg("Request Failed") + } else { + log.Debug().Str("status", res.Status).Int64("content-length", res.ContentLength).Strs("content-type", res.Header["Content-Type"]).Msg("Response") + } + return res, err } func Plural(n int) string { diff --git a/main.go b/main.go index 04cb01e..d368243 100644 --- a/main.go +++ b/main.go @@ -52,7 +52,23 @@ func (l logOut) WriteLevel(level zerolog.Level, p []byte) (n int, err error) { } func init() { - log.Logger = zerolog.New(logOut{}).With().Timestamp().Logger() + env := os.Getenv("ENV") + if env == "" { + env = "development" + } + var isDevelopment bool = env == "development" + + environmentDict := zerolog.Dict() + lo.ForEach(os.Environ(), func(envVar string, _ int) { + envVarSplit := strings.Split(envVar, "=") + environmentDict.Str(envVarSplit[0], envVarSplit[1]) + }) + log.Info().Dict("env", environmentDict).Msg("env") + + if isDevelopment { + log.Logger = zerolog.New(logOut{}).With().Timestamp().Logger() + } + discordgo.Logger = func(msgL, caller int, format string, a ...interface{}) { pc, file, line, _ := runtime.Caller(caller) @@ -90,16 +106,18 @@ func main() { } baseURL = os.Getenv("BANNER_BASE_URL") - // + // Create cookie jar var err error cookies, err = cookiejar.New(nil) if err != nil { log.Err(err).Msg("Cannot create cookie jar") } + // Create client, setup session (acquire cookies) client = http.Client{Jar: cookies} setup() + // Create discord session session, err = discordgo.New("Bot " + os.Getenv("BOT_TOKEN")) if err != nil { log.Err(err).Msg("Invalid bot parameters") @@ -130,13 +148,14 @@ func main() { }) log.Info().Array("commands", zerolog.Arr()).Msg("Registering commands") + // Register commands registeredCommands := make([]*discordgo.ApplicationCommand, len(commandDefinitions)) - for i, v := range commandDefinitions { - cmd, err := session.ApplicationCommandCreate(session.State.User.ID, os.Getenv("BOT_TARGET_GUILD"), v) + for i, cmdDefinition := range commandDefinitions { + cmdInstance, err := session.ApplicationCommandCreate(session.State.User.ID, os.Getenv("BOT_TARGET_GUILD"), cmdDefinition) if err != nil { - log.Panic().Msgf("Cannot create '%v' command: %v", v.Name, err) + log.Panic().Err(err).Str("name", cmdDefinition.Name).Msgf("Cannot register command") } - registeredCommands[i] = cmd + registeredCommands[i] = cmdInstance } // Cloes session, ensure diff --git a/session.go b/session.go index 063e6e0..b7d739c 100644 --- a/session.go +++ b/session.go @@ -17,9 +17,7 @@ func setup() { for _, path := range request_queue { req := BuildRequest("GET", path, nil) - onRequest(req) - res, _ := client.Do(req) - onResponse(res) + doRequest(req) } // Validate that cookies were set