gamelet-pixui-frame
Version:
pixui开发者框架
228 lines • 9.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateUID = void 0;
exports.singleton = singleton;
exports.getQueryParam = getQueryParam;
exports.getGameletInnerVersion = getGameletInnerVersion;
exports.checkVersionToNumber = checkVersionToNumber;
exports.GenCallApplicationBrokerRequest = GenCallApplicationBrokerRequest;
exports.CalculateCallApplicationBrokerSign = CalculateCallApplicationBrokerSign;
exports.UserdataComp = UserdataComp;
exports.arrayBufferToBase64 = arrayBufferToBase64;
exports.base64ToArrayBuffer = base64ToArrayBuffer;
var md5_1 = __importDefault(require("md5"));
function singleton(impl) {
return (function () {
var inst;
return {
getInstance: function () {
if (!inst) {
inst = new impl();
}
return inst;
}
};
})();
}
/**
* Uid 的结构是 ID + magic(<100000)
* QJS int 是64位(53有效位),足够用以标识
*/
exports.generateUID = (function () {
var __currentUID = 0;
// step 是保留给 appID 填写的位置,我们默认appID不超过10w
var __step = 100000;
return function (magic) {
if (magic === void 0) { magic = 0; }
__currentUID += __step;
var numID = __currentUID + magic;
return numID.toString(16);
};
})();
function getQueryParam(key) {
var query = decodeURI(window.location.search.substring(0));
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == key) {
return pair[1];
}
}
return "";
}
/**
* 获取内部版本号
*/
function getGameletInnerVersion() {
var verString = getQueryParam('env_gameletInnerVersion');
if (!verString) {
return '1.0.0.0';
}
return verString;
}
/**
* 把version转为数字类型方便对比。特别注意:targetVersion最大支持4位版本号,每一位为最大不超过99
* @param targetVersion 传入的版本号,如 1.0.1.0 , 1.0.1 , 1.1
* @returns 错误时返回 undefined, 正确时转为数字,如 1 00 01 00, 1 00 01 00, 1 01 00 00
*/
function checkVersionToNumber(targetVersion) {
var targetVersionArray = targetVersion.split('.');
var retNumberVersion = 0;
for (var key in targetVersionArray) {
switch (key) {
case '0':
retNumberVersion += parseInt(targetVersionArray[key]) * 1000000;
break;
case '1':
retNumberVersion += parseInt(targetVersionArray[key]) * 10000;
break;
case '2':
retNumberVersion += parseInt(targetVersionArray[key]) * 100;
break;
case '3':
retNumberVersion += parseInt(targetVersionArray[key]);
break;
}
}
return retNumberVersion;
}
// MD5 Encode
function GenCallApplicationBrokerRequest(subCommandId, applicationId, appKey, appVersion, requestbodyProxyDataObject, userData) {
var header = {};
header["cmd_id"] = subCommandId.toString(); //管理端拉取活动id
header["sdk_version"] = userData.sdkVersion || userData.sSdkVersion;
header["game_app_id"] = userData.appID || userData.sAppId;
header["plat_id"] = userData.platID || userData.sPlatID;
header["acc_type"] = userData.accountType || userData.sAcountType;
header["access_token"] = userData.accessToken || userData.sAccessToken;
header["area_id"] = userData.area || userData.sArea;
header["patition_id"] = userData.partition || userData.sPartition;
header["open_id"] = userData.openID || userData.sOpenId;
header["role_id"] = userData.roleID || userData.sRoleId;
header["timestamp"] = (new Date()).valueOf().toString();
header["pdr_appid"] = applicationId.toString();
header["sign"] = (0, md5_1.default)(CalculateCallApplicationBrokerSign(header, appKey));
header["pdr_version"] = appVersion.toString();
// header["seq_id"] = id.toString();
header["channel_id"] = ""; //这三个字段为空
header["act_style"] = "";
header["info_id"] = "";
header["source"] = 3;
header["msg_type"] = "1"; //请求1,应答2
var body = requestbodyProxyDataObject;
var request = {};
request["head"] = header;
request["body"] = body;
return request;
}
// 拼接 CallApplicationBroker 的签名
// @param headerTable 请求header
// @param appkey 应用的appkey
function CalculateCallApplicationBrokerSign(headerTable, appkey) {
//按照字母排序
var reqString = "";
var sortKey = Object.keys(headerTable).sort();
for (var _i = 0, sortKey_1 = sortKey; _i < sortKey_1.length; _i++) {
var iterator = sortKey_1[_i];
console.log(iterator, headerTable[iterator]);
reqString = reqString + iterator + "=" + headerTable[iterator] + "&";
}
reqString = reqString + "appkey=" + appkey.toString();
return reqString;
}
function UserdataComp(ud) {
/**
* member不为 undefined|null 时取member,否则取backupMember
* js 中会把 0, "" 当做 false ,所以不能简单判断
*/
function checkUserDataMember(member, backupMember) {
if (member == undefined) {
// member === undefined | null
return backupMember;
}
return member;
}
ud["sOpenId"] = checkUserDataMember(ud["sOpenId"], ud.openID);
ud["sServiceType"] = checkUserDataMember(ud["sServiceType"], ud.serviceType);
ud["sAppId"] = checkUserDataMember(ud["sAppId"], ud.appID);
ud["sRoleId"] = checkUserDataMember(ud["sRoleId"], ud.roleID);
ud["sPlatID"] = checkUserDataMember(ud["sPlatID"], ud.platID);
/**
* sAcountType 少了一个c,尝试取"sAcountType", 如果取不到就再次获取sAccountType。
* 同时给正确的sAccountType字段赋值
*/
ud["sAcountType"] = checkUserDataMember(ud["sAcountType"], ud.accountType);
if (!ud["sAcountType"]) {
ud["sAcountType"] = checkUserDataMember(ud["sAccountType"], ud.accountType);
}
ud["sAccountType"] = checkUserDataMember(ud["sAccountType"], ud.accountType);
ud["sArea"] = checkUserDataMember(ud["sArea"], ud.area);
ud["sPartition"] = checkUserDataMember(ud["sPartition"], ud.partition);
ud["sAccessToken"] = checkUserDataMember(ud["sAccessToken"], ud.accessToken);
ud["sGameVer"] = checkUserDataMember(ud["sGameVer"], ud.gameVer);
ud["sPayToken"] = checkUserDataMember(ud["sPayToken"], ud.payToken);
ud["sChannelID"] = checkUserDataMember(ud["sChannelID"], ud.channelID);
ud["sSdkVersion"] = checkUserDataMember(ud["sSdkVersion"], ud.sdkVersion);
ud["sSign"] = checkUserDataMember(ud["sSign"], ud.sign);
ud["sLoginChannel"] = checkUserDataMember(ud["sLoginChannel"], ud.loginChannel);
ud["sRegion"] = checkUserDataMember(ud["sRegion"], ud.region);
ud["sIntlSdkParam"] = checkUserDataMember(ud["sIntlSdkParam"], ud.intlSdkParam);
ud["sLanguage"] = checkUserDataMember(ud["sLanguage"], ud.language);
ud["sQQInstalled"] = checkUserDataMember(ud["sQQInstalled"], ud.qq_installed);
ud["sWXInstalled"] = checkUserDataMember(ud["sWXInstalled"], ud.wx_installed);
ud["sExtend"] = checkUserDataMember(ud["sExtend"], ud.extend_args);
ud["openID"] = checkUserDataMember(ud["sOpenId"], ud.openID);
ud["serviceType"] = checkUserDataMember(ud["sServiceType"], ud.serviceType);
ud["appID"] = checkUserDataMember(ud["sAppId"], ud.appID);
ud["roleID"] = checkUserDataMember(ud["sRoleId"], ud.roleID);
ud["platID"] = checkUserDataMember(ud["sPlatID"], ud.platID);
ud["accountType"] = checkUserDataMember(ud["sAcountType"], ud.accountType);
ud["area"] = checkUserDataMember(ud["sArea"], ud.area);
ud["partition"] = checkUserDataMember(ud["sPartition"], ud.partition);
ud["accessToken"] = checkUserDataMember(ud["sAccessToken"], ud.accessToken);
ud["gameVer"] = checkUserDataMember(ud["sGameVer"], ud.gameVer);
ud["payToken"] = checkUserDataMember(ud["sPayToken"], ud.payToken);
ud["channelID"] = checkUserDataMember(ud["sChannelID"], ud.channelID);
ud["sdkVersion"] = checkUserDataMember(ud["sSdkVersion"], ud.sdkVersion);
ud["sign"] = checkUserDataMember(ud["sSign"], ud.sign);
ud["loginChannel"] = checkUserDataMember(ud["sLoginChannel"], ud.loginChannel);
ud["region"] = checkUserDataMember(ud["sRegion"], ud.region);
ud["intlSdkParam"] = checkUserDataMember(ud["sIntlSdkParam"], ud.intlSdkParam);
ud["language"] = checkUserDataMember(ud["sLanguage"], ud.language);
ud["qqInstalled"] = checkUserDataMember(ud["sQQInstalled"], ud.qq_installed);
ud["wxInstalled"] = checkUserDataMember(ud["sWXInstalled"], ud.wx_installed);
ud["extend"] = checkUserDataMember(ud["sExtend"], ud.extend_args);
return ud;
}
function arrayBufferToBase64(buffer) {
// @ts-ignore
if (std) {
// @ts-ignore
std.overtimecheck(0);
var bytes = new Uint8Array(buffer);
// @ts-ignore
var binary = Buffer.from(bytes).toString('base64');
return binary;
}
else {
return '';
}
}
function base64ToArrayBuffer(base64) {
// @ts-ignore
if (std) {
// @ts-ignore
std.overtimecheck(0);
// @ts-ignore
var binary = Buffer.from(base64, 'base64');
var buffer = new Uint8Array(binary).buffer;
return buffer;
}
else {
return new ArrayBuffer(0);
}
}
//# sourceMappingURL=utilities.js.map