bot_net.go 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package bot_net
  2. import (
  3. "context"
  4. . "wartank/app/lev0/types"
  5. "wartank/app/lev3/bot/bot_net/bot_http_conn"
  6. "wartank/app/lev3/bot/bot_net/bot_net_login"
  7. "wartank/app/lev3/bot/bot_net/http_worker"
  8. "wartank/pkg/kernel/kernel_log"
  9. . "wartank/pkg/kernel/kernel_types"
  10. "wartank/pkg/kernel/safe_bool"
  11. )
  12. /*
  13. Веб-клиент для выполнения запросов на сервер
  14. */
  15. // БотСеть -- веб-клиент для выполнения запросов на веб-сервер
  16. type БотСеть struct {
  17. бот ИБот
  18. соедХттп *bot_http_conn.БотХттпСоед
  19. логин *bot_net_login.БотСетьЛогин
  20. еслиОнлайн *safe_bool.БезопБул
  21. вебВоркер ИХттпВоркер
  22. ctx context.Context
  23. фнОтмена func()
  24. лог ИЯдроЛог
  25. }
  26. // НовБотСеть -- возвращает новый коннект к сети бота
  27. func НовБотСеть(конт ИБотКонтекст) *БотСеть {
  28. лог := kernel_log.НовЛоггер("ВарБотСеть")
  29. лог.Инфо("НовБотСеть()\n")
  30. бот := конт.Получ("юот").(ИБот)
  31. лог.Инфо("НовБотСеть(): имя=%q\n", бот.Имя())
  32. ctx, фнОтмена := context.WithCancel(бот.Контекст())
  33. сам := &БотСеть{
  34. бот: бот,
  35. соедХттп: bot_http_conn.НовБотХттпСоед(),
  36. еслиОнлайн: safe_bool.НовБезопБул(),
  37. ctx: ctx,
  38. фнОтмена: фнОтмена,
  39. лог: лог,
  40. }
  41. конт.Уст("хттпКлиент", сам.соедХттп.ХттпКлиент())
  42. сам.вебВоркер = http_worker.НовХттпВоркер(конт)
  43. // Подключаем сетевой логин
  44. конт.Уст("ботСеть", сам)
  45. сам.логин = bot_net_login.НовБотСетьЛогин(конт)
  46. сам.еслиОнлайн.Уст()
  47. _ = ИБотСеть(сам)
  48. return сам
  49. }
  50. // Бот -- возвращает ссылку на своего бота
  51. func (сам *БотСеть) Бот() ИБот {
  52. return сам.бот
  53. }
  54. // Контекст -- контекст сети бота
  55. func (сам *БотСеть) Контекст() context.Context {
  56. return сам.ctx
  57. }
  58. // Отмена -- отменяет контекст сети бота
  59. func (сам *БотСеть) Отмена() {
  60. сам.фнОтмена()
  61. }
  62. // ЕслиОнлайн -- возвращает признак нахождения в онлайне
  63. func (сам *БотСеть) ЕслиОнлайн() *safe_bool.БезопБул {
  64. return сам.еслиОнлайн
  65. }
  66. // ВебВоркер -- возвращает веб-воркер бота
  67. func (сам *БотСеть) ВебВоркер() ИХттпВоркер {
  68. return сам.вебВоркер
  69. }
  70. // Куки -- возвращает куки для HTTP-коннект
  71. func (сам *БотСеть) Куки() ИБотКуки {
  72. return сам.соедХттп.Куки()
  73. }