63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
package logweb
|
||
|
||
import (
|
||
"encoding/json"
|
||
"strings"
|
||
)
|
||
|
||
// JSONBlock 格式化 JSON 展示块。
|
||
type JSONBlock struct {
|
||
Raw string `json:"raw"`
|
||
Formatted string `json:"formatted,omitempty"`
|
||
Valid bool `json:"valid"`
|
||
ParseError string `json:"parseError,omitempty"`
|
||
}
|
||
|
||
// FormatJSON 尝试美化 JSON;失败则返回原文。
|
||
func FormatJSON(s string) JSONBlock {
|
||
s = strings.TrimSpace(s)
|
||
if s == "" {
|
||
return JSONBlock{Raw: "", Valid: true}
|
||
}
|
||
var v any
|
||
if err := json.Unmarshal([]byte(s), &v); err != nil {
|
||
return JSONBlock{Raw: s, Valid: false, ParseError: err.Error()}
|
||
}
|
||
b, err := json.MarshalIndent(v, "", " ")
|
||
if err != nil {
|
||
return JSONBlock{Raw: s, Valid: false, ParseError: err.Error()}
|
||
}
|
||
return JSONBlock{Raw: s, Formatted: string(b), Valid: true}
|
||
}
|
||
|
||
// CallbackView 推断的回调结构(与 xkapi.CallbackItem 对齐)。
|
||
type CallbackView struct {
|
||
RecordID int `json:"record_id,omitempty"`
|
||
BizKey string `json:"biz_key"`
|
||
PushStatus string `json:"push_status"`
|
||
PushStatusLabel string `json:"push_status_label,omitempty"`
|
||
CallbackStatus string `json:"callback_status"`
|
||
CallbackStatusLabel string `json:"callback_status_label,omitempty"`
|
||
HTTPCode int `json:"http_code,omitempty"`
|
||
MsgCode int `json:"msg_code,omitempty"`
|
||
Msg string `json:"msg,omitempty"`
|
||
TraceID string `json:"trace_id,omitempty"`
|
||
ResponseBody string `json:"response_body,omitempty"`
|
||
ErrorMessage string `json:"error_message,omitempty"`
|
||
Note string `json:"note,omitempty"`
|
||
}
|
||
|
||
// InferCallbackStatus 由 push_status 推断 callback_status。
|
||
func InferCallbackStatus(pushStatus string) string {
|
||
switch pushStatus {
|
||
case "success":
|
||
return "success"
|
||
case "skipped":
|
||
return "failed"
|
||
case "failed":
|
||
return "failed"
|
||
default:
|
||
return "waiting"
|
||
}
|
||
}
|