| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import axios from 'axios';
- const API_BASE_URL = '/api';
- // Token API 相关类型定义
- interface IMTokenResponse {
- nonce: string;
- token: string;
- appId: string;
- appSign: string;
- timestamp: number;
- }
- interface RTCTokenResponse {
- token: string;
- appId: string;
- timestamp: number;
- }
- interface TokenError {
- message: string;
- code?: number;
- }
- // 课堂相关API
- export const ClassroomAPI = {
- /**
- * 获取IM Token
- * @param userId 用户ID
- * @param role 用户角色 (admin/student)
- * @returns Promise<string> 返回IM Token
- * @throws {TokenError} 获取失败时抛出错误
- */
- getIMToken: async (userId: string, role: string): Promise<IMTokenResponse> => {
- try {
- const response = await axios.post(`${API_BASE_URL}/classroom/im_token`, {
- userId,
- role
- });
- if (!response.data.token) {
- throw new Error('Invalid token response');
- }
- return response.data;
- } catch (error) {
- console.error('Failed to get IM token:', error);
- throw new Error('Failed to get IM token');
- }
- },
- /**
- * 获取RTC Token
- * @param channelId 频道ID
- * @param userId 用户ID
- * @returns Promise<string> 返回RTC Token
- * @throws {TokenError} 获取失败时抛出错误
- */
- getRTCToken: async (channelId: string, userId: string): Promise<RTCTokenResponse> => {
- try {
- const response = await axios.post(`${API_BASE_URL}/classroom/rtc_token`, {
- channelId,
- userId
- });
- if (!response.data.token) {
- throw new Error('Invalid token response');
- }
- return response.data;
- } catch (error) {
- console.error('Failed to get RTC token:', error);
- throw new Error('Failed to get RTC token');
- }
- }
- };
|