message.go 849 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "errors"
  4. "git.ali33.ru/fcg-xvii/go-tools/json"
  5. )
  6. func messageError(text string) json.Map {
  7. return json.Map{
  8. "error": true,
  9. "text": text,
  10. }
  11. }
  12. func MessageFromMap(jm json.Map, cl *WSClient) *Message {
  13. res := &Message{
  14. client: cl,
  15. id: jm.Int("id", -1),
  16. data: jm.Map("data", json.Map{}),
  17. }
  18. return res
  19. }
  20. type Message struct {
  21. client *WSClient
  22. id int64
  23. data json.Map
  24. }
  25. func (s *Message) Client() *WSClient {
  26. return s.client
  27. }
  28. func (s *Message) Data() json.Map {
  29. return s.data
  30. }
  31. func (s *Message) IsResponsable() bool {
  32. return s.id >= 0
  33. }
  34. func (s *Message) SendResponse(data json.Map) error {
  35. if !s.IsResponsable() {
  36. return errors.New("response is not supported")
  37. }
  38. m := json.Map{
  39. "is_response": true,
  40. "id": s.id,
  41. "data": data,
  42. }
  43. return s.client.SendData(m)
  44. }