Files
MirageServer/controller/console_api_common.go
T
Chenyang Gao f43aed2be7 增加组织magicDNS域名随机及更新机制
Signed-off-by: Chenyang Gao <gps949@outlook.com>
2023-03-25 14:37:44 +08:00

88 lines
1.9 KiB
Go

package controller
import (
"bytes"
_ "embed"
"encoding/json"
"html/template"
"net/http"
"github.com/rs/zerolog/log"
)
func (h *Mirage) ListIdps(
w http.ResponseWriter,
r *http.Request,
) {
h.doAPIResponse(w, "", h.cfg.IdpList)
}
// API调用的统一响应发报
// @msg 响应状态:成功时data不为nil则忽略,自动设置为success,否则拼接error-{msg}
// @data 响应数据:key值为data的json对象
func (h *Mirage) doAPIResponse(writer http.ResponseWriter, msg string, data interface{}) {
res := APIResponse{}
if msg == "" {
res.Status = "success"
res.Data = data
} else {
res.Status = "error-" + msg
}
writer.Header().Set("Content-Type", "application/json; charset=utf-8")
writer.WriteHeader(http.StatusOK)
err := json.NewEncoder(writer).Encode(&res)
if err != nil {
log.Error().
Caller().
Err(err).
Msg("Failed to write response")
}
}
//go:embed templates/BadCode.html
var errTemplate string
// cgao6: 用这个向前端返回错误页面
func (h *Mirage) ErrMessage(
w http.ResponseWriter,
r *http.Request,
code int,
msg string,
) {
errT := template.Must(template.New("err").Parse(errTemplate))
config := map[string]interface{}{
"ErrCode": code,
"ErrMsg": msg,
}
var payload bytes.Buffer
if err := errT.Execute(&payload, config); err != nil {
log.Error().
Str("handler", "ErrMessage").
Err(err).
Msg("Could not render Error template")
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
w.WriteHeader(http.StatusInternalServerError)
_, err := w.Write([]byte("Could not render Error template"))
if err != nil {
log.Error().
Caller().
Err(err).
Msg("Failed to write response")
}
return
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(code)
_, err := w.Write(payload.Bytes())
if err != nil {
log.Error().
Caller().
Err(err).
Msg("Failed to write response")
}
}