package warbot_net import ( "context" "fmt" "log" "net/http" "wartank/pkg/components/safebool" "wartank/pkg/components/sectionnet/netclient" "wartank/pkg/types" "wartank/server/serv_bots/warbot/warbot_net/bot_net_conn" "wartank/server/serv_bots/warbot/warbot_net/bot_net_login" ) /* Веб-клиент для выполнения запросов на сервер */ // WarBotNet -- веб-клиент для выполнения запросов на веб-сервер type WarBotNet struct { bot types.ИБот botNetConn *bot_net_conn.BotNetConn login *bot_net_login.BotNetLogin isOnline *safebool.SafeBool net *netclient.NetClient ctx context.Context fnCancel func() } // NewWarBotNet -- возвращает новый *NetClient func NewWarBotNet(bot types.ИБот) (*WarBotNet, error) { if bot == nil { return nil, fmt.Errorf("NewWarBotNet(): IBot == nil") } log.Printf("NewWarBotNet(): name=%q\n", bot.Имя()) ctx, fnCancel := context.WithCancel(bot.Кнт()) sf := &WarBotNet{ bot: bot, botNetConn: bot_net_conn.NewBotNetConn(), isOnline: safebool.NewSafeBool(), ctx: ctx, fnCancel: fnCancel, } sf.net = netclient.NewNetClient(sf) { // Подключаем сетевой логин var err error sf.login, err = bot_net_login.NewBotNetLogin(sf) if err != nil { return nil, fmt.Errorf("NewWarBotNet(): in create BotNetLogin, err=\n\t%w", err) } } sf.isOnline.Уст() _ = types.ИБотСеть(sf) return sf, nil } // Бот -- возвращает ссылку на своего бота func (sf *WarBotNet) Бот() types.ИБот { return sf.bot } // Кнт -- контекст сети бота func (sf *WarBotNet) Кнт() context.Context { return sf.ctx } // Отмена -- отменяет контекст сети бота func (sf *WarBotNet) Отмена() { sf.fnCancel() } // ЕслиОнлайн -- возвращает признак нахождения в онлайне func (sf *WarBotNet) ЕслиОнлайн() *safebool.SafeBool { return sf.isOnline } // КлиентСеть -- возвращает исполнитель запросов func (sf *WarBotNet) КлиентСеть() types.INetClient { return sf.net } // Коннект -- возвращает HTTP-коннект func (sf *WarBotNet) Коннект() *http.Client { return sf.botNetConn.Client() } // Куки -- возвращает куки для HTTP-коннект func (sf *WarBotNet) Куки() types.ИБотКуки { return sf.botNetConn.Cookie() }