zby-live-sdk
Version:
This is a live SDK for weclassroom.
96 lines (85 loc) • 3.3 kB
JavaScript
/*
* @Author: your name
* @Date: 2020-08-28 17:06:45
* @LastEditTime: 2020-12-15 13:18:45
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \1705\zby_live_sdk\src\network\api.js
*/
import commonFetch from './commonFetch.js';
import {getReportBaseUrl, getApiCloudBaseUrl, getCloudApiDomain, getApiChangeSdkUrl, timestampUrl, getRTCTokenUrl} from '../config/config.js';
import util from '../util/util';
import md5 from 'md5';
import defaultApi from '../default';
//获取信道服务器地址
export function getImServerAddress(param){
return commonFetch(`${getCloudApiDomain()}/service/chat`, param, 'GET');
}
/**
* @function 从三方服务器获取时间戳
*/
export function getNetworkTimestampApi(name = 'taobao'){
return commonFetch(timestampUrl[name], 'GET');
}
// 获取云控参数
export function getCloudData(param){
return commonFetch(`${getApiCloudBaseUrl()}/rtccloud/class/init`, param, 'GET', null, util.getVerifySign1());
}
//获取初始化参数
export function getInitParams(param) {
const types = {
student: '/v1/play/init',
teacher: '/v1/push/init',
assistant: '/v1/push/init'
};
const { institutionId, userId, liveId, role} = param;
return commonFetch(`${getApiCloudBaseUrl()}${types[role]}`, {institutionId, userId, liveId}, 'GET');
}
//获取新旧信道开关和地址
export function getSwitchDomain(param){
return commonFetch(`${getApiCloudBaseUrl()}/v1/switch/domain`, param, 'GET');
}
export function dabanDataReport(param){
return commonFetch(getReportBaseUrl(), param, 'POST');
}
//sdk切换(客户端直接调用) 根据上课情况手动操作,对单个组ID进行SDK切换
// export function changeSdkInRoom(param){
// return commonFetch(`${getApiChangeSdkUrl()}/rtccloud/sdk/set/room/client`, param, 'FROMDATA');
// }
export function changeSdkInRoom(param){
return commonFetch(`${getApiChangeSdkUrl()}/rtccloud/sdk/set/lecture/client`, param, 'FROMDATA');
}
export const getAndSetInitParams = async (args) => {
const res = await getInitParams(args);
if (res && res.sdkInfo) {
console.log(`云控请求返回参数正常 ${JSON.stringify(res)}, ${JSON.stringify(res.sdkInfo)}`);
return res.sdkInfo[0].sdkName;
} else {
console.log(`云控请求返回参数错误 ${JSON.stringify(res)}`);
}
};
export const getRTCToken = async (args, retries = 0) => {
const ts = Date.now();
const headers = {
'X-Auth-Sign': md5(`py_client&${ts}60439d96cfbecc2de2872641aea204f2`),
'traceid': util.uuid(),
'X-Auth-Appid': 'py_client',
'X-Auth-TimeStamp': '' + ts,
'Content-Type': 'application/json',
};
return commonFetch(getRTCTokenUrl(), args, 'POST', 5000, headers).then((res) => {
if (res.s === 10000) {
return res.d.token;
} else {
defaultApi.writeLog(`get token failed: ${JSON.stringify(res)}`, undefined, 'error');
throw new Error('get token failed');
}
}).catch((err) => {
defaultApi.writeLog(`get token failed: ${JSON.stringify(err)}, retry times: ${retries}`, undefined, 'error');
if (retries < 3) {
return getRTCToken(args, retries + 1);
} else {
return '';
}
});
};