diff --git a/docs/configuration.md b/docs/configuration.md index c84b3ef..000edbb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -853,7 +853,7 @@ Either a value from the table below or a URL to a custom search engine. Use `{QU ##### `new-tab` When set to `true`, swaps the shortcuts for showing results in the same or new tab, defaulting to showing results in a new tab. -##### `new-tab` +##### `autofocus` When set to `true`, automatically focuses the search input on page load. ##### `bangs` @@ -1144,6 +1144,7 @@ Properties for each site: | icon | string | no | | | allow-insecure | boolean | no | false | | same-tab | boolean | no | false | +| alt-status-codes | array | no | | `title` @@ -1179,6 +1180,15 @@ Whether to ignore invalid/self-signed certificates. Whether to open the link in the same or a new tab. +`alt-status-codes` + +Status codes other than 200 that you want to return "OK". + +```yaml +alt-status-codes: + - 403 +``` + ### Releases Display a list of latest releases for specific repositories on Github, GitLab, Codeberg or Docker Hub. diff --git a/internal/widget/monitor.go b/internal/widget/monitor.go index 06d7303..581781c 100644 --- a/internal/widget/monitor.go +++ b/internal/widget/monitor.go @@ -3,6 +3,7 @@ package widget import ( "context" "html/template" + "slices" "strconv" "time" @@ -10,8 +11,8 @@ import ( "github.com/glanceapp/glance/internal/feed" ) -func statusCodeToText(status int) string { - if status == 200 { +func statusCodeToText(status int, altStatusCodes []int) string { + if status == 200 || slices.Contains(altStatusCodes, status) { return "OK" } if status == 404 { @@ -33,8 +34,8 @@ func statusCodeToText(status int) string { return strconv.Itoa(status) } -func statusCodeToStyle(status int) string { - if status == 200 { +func statusCodeToStyle(status int, altStatusCodes []int) string { + if status == 200 || slices.Contains(altStatusCodes, status) { return "ok" } @@ -52,6 +53,7 @@ type Monitor struct { SameTab bool `yaml:"same-tab"` StatusText string `yaml:"-"` StatusStyle string `yaml:"-"` + AltStatusCodes []int `yaml:"alt-status-codes"` } `yaml:"sites"` ShowFailingOnly bool `yaml:"show-failing-only"` HasFailing bool `yaml:"-"` @@ -87,13 +89,13 @@ func (widget *Monitor) Update(ctx context.Context) { status := &statuses[i] site.Status = status - if status.Code >= 400 || status.TimedOut || status.Error != nil { + if !slices.Contains(site.AltStatusCodes, status.Code) && (status.Code >= 400 || status.TimedOut || status.Error != nil) { widget.HasFailing = true } if !status.TimedOut { - site.StatusText = statusCodeToText(status.Code) - site.StatusStyle = statusCodeToStyle(status.Code) + site.StatusText = statusCodeToText(status.Code, site.AltStatusCodes) + site.StatusStyle = statusCodeToStyle(status.Code, site.AltStatusCodes) } } }