85 lines
1.5 KiB
Go
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
|
|
}
|
|
}
|