mirror of
https://github.com/airlabspl/uptimemonitor.git
synced 2025-08-14 20:29:16 +02:00
initial commit
This commit is contained in:
73
monitor.go
Normal file
73
monitor.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package uptimemonitor
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Monitor struct {
|
||||
ID int64
|
||||
Uuid string
|
||||
Url string
|
||||
HttpMethod string
|
||||
HttpHeaders string
|
||||
HttpBody string
|
||||
WebhookUrl string
|
||||
WebhookMethod string
|
||||
WebhookHeaders string
|
||||
WebhookBody string
|
||||
Uptime float32
|
||||
AvgResponseTimeMs int64
|
||||
N int64
|
||||
IncidentsCount int64
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
||||
func (m Monitor) URI() string {
|
||||
return fmt.Sprintf("/m/%s", m.Uuid)
|
||||
}
|
||||
|
||||
func (m Monitor) Secure() bool {
|
||||
uri, err := url.ParseRequestURI(m.Url)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return uri.Scheme == "https"
|
||||
}
|
||||
|
||||
func (m Monitor) Domain() string {
|
||||
uri, err := url.ParseRequestURI(m.Url)
|
||||
if err != nil {
|
||||
return m.Url
|
||||
}
|
||||
|
||||
res, err := url.JoinPath(uri.Host, strings.TrimLeft(uri.Path, "/"))
|
||||
if err != nil {
|
||||
return m.Url
|
||||
}
|
||||
|
||||
if uri.RawQuery != "" {
|
||||
res = fmt.Sprintf("%s?%s", res, uri.Query().Encode())
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func (m Monitor) Host() string {
|
||||
uri, err := url.ParseRequestURI(m.Url)
|
||||
if err != nil {
|
||||
return m.Url
|
||||
}
|
||||
|
||||
host := uri.Host
|
||||
maxLimit := 30
|
||||
|
||||
if len(host) > maxLimit {
|
||||
return fmt.Sprintf("%s...", host[:maxLimit])
|
||||
}
|
||||
|
||||
return host
|
||||
}
|
Reference in New Issue
Block a user