60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package requests
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
ErrorSidWrongFormat = errors.New("Session id wrong format")
|
|
ErrorSidNotFound = errors.New("Session id didn't find in response header")
|
|
)
|
|
|
|
const (
|
|
AuthPath = "/auth"
|
|
LicensePath = "/license"
|
|
JoinPath = "/join"
|
|
PlayersPath = "/players"
|
|
SetupPath = "/setup"
|
|
UpdatePath = "/update"
|
|
|
|
SocketPath = "/socket.io"
|
|
)
|
|
|
|
var WsTypeData = map[string]string{
|
|
AuthPath: "getAuthData",
|
|
LicensePath: "getAuthData",
|
|
JoinPath: "getJoinData",
|
|
PlayersPath: "getPlayersData",
|
|
SetupPath: "getSetupData",
|
|
UpdatePath: "getUpdateData",
|
|
}
|
|
|
|
type Config struct {
|
|
Host string
|
|
Password string
|
|
SessionID string
|
|
}
|
|
|
|
func (conf *Config) SetSessionTokenFromHeader(resp http.Header) (bool, error) {
|
|
setCookieHeader := resp.Get("Set-Cookie")
|
|
if setCookieHeader == "" {
|
|
return false, nil
|
|
}
|
|
|
|
for value := range strings.SplitSeq(setCookieHeader, ";") {
|
|
if strings.Contains(value, "session") {
|
|
sessionCookie := strings.Split(value, "=")
|
|
if len(sessionCookie) != 2 {
|
|
return false, ErrorSidWrongFormat
|
|
}
|
|
|
|
conf.SessionID = sessionCookie[1]
|
|
return true, nil
|
|
}
|
|
}
|
|
|
|
return false, nil
|
|
}
|