package hotime

import (
	. "./cache"
	. "./common"
	. "./db"
	"encoding/json"
	"net/http"
)

type Context struct {
	*Application
	Resp         http.ResponseWriter
	Req          *http.Request
	RouterString []string
	Config       Map
	Db           *HoTimeDB
	RespData     Map
	CacheIns
	SessionIns
	DataSize   int
	HandlerStr string //复写请求url
}

// Mtd 唯一标志
func (that *Context) Mtd(router [3]string) Map {
	that.Application.Router[router[0]][router[1]][router[2]](that)
	d := that.RespData
	that.RespData = nil
	return d
}

//打印
func (that *Context) Display(statu int, data interface{}) {

	resp := Map{"status": statu}
	if statu != 0 {
		temp := Map{}

		tpe := that.Config.GetMap("error").GetString(ObjToStr(statu))
		if tpe == "" {
			//logFmt(errors.New("找不到对应的错误码"), 2, LOG_WARN)
		}

		temp["type"] = tpe
		temp["msg"] = data
		resp["result"] = temp
		//兼容android等需要json转对象的服务
		resp["error"] = temp
	} else {
		resp["result"] = data
	}

	that.RespData = resp

	//that.Data=d;
}

func (that *Context) View() {

	if that.RespData == nil {
		return
	}
	d, err := json.Marshal(that.RespData)
	if err != nil {
		return
	}
	that.DataSize = len(d)
	that.RespData = nil
	that.Resp.Write(d)
	return
}
