package controller

import (
	"encoding/json"
	"fmt"

	"github.com/labstack/echo/v4"
	"golang.org/x/net/websocket"
)

type MacData struct {
	Mac string `json:"mac"`
}
type DelData struct {
	ID int `json:"id"`
}
type TooLTT struct {
	Method string      `json:"method"`
	Data   interface{} `json:"data"`
	Uuid   string      `json:"uuid"`
}

/*
ws 分发
*/
func Hello(c echo.Context) error {

	websocket.Handler(func(ws *websocket.Conn) {
		defer ws.Close()
		for {
			msg := ""
			err := websocket.Message.Receive(ws, &msg)
			if err != nil {
				c.Logger().Error(err)
				break
			}
			//暂时不解析的json
			var json_data json.RawMessage
			wsValue := TooLTT{
				Data: &json_data,
			}
			json.Unmarshal([]byte(msg), &wsValue)
			if err := json.Unmarshal([]byte(msg), &wsValue); err != nil {
				fmt.Println(err)
			}
			switch wsValue.Method {
			case "start":
				var startdata MacData
				if err := json.Unmarshal(json_data, &startdata); err != nil {
					c.Logger().Error(err)
					return
				}
				Send_start(startdata.Mac, &ws, wsValue.Uuid)

			case "getall":
				Getall(&ws, wsValue.Uuid)
			case "del":
				var DelData DelData
				if err := json.Unmarshal(json_data, &DelData); err != nil {
					c.Logger().Error(err)
					return
				}
				Del(&ws, wsValue.Uuid, DelData.ID)
			default:
				c.Logger().Error("没有找到方法")

			}
			fmt.Printf("请求方法:%s uuid:%s \n", wsValue.Method, wsValue.Uuid)

		}
	}).ServeHTTP(c.Response(), c.Request())
	return nil
}
