mtl-js-sdk
Version:
ynf-fw-mtl-api
234 lines (222 loc) • 7.85 kB
JavaScript
import { saveExclusiveYhtInfoKey, exclusiveDomainKey, exclusiveLocalLanguageKey } from './keys'
import { invokeSuccess, invokeFail } from './callback'
import { getLanguage } from './localization'
import { canExecUpesnBridge } from './bridge/index'
function getYouZoneLanguage() {
let language = getLanguage();
let newLanguage = language.toLowerCase()
if (newLanguage == 'zhs' || newLanguage == 'zh-cn' || newLanguage == 'zh_cn' || newLanguage.startsWith('zh-hans-')) {
language = 'zh';
} else if (newLanguage == 'zht' || newLanguage.startsWith('zh-')) {
language = 'tw';
} else if (newLanguage == 'en' || newLanguage.startsWith('en-')) {
language = 'en';
} else {
language = 'zh';
}
return language;
}
export function getUnifiedSessionHeader(param) {
let unifiedSession = new URL(window.location.origin).protocol === 'file://'
if (!unifiedSession) {
invokeSuccess(param, {});
return;
}
if (canExecUpesnBridge()) {
try {
// 先从ua获取
let userAgent = navigator.userAgent;
let tokenReg = /yht_access_token=\S+/g;
let yht_access_token = tokenReg.exec(userAgent)[0].substr('yht_access_token='.length);
let tenantReg = /tenantId=\S+/g;
let tenantId = tenantReg.exec(userAgent)[0].substr('tenantId='.length);
if (yht_access_token && tenantId) {
invokeSuccess(param, { yht_access_token, tenantId });
} else {
mtl.getUserYHTInfo({
isEncrypt: false,
success: function (res) {
if (res?.strategy === 'bip_mixcloud_strategy') {
invokeSuccess(param, { yht_access_token: res?.privateYhtToken, tenantId: res?.privateTenantID });
} else {
invokeSuccess(param, { yht_access_token: res.yhtToken, tenantId: res.tenant_id });
}
},
fail: function () {
invokeSuccess(param, {});
}
});
}
} catch (error) {
mtl.getUserYHTInfo({
isEncrypt: false,
success: function (res) {
if (res?.strategy === 'bip_mixcloud_strategy') {
invokeSuccess(param, { yht_access_token: res?.privateYhtToken, tenantId: res?.privateTenantID });
} else {
invokeSuccess(param, { yht_access_token: res.yhtToken, tenantId: res.tenant_id });
}
},
fail: function () {
invokeSuccess(param, {});
}
});
}
} else {
mtl.getUserYHTInfo({
isEncrypt: false,
success: function (res) {
if (res?.strategy === 'bip_mixcloud_strategy') {
invokeSuccess(param, { yht_access_token: res?.privateYhtToken, tenantId: res?.privateTenantID });
} else {
invokeSuccess(param, { yht_access_token: res.yhtToken, tenantId: res.tenant_id });
}
},
fail: function () {
invokeSuccess(param, {});
}
});
}
}
export function getUserAgentInternal() {
let userAgent = navigator.userAgent;
let yhtInfoStr = api.getPrefs({
sync: true,
key: saveExclusiveYhtInfoKey
});
if (yhtInfoStr) {
let yhtInfo = JSON.parse(yhtInfoStr);
if (yhtInfo) {
let { yht_access_token, wb_at } = yhtInfo;
if (yht_access_token) {
let index = userAgent.indexOf('yht_access_token=');
if (index > -1) {
userAgent = userAgent.replace(/yht_access_token=\S+/g, `yht_access_token=${yht_access_token}`);
} else {
userAgent = `${userAgent} yht_access_token=${yht_access_token}`;
}
}
if (wb_at) {
let index = userAgent.indexOf('wb_at=');
if (index > -1) {
userAgent = userAgent.replace(/wb_at=\S+/g, `wb_at=${wb_at}`);
} else {
userAgent = `${userAgent} wb_at=${wb_at}`;
}
}
}
}
let language = getYouZoneLanguage();
if (language) {
let index = userAgent.indexOf('youZoneLanguage=');
if (index > -1) {
userAgent = userAgent.replace(/youZoneLanguage=\S+/g, `youZoneLanguage=${language}`);
} else {
userAgent = `${userAgent} youZoneLanguage=${language}`;
}
// 标准 UA 多语模式, 解决私有版逻辑
let localLanguage = api.getPrefs({
sync: true,
key: exclusiveLocalLanguageKey
})
if (localLanguage) {
let newUseragent = '';
if (userAgent.indexOf('YouZoneLocalLanguage=') > -1) {
newUseragent = userAgent.replace(/YouZoneLocalLanguage=\S+/g, `YouZoneLocalLanguage=${localLanguage}`);
} else {
newUseragent = `${userAgent} YouZoneLocalLanguage=${localLanguage}`;
}
userAgent = newUseragent
}
}
return userAgent;
}
export function setYhtCookie(url) {
// if (typeof url == 'string' && url.indexOf('http') == 0) {
// let yhtInfoStr = api.getPrefs({
// sync: true,
// key: saveExclusiveYhtInfoKey
// });
// if (yhtInfoStr) {
// let yhtInfo = JSON.parse(yhtInfoStr);
// if (yhtInfo) {
// let {yht_access_token, wb_at} = yhtInfo;
// if (yht_access_token && wb_at) {
// api.setCookie({
// url: url,
// cookie: `yht_access_token=${yht_access_token};wb_at=${wb_at}`
// });
// }
// }
// }
// }
}
export function getExclusiveDomainInfo() {
let objStr = api.getPrefs({
sync: true,
key: exclusiveDomainKey
});
if (objStr) {
return JSON.parse(objStr);
}
return;
}
export function uploadFile(param = {}) {
let domainObj = getExclusiveDomainInfo();
if (!domainObj) {
invokeFail(param, { message: 'domain error' });
return;
}
let { domain, data } = domainObj;
if (data && data.mobileAppUrl) {
domain = data.mobileAppUrl;
}
if (domain && domain.substr(domain.length - 1, 1) == '/') {
domain = domain.substr(0, domain.length - 1);
}
let url = domain + '/rest/v1/mobile/upload/uploadFile';
api.ajax({
url: url,
method: 'POST',
data: {
values: {
type: param.type
},
files: {
files: param.files
}
}
}, function (ret, err) {
if (ret) {
let data = ret.data;
if (data && data.files) {
invokeSuccess(param, data);
} else {
invokeFail(param, ret);
}
} else {
invokeFail(param, err);
}
});
}
export function compareVersion(v1 = '1.0.0', v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0');
}
while (v2.length < len) {
v2.push('0');
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i]);
const num2 = parseInt(v2[i]);
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}