zby-live-sdk
Version:
This is a live SDK for weclassroom.
55 lines (53 loc) • 1.62 kB
JavaScript
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;
}
};