Merge pull request #240 from cmeadowstech/alt-status-codes
Add alternative status code option to monitor widget
This commit is contained in:
commit
72f78f1c8d
2 changed files with 20 additions and 8 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue