package bot_cookie

import (
	"fmt"
	"net/http"
	"sync"
)

/*
	Предоставляет разделяемый объект кукисов для соединения с игровым сервером
*/

// BotCookie -- кукисы для игрового сервера, ничего не требует для своей работы
type BotCookie struct {
	cookie []*http.Cookie
	block  sync.RWMutex
}

// NewBotCookie -- возвращает новый *NetCookie
func NewBotCookie() *BotCookie {
	return &BotCookie{}
}

// Set -- устанавливает кукисы
func (sf *BotCookie) Set(cook []*http.Cookie) error {
	sf.block.Lock()
	defer sf.block.Unlock()
	if cook == nil {
		return fmt.Errorf("NetCookie.Set(): cookie is nil")
	}
	sf.cookie = cook
	cookie := &http.Cookie{
		Name:  "JSESSIONID",
		Value: sf.cookie[0].Value,
		Raw:   "JSESSIONID=" + sf.cookie[0].Value + "; _ym_uid=1642083867571238834; _ym_d=1642083867; _ym_isad=2; _ym_visorc=w",
	}
	cookie1 := sf.cookie[:0]
	sf.cookie = cookie1
	sf.cookie = append(sf.cookie, cookie)

	cookie = &http.Cookie{
		Name:  "_ym_d",
		Value: "1642083867",
	}
	sf.cookie = append(sf.cookie, cookie)

	cookie = &http.Cookie{
		Name:  "_ym_isad",
		Value: "2",
	}
	sf.cookie = append(sf.cookie, cookie)

	cookie = &http.Cookie{
		Name:  "_ym_visorc",
		Value: "w",
	}
	sf.cookie = append(sf.cookie, cookie)
	return nil
}

// Get -- возвращает хранимые кукисы
func (sf *BotCookie) Get() []*http.Cookie {
	return sf.cookie
}
