bot_net.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package bot_net
  2. import (
  3. . "gitp78su.ipnodns.ru/svi/kern"
  4. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  5. . "wartank/app/lev0/types"
  6. "wartank/app/lev3/bot/bot_net/bot_http_conn"
  7. "wartank/app/lev3/bot/bot_net/bot_net_login"
  8. "wartank/app/lev3/bot/bot_net/http_worker"
  9. )
  10. /*
  11. Веб-клиент для выполнения запросов на сервер
  12. */
  13. // БотСеть -- веб-клиент для выполнения запросов на веб-сервер
  14. type БотСеть struct {
  15. бот ИБот
  16. соедХттп *bot_http_conn.БотХттпСоед
  17. логин *bot_net_login.БотСетьЛогин
  18. еслиОнлайн ISafeBool
  19. вебВоркер ИХттпВоркер
  20. ctx ILocalCtx
  21. лог ILogBuf
  22. }
  23. // НовБотСеть -- возвращает новый коннект к сети бота
  24. func НовБотСеть(конт ILocalCtx) *БотСеть {
  25. лог := NewLogBuf()
  26. лог.Info("НовБотСеть()\n")
  27. бот := конт.Get("бот").Val().(ИБот)
  28. лог.Info("НовБотСеть(): имя=%q\n", бот.Имя())
  29. ctx := NewLocalCtx(конт.Ctx())
  30. сам := &БотСеть{
  31. бот: бот,
  32. соедХттп: bot_http_conn.НовБотХттпСоед(),
  33. еслиОнлайн: NewSafeBool(),
  34. ctx: ctx,
  35. лог: лог,
  36. }
  37. конт.Set("хттпКлиент", сам.соедХттп.ХттпКлиент(), "HTTP-клиент для запросов")
  38. конт.Set("ботСеть", сам, "Сеть бота")
  39. сам.вебВоркер = http_worker.НовХттпВоркер(конт)
  40. // Подключаем сетевой логин
  41. сам.логин = bot_net_login.НовБотСетьЛогин(конт)
  42. сам.еслиОнлайн.Set()
  43. _ = ИБотСеть(сам)
  44. return сам
  45. }
  46. // Бот -- возвращает ссылку на своего бота
  47. func (сам *БотСеть) Бот() ИБот {
  48. return сам.бот
  49. }
  50. // Контекст -- контекст сети бота
  51. func (сам *БотСеть) Контекст() ILocalCtx {
  52. return сам.ctx
  53. }
  54. // ЕслиОнлайн -- возвращает признак нахождения в онлайне
  55. func (сам *БотСеть) ЕслиОнлайн() ISafeBool {
  56. return сам.еслиОнлайн
  57. }
  58. // ВебВоркер -- возвращает веб-воркер бота
  59. func (сам *БотСеть) ВебВоркер() ИХттпВоркер {
  60. return сам.вебВоркер
  61. }
  62. // Куки -- возвращает куки для HTTP-коннект
  63. func (сам *БотСеть) Куки() ИБотКуки {
  64. return сам.соедХттп.Куки()
  65. }