package main import ( "errors" "git.ali33.ru/fcg-xvii/go-tools/json" ) func messageError(text string) json.Map { return json.Map{ "error": true, "text": text, } } func MessageFromMap(jm json.Map, cl *WSClient) *Message { res := &Message{ client: cl, id: jm.Int("id", -1), data: jm.Map("data", json.Map{}), } return res } type Message struct { client *WSClient id int64 data json.Map } func (s *Message) Client() *WSClient { return s.client } func (s *Message) Data() json.Map { return s.data } func (s *Message) IsResponsable() bool { return s.id >= 0 } func (s *Message) SendResponse(data json.Map) error { if !s.IsResponsable() { return errors.New("response is not supported") } m := json.Map{ "is_response": true, "id": s.id, "data": data, } return s.client.SendData(m) }