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  }