mirror of
https://github.com/Xevion/banner.git
synced 2025-12-09 14:06:34 -06:00
Add panic recovery, switch some fatal raises to panic
I don't know what I am doing really
This commit is contained in:
12
api.go
12
api.go
@@ -100,19 +100,19 @@ func SelectTerm(term string) {
|
||||
|
||||
res, err := DoRequest(req)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Msg("Failed to select term")
|
||||
log.Panic().Stack().Err(err).Msg("Failed to select term")
|
||||
}
|
||||
|
||||
// Assert that the response is JSON
|
||||
if !ContentTypeMatch(res, "application/json") {
|
||||
log.Fatal().Stack().Str("content-type", res.Header.Get("Content-Type")).Msg("Response was not JSON")
|
||||
log.Panic().Stack().Str("content-type", res.Header.Get("Content-Type")).Msg("Response was not JSON")
|
||||
}
|
||||
|
||||
// Acquire fwdUrl
|
||||
defer res.Body.Close()
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Msg("Failed to read response body")
|
||||
log.Panic().Stack().Err(err).Msg("Failed to read response body")
|
||||
}
|
||||
|
||||
var redirectResponse struct {
|
||||
@@ -124,12 +124,12 @@ func SelectTerm(term string) {
|
||||
req = BuildRequest("GET", redirectResponse.FwdUrl, nil)
|
||||
res, err = DoRequest(req)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Msg("Redirect request failed")
|
||||
log.Panic().Stack().Err(err).Msg("Redirect request failed")
|
||||
}
|
||||
|
||||
// Assert that the response is OK (200)
|
||||
if res.StatusCode != 200 {
|
||||
log.Fatal().Stack().Int("status", res.StatusCode).Msg("Unexpected status code from redirect request")
|
||||
log.Panic().Stack().Int("status", res.StatusCode).Msg("Unexpected status code from redirect request")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ func GetPartOfTerms(search string, term int, offset int, max int) ([]BannerTerm,
|
||||
|
||||
// Assert that the response is JSON
|
||||
if !ContentTypeMatch(res, "application/json") {
|
||||
log.Fatal().Stack().Str("content-type", res.Header.Get("Content-Type")).Msg("Response was not JSON")
|
||||
log.Panic().Stack().Str("content-type", res.Header.Get("Content-Type")).Msg("Response was not JSON")
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
|
||||
@@ -138,10 +138,8 @@ func SearchCommandHandler(session *discordgo.Session, interaction *discordgo.Int
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error parsing implied course code (high)")
|
||||
}
|
||||
}
|
||||
|
||||
// 4 digit code
|
||||
if len(valueRaw) == 4 {
|
||||
} else if len(valueRaw) == 4 {
|
||||
// 4 digit code
|
||||
low, err = strconv.Atoi(valueRaw)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error parsing course code")
|
||||
|
||||
13
main.go
13
main.go
@@ -223,6 +223,19 @@ func main() {
|
||||
// Log command invocation
|
||||
event.Msg("Command Invoked")
|
||||
|
||||
// Prepare to recover
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Error().Stack().Str("commandName", name).Interface("detail", err).Msg("Command Handler Panic")
|
||||
|
||||
// Respond with error
|
||||
err := RespondError(internalSession, interaction.Interaction, "Unexpected Error: command handler panic", nil)
|
||||
if err != nil {
|
||||
log.Error().Stack().Str("commandName", name).Err(err).Msg("Failed to respond with panic error feedback")
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
// Call handler
|
||||
err := handler(internalSession, interaction)
|
||||
|
||||
|
||||
10
types.go
10
types.go
@@ -177,7 +177,7 @@ const layout = "01/02/2006"
|
||||
func (m *MeetingTimeResponse) StartDay() time.Time {
|
||||
t, err := time.Parse(layout, m.MeetingTime.StartDate)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Str("raw", m.MeetingTime.StartDate).Msg("Cannot parse start date")
|
||||
log.Panic().Stack().Err(err).Str("raw", m.MeetingTime.StartDate).Msg("Cannot parse start date")
|
||||
}
|
||||
return t
|
||||
}
|
||||
@@ -187,7 +187,7 @@ func (m *MeetingTimeResponse) StartDay() time.Time {
|
||||
func (m *MeetingTimeResponse) EndDay() time.Time {
|
||||
t, err := time.Parse(layout, m.MeetingTime.EndDate)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Str("raw", m.MeetingTime.EndDate).Msg("Cannot parse end date")
|
||||
log.Panic().Stack().Err(err).Str("raw", m.MeetingTime.EndDate).Msg("Cannot parse end date")
|
||||
}
|
||||
return t
|
||||
}
|
||||
@@ -197,12 +197,12 @@ func (m *MeetingTimeResponse) EndDay() time.Time {
|
||||
func (m *MeetingTimeResponse) StartTime() *NaiveTime {
|
||||
raw := m.MeetingTime.BeginTime
|
||||
if raw == "" {
|
||||
log.Fatal().Stack().Msg("Start time is empty")
|
||||
log.Panic().Stack().Msg("Start time is empty")
|
||||
}
|
||||
|
||||
value, err := strconv.ParseUint(raw, 10, 32)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Str("raw", raw).Msg("Cannot parse start time integer")
|
||||
log.Panic().Stack().Err(err).Str("raw", raw).Msg("Cannot parse start time integer")
|
||||
}
|
||||
|
||||
return ParseNaiveTime(value)
|
||||
@@ -218,7 +218,7 @@ func (m *MeetingTimeResponse) EndTime() *NaiveTime {
|
||||
|
||||
value, err := strconv.ParseUint(raw, 10, 32)
|
||||
if err != nil {
|
||||
log.Fatal().Stack().Err(err).Str("raw", raw).Msg("Cannot parse end time integer")
|
||||
log.Panic().Stack().Err(err).Str("raw", raw).Msg("Cannot parse end time integer")
|
||||
}
|
||||
|
||||
return ParseNaiveTime(value)
|
||||
|
||||
Reference in New Issue
Block a user