github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/utils/request.go (about) 1 package serverUtils 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "io" 8 "log" 9 "net/http" 10 "net/url" 11 12 "github.com/easysoft/zendata/internal/pkg/model" 13 ) 14 15 func SetupCORS(w *http.ResponseWriter, req *http.Request) { 16 (*w).Header().Set("Access-Control-Allow-Origin", "*") 17 (*w).Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") 18 (*w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") 19 } 20 21 func OutputErr(err error, writer http.ResponseWriter) { 22 errRes := ErrRes(err.Error()) 23 WriteRes(errRes, writer) 24 } 25 26 func WriteRes(ret model.RespData, writer http.ResponseWriter) { 27 jsonStr, _ := json.Marshal(ret) 28 io.WriteString(writer, string(jsonStr)) 29 } 30 31 func ErrRes(msg string) model.RespData { 32 return model.RespData{Code: 0, Msg: msg} 33 } 34 35 func ParserJsonReq(bytes []byte, obj *model.ReqData) (err error) { 36 err = json.Unmarshal(bytes, &obj) 37 if err != nil { 38 log.Println(fmt.Sprintf("parse json error %s", err)) 39 return 40 } 41 42 return 43 } 44 45 func ParserGetParams(values url.Values, name, short string) (val string) { 46 for key, item := range values { 47 if key == name || key == short { 48 val = item[len(item)-1] 49 } 50 } 51 return val 52 } 53 54 func ParserPostParams(req *http.Request, paramName, paramNameShort string, dft string, isFile bool) (ret string) { 55 if paramNameShort != "" && req.FormValue(paramNameShort) != "" { 56 ret = req.FormValue(paramNameShort) 57 } else if paramName != "" && req.FormValue(paramName) != "" { // high priority than paramName2 58 ret = req.FormValue(paramName) 59 } 60 61 if isFile && ret == "" { 62 postFile, _, _ := req.FormFile(paramNameShort) 63 if postFile != nil { 64 defer postFile.Close() 65 66 buf := bytes.NewBuffer(nil) 67 io.Copy(buf, postFile) 68 ret = buf.String() 69 } 70 71 if ret == "" { 72 postFile, _, _ = req.FormFile(paramName) 73 if postFile != nil { 74 defer postFile.Close() 75 76 buf := bytes.NewBuffer(nil) 77 io.Copy(buf, postFile) 78 ret = buf.String() 79 } 80 } 81 } 82 83 if ret == "" { 84 ret = dft 85 } 86 87 return 88 }