agora-edu-core
Version:
Core APIs for building an online classroom
190 lines (189 loc) • 6.47 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReportServiceV2 = void 0;
var _agoraRteSdk = require("agora-rte-sdk");
var _jsMd = _interopRequireDefault(require("js-md5"));
var _protobuf = require("../protobuf");
var _error = require("../utils/error");
var _ReportServiceV;
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ReportServiceV2 extends _agoraRteSdk.ApiBase {
constructor() {
super();
this.reportUserParams = {};
this.qos = void 0;
this.host = 'https://rest-argus-ad.agoralab.co';
this.pathPrefix = '';
this.qos = 1;
}
Uint8ToBase64(u8Arr) {
const CHUNK_SIZE = 0x8000; //arbitrary number
let index = 0;
const length = u8Arr.length;
let result = '';
let slice;
while (index < length) {
slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length));
result += String.fromCharCode.apply(null, slice);
index += CHUNK_SIZE;
}
return btoa(result);
}
buildUserJoinPaylod(payloadParams) {
let errMsg = _protobuf.ApaasUserJoin.verify(payloadParams);
if (errMsg) throw Error(errMsg);
let message = _protobuf.ApaasUserJoin.create(payloadParams);
let buffer = _protobuf.ApaasUserJoin.encode(message).finish();
return this.Uint8ToBase64(buffer);
}
buildUserQuitPaylod(payloadParams) {
let errMsg = _protobuf.ApaasUserQuit.verify(payloadParams);
if (errMsg) throw Error(errMsg);
let message = _protobuf.ApaasUserQuit.create(payloadParams);
let buffer = _protobuf.ApaasUserQuit.encode(message).finish();
return this.Uint8ToBase64(buffer);
}
buildUserReconnectPaylod(payloadParams) {
let errMsg = _protobuf.ApaasUserReconnect.verify(payloadParams);
if (errMsg) throw Error(errMsg);
let message = _protobuf.ApaasUserReconnect.create(payloadParams);
let buffer = _protobuf.ApaasUserReconnect.encode(message).finish();
return this.Uint8ToBase64(buffer);
}
buildScreenShareStar(payloadParams) {
let errMsg = _protobuf.ScreenShareStar.verify(payloadParams);
if (errMsg) throw Error(errMsg);
let message = _protobuf.ScreenShareStar.create(payloadParams);
let buffer = _protobuf.ScreenShareStar.encode(message).finish();
return this.Uint8ToBase64(buffer);
}
buildScreenShareEnd(payloadParams) {
let errMsg = _protobuf.ScreenShareEnd.verify(payloadParams);
if (errMsg) throw Error(errMsg);
let message = _protobuf.ScreenShareEnd.create(payloadParams);
let buffer = _protobuf.ScreenShareEnd.encode(message).finish();
return this.Uint8ToBase64(buffer);
}
buildBaseParams(id, src, payload) {
const qos = this.qos;
const ts = Math.floor(new Date().getTime() / 1000);
const sign = (0, _jsMd.default)(`payload=${payload}&src=${src}&ts=${ts}`);
return {
id,
src,
payload,
qos,
ts,
sign,
requestId: this.reportUserParams.uid + new Date().valueOf()
};
}
buildApaasUserJoinParams(src, payloadParams, lts, errorCode) {
const id = 9012;
payloadParams.lts = lts;
payloadParams.errorCode = errorCode;
const payload = this.buildUserJoinPaylod(payloadParams);
return this.buildBaseParams(id, src, payload);
}
buildApaasUserQuitParams(src, payloadParams, lts, errorCode) {
const id = 9013;
payloadParams.lts = lts;
payloadParams.errorCode = errorCode;
const payload = this.buildUserQuitPaylod(payloadParams);
return this.buildBaseParams(id, src, payload);
}
buildApaasUserReconnectParams(src, payloadParams, lts, errorCode) {
const id = 9014;
payloadParams.lts = lts;
payloadParams.errorCode = errorCode;
const payload = this.buildUserReconnectPaylod(payloadParams);
return this.buildBaseParams(id, src, payload);
}
buildScreenShareStartParams(src, payloadParams, lts, errorCode) {
const id = 9017;
payloadParams.lts = lts;
payloadParams.errorCode = errorCode;
const payload = this.buildScreenShareStar(payloadParams);
return this.buildBaseParams(id, src, payload);
}
buildScreenShareEndParams(src, payloadParams, lts, errorCode) {
const id = 9019;
payloadParams.lts = lts;
payloadParams.errorCode = errorCode;
const payload = this.buildScreenShareEnd(payloadParams);
return this.buildBaseParams(id, src, payload);
}
guardParams() {
if (!!this.reportUserParams.uid) {
return true;
}
return _error.EduErrorCenter.shared.handleNonThrowableError(_error.AGEduErrorCode.EDU_ERR_REPORT_INVALID_PARAMS, new Error(`invalid params`));
}
initReportUserParams(params) {
_agoraRteSdk.Logger.info('init report user params', params);
this.reportUserParams = params;
}
updateRtcSessionId(sid) {
this.reportUserParams.streamSid = sid;
}
async reportApaasUserJoin(lts, errorCode) {
if (!this.guardParams()) {
return;
}
const res = await this.fetch({
path: `/v2/report`,
method: 'POST',
data: this.buildApaasUserJoinParams('apaas', this.reportUserParams, lts, errorCode)
});
return res.data;
}
async reportApaasUserQuit(lts, errorCode) {
if (!this.guardParams()) {
return;
}
const res = await this.fetch({
path: `/v2/report`,
method: 'POST',
data: this.buildApaasUserQuitParams('apaas', this.reportUserParams, lts, errorCode)
});
return res.data;
}
async reportApaasUserReconnect(lts, errorCode) {
if (!this.guardParams()) {
return;
}
const res = await this.fetch({
path: `/v2/report`,
method: 'POST',
data: this.buildApaasUserReconnectParams('apaas', this.reportUserParams, lts, errorCode)
});
return res.data;
}
async reportScreenShareStart(lts, errorCode) {
if (!this.guardParams()) {
return;
}
const res = await this.fetch({
path: `/v2/report`,
method: 'POST',
data: this.buildScreenShareStartParams('apaas', this.reportUserParams, lts, errorCode)
});
return res.data;
}
async reportScreenShareEnd(lts, errorCode) {
if (!this.guardParams()) {
return;
}
const res = await this.fetch({
path: `/v2/report`,
method: 'POST',
data: this.buildScreenShareEndParams('apaas', this.reportUserParams, lts, errorCode)
});
return res.data;
}
}
exports.ReportServiceV2 = ReportServiceV2;
_ReportServiceV = ReportServiceV2;
ReportServiceV2.shared = new _ReportServiceV();