UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

234 lines (222 loc) 7.85 kB
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 }