133 lines
2.6 KiB
Go
133 lines
2.6 KiB
Go
package q5
|
|
|
|
import (
|
|
"os"
|
|
"net"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
"io/ioutil"
|
|
"reflect"
|
|
"encoding/json"
|
|
)
|
|
|
|
func GetDaySeconds(seconds int64, timeZone int64) int64 {
|
|
return ((seconds + timeZone * 3600)/3600/24 + 1) * 3600 * 24 - 3600 * timeZone;
|
|
}
|
|
|
|
func GetTickCount() int64 {
|
|
return time.Now().UnixNano() / 1e6
|
|
}
|
|
|
|
func MkUInt16(b1 byte, b2 byte) uint16 {
|
|
return uint16(b1) + (uint16(b2) << 8)
|
|
}
|
|
|
|
func MkUInt32(b1 byte, b2 byte, b3 byte, b4 byte) uint32 {
|
|
return uint32(b1) +
|
|
(uint32(b2) << 8) +
|
|
(uint32(b3) << 16) +
|
|
(uint32(b4) << 24)
|
|
}
|
|
|
|
func MkInt64(lo32 int32, hi32 int32) int64 {
|
|
return int64(lo32) + (int64(hi32) << 32)
|
|
}
|
|
|
|
func Request(r *http.Request, name string) string {
|
|
if r.Form == nil {
|
|
r.ParseForm()
|
|
}
|
|
if vs, ok := r.Form[name]; ok {
|
|
if len(vs) > 0 {
|
|
return vs[0]
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func Response(w* http.ResponseWriter, data string) {
|
|
(*w).Write([]byte(data))
|
|
}
|
|
|
|
func ResponseOk(w* http.ResponseWriter) {
|
|
(*w).Write([]byte(`{"errcode":0, "errmsg":""}`))
|
|
}
|
|
|
|
func ResponseErr(w* http.ResponseWriter, errCode int32, errMsg string) {
|
|
rspObj := map[string]interface{}{}
|
|
rspObj["errcode"] = errCode
|
|
rspObj["errmsg"] = errMsg
|
|
jsonObj, _ := json.Marshal(rspObj)
|
|
Response(w, string(jsonObj))
|
|
}
|
|
|
|
func ResponseInt32Ok(w* http.ResponseWriter, key string, val int32) {
|
|
(*w).Write([]byte(fmt.Sprintf(`{"errcode":0, "errmsg":"", "%s":%d}`, key, val)))
|
|
}
|
|
|
|
func GetPostBody(r *http.Request) string {
|
|
body, err := ioutil.ReadAll(r.Body)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(body)
|
|
}
|
|
|
|
func GetRequestRemoteAddr(r *http.Request) string {
|
|
remoteAddr := r.RemoteAddr
|
|
if ip := r.Header.Get("X-Real-Ip"); ip != "" {
|
|
remoteAddr = ip
|
|
} else if ip = r.Header.Get("X-Forwarded-For"); ip != "" {
|
|
remoteAddr = ip
|
|
} else {
|
|
remoteAddr, _, _ = net.SplitHostPort(remoteAddr)
|
|
}
|
|
|
|
if remoteAddr == "::1" {
|
|
remoteAddr = "127.0.0.1"
|
|
}
|
|
|
|
return remoteAddr
|
|
}
|
|
|
|
func ForceCreateDir(dir string) bool {
|
|
os.MkdirAll(dir, os.ModePerm)
|
|
return true
|
|
}
|
|
|
|
func IsNumberType(v interface{}) bool {
|
|
switch reflect.TypeOf(v).Kind() {
|
|
case
|
|
reflect.Int,
|
|
reflect.Int8,
|
|
reflect.Int16,
|
|
reflect.Int32,
|
|
reflect.Int64,
|
|
reflect.Uint8,
|
|
reflect.Uint16,
|
|
reflect.Uint32,
|
|
reflect.Uint64,
|
|
reflect.Float32,
|
|
reflect.Float64:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
func FormatUnixDateTime(sec int64) string {
|
|
strTime := time.Unix(sec, 0).Format("2006-01-02 15:04:05")
|
|
return strTime
|
|
}
|
|
|
|
func FormatUnixDate(sec int64) string {
|
|
strTime := time.Unix(sec, 0).Format("2006-01-02")
|
|
return strTime
|
|
}
|
|
|
|
func FormatUnixDateEx(sec int64) string {
|
|
strTime := time.Unix(sec, 0).Format("20060102")
|
|
return strTime
|
|
}
|