代码拉取完成,页面将自动刷新
package process_admin
import (
"encoding/json"
"errors"
"fmt"
"io"
"mime"
"net/http"
"strings"
"gitee.com/meng_mengs_boys/eosc/log"
"github.com/ghodss/yaml"
)
var (
ErrorUnknownContentType = errors.New("unknown content type")
)
type IData interface {
UnMarshal(v interface{}) error
Encode() ([]byte, error)
}
type JsonData []byte
func (j JsonData) String() string {
return string(j)
}
func (j JsonData) Encode() ([]byte, error) {
return j, nil
}
func (j JsonData) UnMarshal(v interface{}) error {
return json.Unmarshal(j, &v)
}
func (j JsonData) Marshal() ([]byte, error) {
return j, nil
}
type YamlData []byte
func (y YamlData) String() string {
return string(y)
}
func (y YamlData) Encode() ([]byte, error) {
v := make(map[string]interface{})
err := y.UnMarshal(&v)
if err != nil {
return nil, err
}
return json.Marshal(v)
}
func (y YamlData) UnMarshal(v interface{}) error {
return yaml.Unmarshal(y, v)
}
func (y YamlData) Marshal() ([]byte, error) {
return y, nil
}
func GetData(req *http.Request) (IData, error) {
mediaType, _, err := mime.ParseMediaType(req.Header.Get("content-type"))
if err != nil {
return nil, err
}
switch strings.ToLower(mediaType) {
case "application/json":
data, e := io.ReadAll(req.Body)
if e != nil {
return nil, e
}
req.Body.Close()
log.Debug("GetData:JsonData:", string(data))
return JsonData(data), nil
case "application/yaml":
data, e := io.ReadAll(req.Body)
if e != nil {
return nil, e
}
req.Body.Close()
log.Debug("GetData:YamlData:", string(data))
return YamlData(data), nil
}
return nil, fmt.Errorf("%s:%w", mediaType, ErrorUnknownContentType)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。