UNPKG

agora-edu-core

Version:

Core APIs for building an online classroom

190 lines (189 loc) 6.47 kB
"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();