warbot_net.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package warbot_net
  2. import (
  3. "context"
  4. "fmt"
  5. "net/http"
  6. "wartank/pkg/components/safebool"
  7. "wartank/pkg/components/sectionnet/netclient"
  8. "wartank/pkg/types"
  9. "wartank/server/serv_bots/warbot/warbot_net/bot_net_conn"
  10. "wartank/server/serv_bots/warbot/warbot_net/bot_net_login"
  11. )
  12. /*
  13. Веб-клиент для выполнения запросов на сервер
  14. */
  15. // WarBotNet -- веб-клиент для выполнения запросов на веб-сервер
  16. type WarBotNet struct {
  17. bot types.IBot
  18. botNetConn *bot_net_conn.BotNetConn
  19. login *bot_net_login.BotNetLogin
  20. isOnline *safebool.SafeBool
  21. net *netclient.NetClient
  22. ctx context.Context
  23. fnCancel func()
  24. }
  25. // NewWarBotNet -- возвращает новый *NetClient
  26. func NewWarBotNet(bot types.IBot) (*WarBotNet, error) {
  27. fmt.Printf("NewWarBotNet()\n")
  28. if bot == nil {
  29. return nil, fmt.Errorf("NewWarBotNet(): IBot == nil")
  30. }
  31. ctx, fnCancel := context.WithCancel(bot.Ctx())
  32. sf := &WarBotNet{
  33. bot: bot,
  34. botNetConn: bot_net_conn.NewBotNetConn(),
  35. isOnline: safebool.NewSafeBool(),
  36. ctx: ctx,
  37. fnCancel: fnCancel,
  38. }
  39. sf.net = netclient.NewNetClient(sf)
  40. { // Подключаем сетевой логин
  41. var err error
  42. sf.login, err = bot_net_login.NewBotNetLogin(sf)
  43. if err != nil {
  44. return nil, fmt.Errorf("NewWarBotNet(): in create BotNetLogin, err=\n\t%w", err)
  45. }
  46. }
  47. sf.isOnline.Set()
  48. _ = types.IBotNet(sf)
  49. return sf, nil
  50. }
  51. // Bot -- возвращает ссылку на своего бота
  52. func (sf *WarBotNet) Bot() types.IBot {
  53. return sf.bot
  54. }
  55. // Ctx -- контекст сети бота
  56. func (sf *WarBotNet) Ctx() context.Context {
  57. return sf.ctx
  58. }
  59. // CancelBotNet -- отменяет контекст сети бота
  60. func (sf *WarBotNet) CancelBotNet() {
  61. sf.fnCancel()
  62. }
  63. // IsOnline -- возвращает признак нахождения в онлайне
  64. func (sf *WarBotNet) IsOnline() *safebool.SafeBool {
  65. return sf.isOnline
  66. }
  67. // Net -- возвращает исполнитель запросов
  68. func (sf *WarBotNet) Net() types.INetClient {
  69. return sf.net
  70. }
  71. // Conn -- возвращает HTTP-коннект
  72. func (sf *WarBotNet) Conn() *http.Client {
  73. return sf.botNetConn.Client()
  74. }
  75. // Cookie -- возвращает куки для HTTP-коннект
  76. func (sf *WarBotNet) Cookie() types.IBotCookie {
  77. return sf.botNetConn.Cookie()
  78. }