(client httpclient.AuroraHttpClient, secret *tokens.Secret, state *ChatClientState)
| 855 | } |
| 856 | |
| 857 | func getChatWebsocketURLWithState(client httpclient.AuroraHttpClient, secret *tokens.Secret, state *ChatClientState) (string, error) { |
| 858 | apiURL, targetPath := conversationURL(secret, "/celsius/ws/user") |
| 859 | header := conversationHeadersWithState(secret, nil, "*/*", targetPath, "", "", state) |
| 860 | response, err := client.Request(http.MethodGet, apiURL, header, nil, nil) |
| 861 | if err != nil { |
| 862 | return "", err |
| 863 | } |
| 864 | defer response.Body.Close() |
| 865 | body, err := io.ReadAll(response.Body) |
| 866 | if err != nil { |
| 867 | return "", err |
| 868 | } |
| 869 | if response.StatusCode != http.StatusOK { |
| 870 | return "", fmt.Errorf("celsius ws user failed: %s", string(body)) |
| 871 | } |
| 872 | var result chatWebsocketURLResponse |
| 873 | if err := json.Unmarshal(body, &result); err != nil { |
| 874 | return "", err |
| 875 | } |
| 876 | if result.WebsocketURL == "" { |
| 877 | return "", fmt.Errorf("celsius ws user missing websocket_url: %s", string(body)) |
| 878 | } |
| 879 | return result.WebsocketURL, nil |
| 880 | } |
| 881 | |
| 882 | func DialChatWebsocket(client httpclient.AuroraHttpClient, secret *tokens.Secret) (*websocket.Conn, error) { |
| 883 | return DialChatWebsocketWithState(client, secret, nil) |
no test coverage detected