| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // package arena_net -- сетевая арена
- package arena_net
- import (
- "fmt"
- "strings"
- "sync"
- "wartank/pkg/components/kernel/logger"
- "wartank/pkg/types"
- )
- // АренаСеть -- базовый тип для сетевых арен
- type АренаСеть struct {
- types.ИБотСеть
- клиент types.ИХттпВоркер
- сцена types.ИСценаСтр
- стрУрл string
- блок sync.Mutex
- лог types.ИЛоггер
- }
- // НовАренаСеть -- возвращает новый *АренаСеть
- func НовАренаСеть(сцена types.ИСценаСтр, стрУрл string) *АренаСеть {
- лог := logger.НовЛоггер("АренаСеть")
- лог.Инфо("НовАренаСеть(): strUrl=%q\n", стрУрл)
- лог.Проверить(сцена != nil, "НовАренаСеть(): ИСценаСтр == nil")
- лог.Проверить(стрУрл != "", "НовАренаСеть(): стрУрл пустой\n")
- сам := &АренаСеть{
- ИБотСеть: сцена.Бот().Сеть(),
- сцена: сцена,
- стрУрл: стрУрл,
- клиент: сцена.Бот().Сеть().ВебВоркер(),
- лог: лог,
- }
- _ = types.ИАренаСеть(сам)
- return сам
- }
- // Обновить -- обновляет список строк
- func (сам *АренаСеть) Обновить() {
- сам.блок.Lock()
- defer сам.блок.Unlock()
- // FIXME: попытка разобраться, что за фигня творится
- // time.Sleep(time.Millisecond * 500)
- сам.лог.Отладка("Обновить(): бот=%s\tсцена=%v\n", сам.сцена.Бот().Имя(), сам.сцена.Имя())
- lstString, ош := сам.клиент.Получ(сам.стрУрл)
- сам.лог.Проверить(ош == nil, "Обновить(): при выполнении запроса, ош=\n\t%v\n", ош)
- if ош = сам.сцена.СтрОбновить(lstString); ош != nil {
- сам.лог.Ошибка("Обновить(): при обновлении строк сцены, ош=\n\t%v\n", ош)
- }
- }
- // Get -- выполняет GET-запрос по указанному URL
- func (сам *АренаСеть) Get(strLink string) (lstString []string, err error) {
- сам.блок.Lock()
- defer сам.блок.Unlock()
- // log._rintf("INFO АренаСеть.Get(): link=%v\n", сам.strUrl)
- if !strings.Contains(strLink, сам.стрУрл) {
- return nil, fmt.Errorf("АренаСеть.Get(): strLink(%v) не содержит strUrl(%v)", strLink, сам.стрУрл)
- }
- lstString, err = сам.клиент.Получ(strLink)
- if err != nil {
- return nil, fmt.Errorf("АренаСеть.Get(): err=\n\t%v", err)
- }
- return lstString, nil
- }
|