forked from golang/hotime
158 lines
4.0 KiB
Go
158 lines
4.0 KiB
Go
package main
|
|
|
|
import (
|
|
"../../hotime"
|
|
"../../hotime/common"
|
|
"./admin"
|
|
"errors"
|
|
"fmt"
|
|
"golang.org/x/net/websocket"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
|
|
appIns := hotime.Init("config/config.json")
|
|
//RESTfull接口适配
|
|
appIns.SetConnectListener(func(context *hotime.Context) bool {
|
|
|
|
//文件上传接口
|
|
if len(context.RouterString) == 1 && context.RouterString[0] == "file" && context.Req.Method == "POST" {
|
|
|
|
//读取网络文件
|
|
fi, fheader, err := context.Req.FormFile("file")
|
|
if err != nil {
|
|
context.Display(3, err)
|
|
return false
|
|
|
|
}
|
|
filePath := context.Config.GetString("filePath")
|
|
if filePath == "" {
|
|
filePath = "file/2006/01/02/"
|
|
}
|
|
|
|
path := time.Now().Format(filePath)
|
|
e := os.MkdirAll(context.Config.GetString("tpt")+"/"+path, os.ModeDir)
|
|
if e != nil {
|
|
context.Display(3, e)
|
|
return false
|
|
}
|
|
filePath = path + common.Md5(common.ObjToStr(common.RandX(100000, 9999999))) + fheader.Filename[strings.LastIndex(fheader.Filename, "."):]
|
|
newFile, e := os.Create(context.Config.GetString("tpt") + "/" + filePath)
|
|
|
|
if e != nil {
|
|
context.Display(3, e)
|
|
return false
|
|
}
|
|
|
|
_, e = io.Copy(newFile, fi)
|
|
|
|
if e != nil {
|
|
context.Display(3, e)
|
|
return false
|
|
}
|
|
|
|
context.Display(0, filePath)
|
|
return false
|
|
}
|
|
|
|
if len(context.RouterString) < 2 || len(context.RouterString) > 3 ||
|
|
!(context.Router[context.RouterString[0]] != nil &&
|
|
context.Router[context.RouterString[0]][context.RouterString[1]] != nil) {
|
|
return true
|
|
}
|
|
//排除无效操作
|
|
if len(context.RouterString) == 2 &&
|
|
context.Req.Method != "GET" &&
|
|
context.Req.Method != "POST" {
|
|
return true
|
|
}
|
|
//列表检索
|
|
if len(context.RouterString) == 2 &&
|
|
context.Req.Method == "GET" {
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["search"](context)
|
|
}
|
|
//新建
|
|
if len(context.RouterString) == 2 &&
|
|
context.Req.Method == "POST" {
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["add"](context)
|
|
}
|
|
//查询单条
|
|
if len(context.RouterString) == 3 &&
|
|
context.Req.Method == "GET" {
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["info"](context)
|
|
}
|
|
//更新
|
|
if len(context.RouterString) == 3 &&
|
|
context.Req.Method == "PUT" {
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["update"](context)
|
|
}
|
|
//移除
|
|
if len(context.RouterString) == 3 &&
|
|
context.Req.Method == "DELETE" {
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["remove"](context)
|
|
}
|
|
context.View()
|
|
return false
|
|
})
|
|
|
|
//makeCode := code.MakeCode{}
|
|
//fmt.Println(common.ObjToStr(makeCode.Db2JSON("admin","test",appIns.Db)))
|
|
|
|
appIns.Run(hotime.Router{
|
|
"admin": admin.Project,
|
|
"app": hotime.Proj{
|
|
"index": hotime.Ctr{
|
|
"test": func(this *hotime.Context) {
|
|
|
|
data := this.Db.Get("cached", "*")
|
|
fmt.Println(data)
|
|
fmt.Println(this.Session("test").ToCeilInt())
|
|
this.Session("test1", 98984984)
|
|
fmt.Println(this.Session("test1").Data)
|
|
this.Error.SetError(errors.New("dasdasdas"))
|
|
//fmt.Println(this.Db.GetTag())
|
|
//this.Application.Log.Error("dasdasdas")
|
|
//this.Log.Error("dadasdasd")
|
|
//x:=this.Db.Action(func(db hotime.HoTimeDB) bool {
|
|
//
|
|
// db.Insert("user",hotime.Map{"unickname":"dasdas"})
|
|
//
|
|
// return true
|
|
//})
|
|
//hotime.LogError("dasdasdasdasdas")
|
|
this.Display(5, "dsadas")
|
|
},
|
|
"websocket": func(this *hotime.Context) {
|
|
hdler := websocket.Handler(func(ws *websocket.Conn) {
|
|
for true {
|
|
msg := make([]byte, 5120)
|
|
n, err := ws.Read(msg)
|
|
go func() {
|
|
time.Sleep(time.Second * 5)
|
|
ws.Write([]byte("dsadasdasgregergrerge"))
|
|
|
|
}()
|
|
if err != nil {
|
|
return
|
|
}
|
|
fmt.Printf("Receive: %s\n", msg[:n])
|
|
|
|
send_msg := "[" + string(msg[:n]) + "]"
|
|
m, err := ws.Write([]byte(send_msg))
|
|
if err != nil {
|
|
return
|
|
}
|
|
fmt.Printf("Send: %s\n", msg[:m])
|
|
}
|
|
})
|
|
hdler.ServeHTTP(this.Resp, this.Req)
|
|
},
|
|
},
|
|
},
|
|
})
|
|
}
|