@tencentcloud/chat-cs-uniapp
Version:
TCCC uniapp UIKit
84 lines (80 loc) • 2.22 kB
JavaScript
import { ulid } from './ulid';
import * as Cookie from './cookie';
import { logger } from '../logger/logger';
import { getAuthorization } from './authorization';
import { getInfo } from './info';
const UrlMap = {
development: {
http: 'https://test.ccclogic.pstn.avc.qcloud.com',
socket: 'wss://test.cccstate.pstn.avc.qcloud.com/staff',
},
preproduction: {
http: 'https://pre.ccclogic.pstn.avc.qcloud.com',
socket: 'wss://pre.cccstate.pstn.avc.qcloud.com/staff',
},
production: {
http: 'https://api.tccc.qcloud.com',
socket: 'wss://api.tccc.qcloud.com/staff',
},
};
export const getBaseUrl = () => {
return UrlMap.production;
const { query } = wx.getEnterOptionsSync();
if (typeof query.scene === 'string') {
const scene = query.scene.toUpperCase();
if (scene.startsWith('DEV-')) {
return UrlMap.development;
}
if (scene.startsWith('TEST-')) {
return UrlMap.preproduction;
}
}
const env = `process.env.NODE_ENV` || 'production';
return UrlMap[env|| 'production'];
};
export function wxRequest(
url,
data = {},
) {
const nonce = ulid();
return new Promise((resolve, reject) => {
wx.request({
url: `${getBaseUrl().http}/${url.replace(/^\//, '')}`,
method: 'POST',
header: {
Cookie: Cookie.getCookiesStr(),
...getAuthorization(url),
},
enableHttp2: true,
data: {
nonce,
requestId: nonce,
timestamp: `${Date.now()}`,
clientType: '3',
...getInfo(),
...data,
},
success(res) {
const { data, header } = res;
const resData = data;
const setCookieStr = header['Set-Cookie'] || header['set-cookie'] || '';
Cookie.setCookieFromHeader(setCookieStr);
if (resData.errorCode === '0') {
return resolve(resData);
}
logger.error(`url: ${url}`, `nonce: ${nonce}`, res);
if (resData.errorCode === '-2015') {
Cookie.removeCookie('openId');
Cookie.removeCookie('userKey');
}
reject({
...resData,
message: resData.msg,
});
},
fail(res) {
reject(res);
},
});
});
}