mirror of
https://github.com/airlabspl/uptimemonitor.git
synced 2025-08-14 04:09:15 +02:00
86 lines
1.6 KiB
Go
86 lines
1.6 KiB
Go
package uptimemonitor
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
IncidentStatusOpen string = "open"
|
|
IncidentStatusResolved string = "resolved"
|
|
)
|
|
|
|
type Incident struct {
|
|
ID int64
|
|
Uuid string
|
|
MonitorID int64
|
|
CreatedAt time.Time
|
|
StatusCode int
|
|
ResponseTimeMs int64
|
|
Body string
|
|
Headers string
|
|
StatusText string
|
|
ResolvedAt *time.Time
|
|
ReqMethod string
|
|
ReqUrl string
|
|
ReqHeaders string
|
|
ReqBody string
|
|
|
|
Monitor Monitor
|
|
}
|
|
|
|
func (i Incident) URI() string {
|
|
return fmt.Sprintf("/m/%s/i/%s", i.Monitor.Uuid, i.Uuid)
|
|
}
|
|
|
|
func (i Incident) BadgeClass() string {
|
|
if i.StatusCode >= 200 && i.StatusCode < 300 {
|
|
return "badge-success"
|
|
} else if i.StatusCode >= 300 && i.StatusCode < 400 {
|
|
return "badge-warning"
|
|
} else if i.StatusCode >= 400 && i.StatusCode < 500 {
|
|
return "badge-accent"
|
|
} else if i.StatusCode >= 500 {
|
|
return "badge-error"
|
|
} else {
|
|
return "badge-neutral"
|
|
}
|
|
}
|
|
|
|
func (i Incident) StatusCodeText() string {
|
|
return http.StatusText(i.StatusCode)
|
|
}
|
|
|
|
func (i Incident) StatusBadgeClass() string {
|
|
if i.StatusText == IncidentStatusOpen {
|
|
return "badge-error"
|
|
}
|
|
|
|
return "badge-success"
|
|
}
|
|
|
|
func (i Incident) StatusBadgeText() string {
|
|
if i.StatusText == IncidentStatusResolved {
|
|
return "Resolved"
|
|
}
|
|
|
|
return "Open"
|
|
}
|
|
|
|
func (i Incident) ReqHeadersMap() map[string]string {
|
|
if i.ReqHeaders == "" {
|
|
return map[string]string{}
|
|
}
|
|
|
|
customHeaders := map[string]string{}
|
|
err := json.Unmarshal([]byte(i.ReqHeaders), &customHeaders)
|
|
if err != nil {
|
|
return map[string]string{}
|
|
|
|
}
|
|
|
|
return customHeaders
|
|
}
|