| 105 | } |
| 106 | |
| 107 | func (p *PsyNet) establishSocket(url string, playerID PlayerID, psyToken string, sessionID string) (*PsyNetRPC, error) { |
| 108 | p.logger.Debug("establishing websocket connection", slog.String("url", url)) |
| 109 | |
| 110 | dialer := websocket.Dialer{} |
| 111 | conn, _, err := dialer.Dial(url, http.Header{ |
| 112 | "PsyBuildID": []string{p.buildID}, |
| 113 | "User-Agent": []string{fmt.Sprintf("RL Win/%s gzip", p.gameVersion)}, |
| 114 | "PsyEnvironment": []string{"Prod"}, |
| 115 | "PsyToken": []string{psyToken}, |
| 116 | "PsySessionID": []string{sessionID}, |
| 117 | }) |
| 118 | if err != nil { |
| 119 | return nil, fmt.Errorf("failed to dial websocket: %w", err) |
| 120 | } |
| 121 | |
| 122 | return newPsyNetRPC(conn, playerID, p.requestID, p.logger), nil |
| 123 | } |
| 124 | |
| 125 | func (p *PsyNet) postJSON(path []string, params interface{}, result interface{}) error { |
| 126 | url := fmt.Sprintf("%s/%s", baseURL, strings.Join(path, "/")) |