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)
}
