package statuscake
import (
"strconv"
"strings"
)
type autheticationErrorResponse struct {
ErrNo int
Error string
}
type updateResponse struct {
Issues interface{} `json:"Issues"`
Success bool `json:"Success"`
Message string `json:"Message"`
InsertID int `json:"InsertID"`
}
type deleteResponse struct {
Success bool `json:"Success"`
Error string `json:"Error"`
}
type contactGroupDetailResponse struct {
ID int `json:"ID"`
Name string `json:"Name"`
Email string `json:"Email"`
}
type detailResponse struct {
Method string `json:"Method"`
TestID int `json:"TestID"`
TestType string `json:"TestType"`
Paused bool `json:"Paused"`
WebsiteName string `json:"WebsiteName"`
URI string `json:"URI"`
ContactID int `json:"ContactID"`
ContactGroups []contactGroupDetailResponse `json:"ContactGroups"`
Status string `json:"Status"`
Uptime float64 `json:"Uptime"`
CustomHeader string `json:"CustomHeader"`
UserAgent string `json:"UserAgent"`
CheckRate int `json:"CheckRate"`
Timeout int `json:"Timeout"`
LogoImage string `json:"LogoImage"`
Confirmation int `json:"Confirmation,string"`
WebsiteHost string `json:"WebsiteHost"`
NodeLocations []string `json:"NodeLocations"`
FindString string `json:"FindString"`
DoNotFind bool `json:"DoNotFind"`
LastTested string `json:"LastTested"`
NextLocation string `json:"NextLocation"`
Port int `json:"Port"`
Processing bool `json:"Processing"`
ProcessingState string `json:"ProcessingState"`
ProcessingOn string `json:"ProcessingOn"`
DownTimes int `json:"DownTimes,string"`
Sensitive bool `json:"Sensitive"`
TriggerRate int `json:"TriggerRate,string"`
UseJar int `json:"UseJar"`
PostRaw string `json:"PostRaw"`
FinalEndpoint string `json:"FinalEndpoint"`
EnableSSLWarning bool `json:"EnableSSLWarning"`
FollowRedirect bool `json:"FollowRedirect"`
StatusCodes []string `json:"StatusCodes"`
}
func (d *detailResponse) test() *Test {
contactGroupIds := make([]string, len(d.ContactGroups))
for i, v := range d.ContactGroups {
contactGroupIds[i] = strconv.Itoa(v.ID)
}
return &Test{
TestID: d.TestID,
TestType: d.TestType,
Paused: d.Paused,
WebsiteName: d.WebsiteName,
WebsiteURL: d.URI,
CustomHeader: d.CustomHeader,
UserAgent: d.UserAgent,
ContactID: d.ContactID,
ContactGroup: contactGroupIds,
Status: d.Status,
Uptime: d.Uptime,
CheckRate: d.CheckRate,
Timeout: d.Timeout,
LogoImage: d.LogoImage,
Confirmation: d.Confirmation,
WebsiteHost: d.WebsiteHost,
NodeLocations: d.NodeLocations,
FindString: d.FindString,
DoNotFind: d.DoNotFind,
Port: d.Port,
TriggerRate: d.TriggerRate,
UseJar: d.UseJar,
PostRaw: d.PostRaw,
FinalEndpoint: d.FinalEndpoint,
EnableSSLAlert: d.EnableSSLWarning,
FollowRedirect: d.FollowRedirect,
StatusCodes: strings.Join(d.StatusCodes[:], ","),
}
}