fix(provider/wbstream): update API endpoints and WebSocket URL

- Switched getToken endpoint to /api-room-manager/v2/room/%s/connection-details
- Updated WebSocket URL to wss://rtc-el-01.wb.ru
- Updated Python PoC scripts to match new endpoints
This commit is contained in:
zarazaex69
2026-05-12 21:05:12 +03:00
parent c74d1717bb
commit 922c326533
6 changed files with 19 additions and 20 deletions

View File

@@ -5,7 +5,7 @@ import requests
from livekit import rtc
API_BASE = "https://stream.wb.ru"
WS_URL = "wss://wbstream01-el.wb.ru:7880"
WS_URL = "wss://rtc-el-01.wb.ru"
def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
headers = {"User-Agent": "Mozilla/5.0 (Linux x86_64)", "Content-Type": "application/json"}
@@ -30,14 +30,13 @@ def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
print(f"\n[3/3] Fetching LiveKit token...")
requests.post(f"{API_BASE}/api-room/api/v1/room/{room_id}/join", json={}, headers=headers).raise_for_status()
tok_req = requests.get(f"{API_BASE}/api-room-manager/api/v1/room/{room_id}/token", params={"deviceType": "PARTICIPANT_DEVICE_TYPE_WEB_DESKTOP", "displayName": display_name}, headers=headers)
tok_req = requests.get(f"{API_BASE}/api-room-manager/v2/room/{room_id}/connection-details", params={"deviceType": "PARTICIPANT_DEVICE_TYPE_WEB_DESKTOP", "displayName": display_name}, headers=headers)
tok_req.raise_for_status()
token_data = tok_req.json()
print(" :P Token received")
print(json.dumps(token_data, indent=2))
return room_id, token_data["roomToken"]
async def get_wb_info():
print("\n--- WB Stream Info ---")
try:

View File

@@ -15,7 +15,7 @@ except ImportError:
logging.getLogger("livekit").setLevel(logging.WARNING)
API_BASE = "https://stream.wb.ru"
WS_URL = "wss://wbstream01-el.wb.ru:7880"
WS_URL = "wss://rtc-el-01.wb.ru"
TEST_MESSAGES = ["Hello WB Stream!", "Hello world", "X" * 100, "Final test"]
def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
@@ -39,10 +39,9 @@ def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
room_id = room_req.json()["roomId"]
requests.post(f"{API_BASE}/api-room/api/v1/room/{room_id}/join", json={}, headers=headers).raise_for_status()
tok_req = requests.get(f"{API_BASE}/api-room-manager/api/v1/room/{room_id}/token", params={"deviceType": "PARTICIPANT_DEVICE_TYPE_WEB_DESKTOP", "displayName": display_name}, headers=headers)
tok_req = requests.get(f"{API_BASE}/api-room-manager/v2/room/{room_id}/connection-details", params={"deviceType": "PARTICIPANT_DEVICE_TYPE_WEB_DESKTOP", "displayName": display_name}, headers=headers)
tok_req.raise_for_status()
return room_id, tok_req.json()["roomToken"]
async def run_poc() -> dict:
"""Runs the complete PoC flow."""
print("\n--- WB Stream PoC ---")

View File

@@ -41,7 +41,7 @@ def _decode(arr: np.ndarray) -> str | None:
except Exception:
pass
return None
WS_URL = "wss://rtc-el-01.wb.ru"
def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
headers = {"User-Agent": "Mozilla/5.0 (Linux x86_64)", "Content-Type": "application/json"}
@@ -56,7 +56,7 @@ def _get_room_token(room_id: str, display_name: str) -> tuple[str, str]:
r.raise_for_status()
room_id = r.json()["roomId"]
requests.post(f"{API_BASE}/api-room/api/v1/room/{room_id}/join", json={}, headers=headers).raise_for_status()
tok = requests.get(f"{API_BASE}/api-room-manager/api/v1/room/{room_id}/token",
tok = requests.get(f"{API_BASE}/api-room-manager/v2/room/{room_id}/connection-details",
params={"deviceType": "PARTICIPANT_DEVICE_TYPE_WEB_DESKTOP", "displayName": display_name}, headers=headers)
tok.raise_for_status()
return room_id, tok.json()["roomToken"]

View File

@@ -46,6 +46,7 @@ type createRoomResponse struct {
type tokenResponse struct {
RoomToken string `json:"roomToken"`
ServerURL string `json:"serverUrl"`
}
func registerGuest(ctx context.Context, displayName string) (string, error) {
@@ -164,7 +165,7 @@ func joinRoom(ctx context.Context, accessToken, roomID string) error {
}
func getToken(ctx context.Context, accessToken, roomID, displayName string) (string, error) {
u := fmt.Sprintf("%s/api-room-manager/api/v1/room/%s/token", apiBase, roomID)
u := fmt.Sprintf("%s/api-room-manager/v2/room/%s/connection-details", apiBase, roomID)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil)
if err != nil {
return "", fmt.Errorf("create request: %w", err)

View File

@@ -37,7 +37,7 @@ func TestWBStreamAPIHappyPath(t *testing.T) {
_ = json.NewEncoder(w).Encode(createRoomResponse{RoomID: "room"}) //nolint:goconst,lll // test literal, repetition is intentional
case "/api-room/api/v1/room/room/join":
w.WriteHeader(http.StatusOK)
case "/api-room-manager/api/v1/room/room/token":
case "/api-room-manager/v2/room/room/connection-details":
if r.URL.Query().Get("displayName") != "peer" {
t.Fatalf("displayName query = %q", r.URL.Query().Get("displayName"))
}
@@ -103,7 +103,7 @@ func TestWBStreamGetRoomToken(t *testing.T) {
_ = json.NewEncoder(w).Encode(createRoomResponse{RoomID: "created"})
case "/api-room/api/v1/room/created/join":
w.WriteHeader(http.StatusOK)
case "/api-room-manager/api/v1/room/created/token":
case "/api-room-manager/v2/room/created/connection-details":
_ = json.NewEncoder(w).Encode(tokenResponse{RoomToken: "token"})
default:
http.NotFound(w, r)

View File

@@ -15,7 +15,7 @@ import (
)
const (
wsURL = "wss://wbstream01-el.wb.ru:7880"
wsURL = "wss://rtc-el-01.wb.ru"
)
var (