q5/sysutils.go
aozhiwei 88b284f7de 1
2020-09-10 11:24:57 +08:00

85 lines
1.5 KiB
Go

package q5
import "os"
import "net"
import "net/http"
import "time"
import "reflect"
func GetDaySeconds(seconds int64) int64 {
return 0
}
func GetTickCount() int64 {
return time.Now().UnixNano() / 1e6
}
func MkInt64(lo32 int32, hi32 int32) int64 {
return int64(lo32) + (int64(hi32) << 32)
}
func Request(r *http.Request, name string) *XValue {
if r.Form == nil {
r.ParseForm()
}
v := &XValue{}
if vs, ok := r.Form[name]; ok {
if len(vs) > 0 {
v.SetString(vs[0])
} else {
v.SetString("")
}
}
return v
}
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 TraverseArray(arrayPtr interface{}, callback func(data interface{})) {
array := reflect.ValueOf(arrayPtr).Elem()
for i := 0; i < array.Len(); i++ {
val := array.Index(i).Addr().Interface()
callback(val)
}
}
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
}
}