UNPKG

zby-live-sdk

Version:

This is a live SDK for weclassroom.

55 lines (53 loc) 1.62 kB
import pako from 'pako'; export default { translateRole(role, roleNum) { const roleArr = ['student', 'assist', 'teacher']; const roleNumArr = ['1', '2', '4']; if (roleArr.includes(role)) { return roleNumArr[roleArr.indexOf(role)]; } if (roleNumArr.includes(roleNum)) { return roleArr[roleNumArr.indexOf(roleNum)]; } }, /** * 压缩 / 解压 json */ zip(data) { if (data) { const str = JSON.stringify(data); const binaryString = pako.gzip(encodeURIComponent(str), { to: 'string' }); return btoa(binaryString); } }, unzip(b64Data) { let strData = atob(b64Data); // Convert binary string to character-number array const charData = strData.split('').map(function (x) { return x.charCodeAt(0); }); // Turn number array into byte-array const binData = new Uint8Array(charData); // // unzip // const data = pako.inflate(binData) const data = pako.inflate(binData, {to: 'string'}); // Convert gunzipped byteArray back to ascii string: // strData = arrayBufferToString(data) return decodeURIComponent(data); }, arrayBufferToString(buffer) { const bufView = new Uint16Array(buffer); const length = bufView.length; let result = ''; let addition = Math.pow(2, 16) - 1; for (var i = 0; i < length; i += addition) { if (i + addition > length) { addition = length - i; } result += String.fromCharCode.apply(null, bufView.subarray(i, i + addition)); } return result; } };