add init world data

This commit is contained in:
lbenedar
2026-04-08 18:19:20 +03:00
parent e5deb5d76d
commit 468e027418
9 changed files with 464 additions and 74 deletions

View File

@@ -21,12 +21,11 @@ type Foundry struct {
isAuth bool
logger *slog.Logger
config requests.Config
ws *webSocketUtil
}
func NewFoundry() *Foundry {
foundry := &Foundry{config: requests.Config{SessionID: ""}, isAuth: false, ws: NewWebSocketUtil()}
foundry := &Foundry{isAuth: false, ws: NewWebSocketUtil()}
// err := foundry.config.GetSessionId()
// if err != nil {
@@ -51,14 +50,14 @@ func (foundry *Foundry) checkAuthRespAnswer(r io.Reader, respLength int) error {
}
func (foundry *Foundry) Authenticate() error {
if foundry.config.SessionID == "" {
err := foundry.config.GetSessionId()
if foundry.ws.config.SessionID == "" {
err := foundry.ws.config.GetSessionId()
if err != nil {
return err
}
}
resp, err := foundry.config.PostAuthenticationData()
resp, err := foundry.ws.config.PostAuthenticationData()
if err != nil {
return err
}
@@ -73,9 +72,9 @@ func (foundry *Foundry) Authenticate() error {
}
func (foundry *Foundry) StartListen() error {
foundry.ws.channels = *types.InitWsChannels()
foundry.ws.readChan = *types.InitWsChannels()
wsChannels := &foundry.ws.channels
wsChannels := &foundry.ws.readChan
defer wsChannels.Close()
go foundry.ListenAndServeWS()
@@ -115,19 +114,19 @@ func (foundry *Foundry) ConnectToFoundry() error {
if foundry == nil {
return ErrorFoundryNotInit
}
ok, err := (*foundry).config.GetSessionToken()
ok, err := (*foundry).ws.config.GetSessionToken()
if err != nil {
return err
}
if (*foundry).config.Password != "" && !ok {
if (*foundry).ws.config.Password != "" && !ok {
err := (*foundry).Authenticate()
if err != nil {
return err
}
}
foundry.logger.Info("Successefully connected to Foundry", "host", foundry.config.Host)
foundry.logger.Info("Successefully connected to Foundry", "host", foundry.ws.config.Host)
return nil
}
@@ -137,14 +136,14 @@ func (foundry *Foundry) ConnectToWebSocket() error {
}
query := url.Values{}
query.Add("session", foundry.config.SessionID)
query.Add("session", foundry.ws.config.SessionID)
query.Add("EIO", "4")
query.Add("transport", "websocket")
u := url.URL{Scheme: "ws", Host: foundry.config.Host, Path: fmt.Sprintf("%s/", requests.SocketPath), RawQuery: query.Encode()}
u := url.URL{Scheme: "ws", Host: foundry.ws.config.Host, Path: fmt.Sprintf("%s/", requests.SocketPath), RawQuery: query.Encode()}
wsHeader := http.Header{}
wsHeader.Set("Cookie", fmt.Sprintf("session=%s", foundry.config.SessionID))
wsHeader.Set("Cookie", fmt.Sprintf("session=%s", foundry.ws.config.SessionID))
wsConn, _, err := websocket.DefaultDialer.Dial(u.String(), wsHeader)
if err != nil {
@@ -173,15 +172,15 @@ func (foundry *Foundry) HandleWSRequest(msgType string) ([]byte, error) {
}
func (foundry *Foundry) HasSessionId() bool {
return foundry.config.SessionID != ""
return foundry.ws.config.SessionID != ""
}
func (foundry *Foundry) SetUpSessionId() error {
return foundry.config.GetSessionId()
return foundry.ws.config.GetSessionId()
}
func (foundry *Foundry) SetConfig(config *requests.Config) {
foundry.config = *config
foundry.ws.config = *config
}
func (foundry *Foundry) SetLogger(slogger *slog.Logger) {