package warbot_net import ( "context" . "wartank/app/lev0/types" "wartank/app/lev2/bot/warbot_net/bot_http_conn" "wartank/app/lev2/bot/warbot_net/bot_net_login" "wartank/pkg/components/arena_net/http_worker" "wartank/pkg/kernel/kernel_log" . "wartank/pkg/kernel/kernel_types" "wartank/pkg/kernel/safe_bool" ) /* Веб-клиент для выполнения запросов на сервер */ // ВарБотСеть -- веб-клиент для выполнения запросов на веб-сервер type ВарБотСеть struct { бот ИБот соедХттп *bot_http_conn.БотХттпСоед логин *bot_net_login.БотСетьЛогин еслиОнлайн *safe_bool.БезопБул вебВоркер ИХттпВоркер ctx context.Context фнОтмена func() лог ИЯдроЛог } // НовВарБотСеть -- возвращает новый коннект к сети бота func НовВарБотСеть(конт ИБотКонтекст) *ВарБотСеть { лог := kernel_log.НовЛоггер("ВарБотСеть") лог.Инфо("НовВарБотСеть()\n") бот := конт.Получ("юот").(ИБот) лог.Инфо("НовВарБотСеть(): имя=%q\n", бот.Имя()) ctx, фнОтмена := context.WithCancel(бот.Контекст()) сам := &ВарБотСеть{ бот: бот, соедХттп: bot_http_conn.НовБотХттпСоед(), еслиОнлайн: safe_bool.НовБезопБул(), ctx: ctx, фнОтмена: фнОтмена, лог: лог, } конт.Уст("хттпКлиент", сам.соедХттп.ХттпКлиент()) сам.вебВоркер = http_worker.НовХттпВоркер(конт) // Подключаем сетевой логин конт.Уст("ботСеть", сам) сам.логин = bot_net_login.НовБотСетьЛогин(конт) сам.еслиОнлайн.Уст() _ = ИБотСеть(сам) return сам } // Бот -- возвращает ссылку на своего бота func (сам *ВарБотСеть) Бот() ИБот { return сам.бот } // Контекст -- контекст сети бота func (сам *ВарБотСеть) Контекст() context.Context { return сам.ctx } // Отмена -- отменяет контекст сети бота func (сам *ВарБотСеть) Отмена() { сам.фнОтмена() } // ЕслиОнлайн -- возвращает признак нахождения в онлайне func (сам *ВарБотСеть) ЕслиОнлайн() *safe_bool.БезопБул { return сам.еслиОнлайн } // ВебВоркер -- возвращает веб-воркер бота func (сам *ВарБотСеть) ВебВоркер() ИХттпВоркер { return сам.вебВоркер } // Куки -- возвращает куки для HTTP-коннект func (сам *ВарБотСеть) Куки() ИБотКуки { return сам.соедХттп.Куки() }