Refactor server to go-sqlite and ginext [WIP]
This commit is contained in:
@@ -74,61 +74,65 @@ func (h ExternalHandler) UptimeKuma(pctx ginext.PreContext) ginext.HTTPResponse
|
||||
|
||||
var b body
|
||||
var q query
|
||||
ctx, httpErr := h.app.StartRequest(g, nil, &q, &b, nil)
|
||||
if httpErr != nil {
|
||||
return *httpErr
|
||||
}
|
||||
defer ctx.Cancel()
|
||||
|
||||
if b.Heartbeat == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'heartbeat' in request body", nil)
|
||||
}
|
||||
if b.Monitor == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'monitor' in request body", nil)
|
||||
}
|
||||
if b.Msg == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'msg' in request body", nil)
|
||||
}
|
||||
|
||||
title := langext.Conditional(b.Heartbeat.Status == 1, fmt.Sprintf("Monitor %v is back online", b.Monitor.Name), fmt.Sprintf("Monitor %v went down!", b.Monitor.Name))
|
||||
|
||||
content := b.Heartbeat.Msg
|
||||
|
||||
var timestamp *float64 = nil
|
||||
if tz, err := time.LoadLocation(b.Heartbeat.Timezone); err == nil {
|
||||
if ts, err := time.ParseInLocation("2006-01-02 15:04:05", b.Heartbeat.LocalDateTime, tz); err == nil {
|
||||
timestamp = langext.Ptr(float64(ts.Unix()))
|
||||
}
|
||||
}
|
||||
|
||||
var channel *string = nil
|
||||
if q.Channel != nil {
|
||||
channel = q.Channel
|
||||
}
|
||||
if q.ChannelUp != nil && b.Heartbeat.Status == 1 {
|
||||
channel = q.ChannelUp
|
||||
}
|
||||
if q.ChannelDown != nil && b.Heartbeat.Status != 1 {
|
||||
channel = q.ChannelDown
|
||||
}
|
||||
|
||||
var priority *int = nil
|
||||
if q.Priority != nil {
|
||||
priority = q.Priority
|
||||
}
|
||||
if q.PriorityUp != nil && b.Heartbeat.Status == 1 {
|
||||
priority = q.PriorityUp
|
||||
}
|
||||
if q.PriorityDown != nil && b.Heartbeat.Status != 1 {
|
||||
priority = q.PriorityDown
|
||||
}
|
||||
|
||||
okResp, errResp := h.app.SendMessage(g, ctx, q.UserID, q.KeyToken, channel, &title, &content, priority, nil, timestamp, q.SenderName)
|
||||
ctx, g, errResp := pctx.Query(&q).Body(&b).Start()
|
||||
if errResp != nil {
|
||||
return *errResp
|
||||
}
|
||||
defer ctx.Cancel()
|
||||
|
||||
return ctx.FinishSuccess(ginext.JSON(http.StatusOK, response{
|
||||
MessageID: okResp.Message.MessageID,
|
||||
}))
|
||||
return h.app.DoRequest(ctx, g, func(ctx *logic.AppContext, finishSuccess func(r ginext.HTTPResponse) ginext.HTTPResponse) ginext.HTTPResponse {
|
||||
|
||||
if b.Heartbeat == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'heartbeat' in request body", nil)
|
||||
}
|
||||
if b.Monitor == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'monitor' in request body", nil)
|
||||
}
|
||||
if b.Msg == nil {
|
||||
return ginresp.APIError(g, 400, apierr.BINDFAIL_BODY_PARAM, "missing field 'msg' in request body", nil)
|
||||
}
|
||||
|
||||
title := langext.Conditional(b.Heartbeat.Status == 1, fmt.Sprintf("Monitor %v is back online", b.Monitor.Name), fmt.Sprintf("Monitor %v went down!", b.Monitor.Name))
|
||||
|
||||
content := b.Heartbeat.Msg
|
||||
|
||||
var timestamp *float64 = nil
|
||||
if tz, err := time.LoadLocation(b.Heartbeat.Timezone); err == nil {
|
||||
if ts, err := time.ParseInLocation("2006-01-02 15:04:05", b.Heartbeat.LocalDateTime, tz); err == nil {
|
||||
timestamp = langext.Ptr(float64(ts.Unix()))
|
||||
}
|
||||
}
|
||||
|
||||
var channel *string = nil
|
||||
if q.Channel != nil {
|
||||
channel = q.Channel
|
||||
}
|
||||
if q.ChannelUp != nil && b.Heartbeat.Status == 1 {
|
||||
channel = q.ChannelUp
|
||||
}
|
||||
if q.ChannelDown != nil && b.Heartbeat.Status != 1 {
|
||||
channel = q.ChannelDown
|
||||
}
|
||||
|
||||
var priority *int = nil
|
||||
if q.Priority != nil {
|
||||
priority = q.Priority
|
||||
}
|
||||
if q.PriorityUp != nil && b.Heartbeat.Status == 1 {
|
||||
priority = q.PriorityUp
|
||||
}
|
||||
if q.PriorityDown != nil && b.Heartbeat.Status != 1 {
|
||||
priority = q.PriorityDown
|
||||
}
|
||||
|
||||
okResp, errResp := h.app.SendMessage(g, ctx, q.UserID, q.KeyToken, channel, &title, &content, priority, nil, timestamp, q.SenderName)
|
||||
if errResp != nil {
|
||||
return *errResp
|
||||
}
|
||||
|
||||
return finishSuccess(ginext.JSON(http.StatusOK, response{
|
||||
MessageID: okResp.Message.MessageID,
|
||||
}))
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user