package warbot_net import ( "fmt" "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 { server types.IServer bot types.IServBot botNetConn *bot_net_conn.BotNetConn login *bot_net_login.BotNetLogin isOnline *safebool.SafeBool net *netclient.NetClient } // NewWarBotNet -- возвращает новый *NetClient func NewWarBotNet(server types.IServer, bot types.IServBot) (gc *WarBotNet, err error) { fmt.Printf("NewWarBotNet()\n") { // Предусловия if server == nil { return nil, fmt.Errorf("NewWarBotNet(): IServer == nil") } if bot == nil { return nil, fmt.Errorf("NewWarBotNet(): IServBot == nil") } } sf := &WarBotNet{ server: server, bot: bot, botNetConn: bot_net_conn.NewBotNetConn(), isOnline: safebool.NewSafeBool(), } return sf, nil } // Login -- пытается законнектиться к серверу func (sf *WarBotNet) Login() error { var err error { // Подключаем сетевой логин sf.login, err = bot_net_login.NewBotNetLogin(sf.bot) if err != nil { return fmt.Errorf("WarBotNet.Login(): in create NetLogin, err=\n\t%w", err) } } if err = sf.login.Connect(); err != nil { return fmt.Errorf("WarBotNet.Login(): in login connect, err=\n\t%w", err) } sf.isOnline.Set() sf.net = netclient.NewNetClient(sf.server, sf.bot) return nil } // IsOnline -- возвращает признак нахождения в онлайне func (sf *WarBotNet) IsOnline() *safebool.SafeBool { return sf.isOnline } // Net -- возвращает исполнитель запросов func (sf *WarBotNet) Net() types.INetClient { return sf.net } // Conn -- возвращает HTTP-коннект func (sf *WarBotNet) Conn() *http.Client { return sf.botNetConn.Client() } // Cookie -- возвращает куки для HTTP-коннект func (sf *WarBotNet) Cookie() types.IBotCookie { return sf.botNetConn.Cookie() }