Files
ZYZ/shared/pubUtils/httpUtil.ts
2021-12-26 15:49:11 +08:00

192 lines
5.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import * as request from "request-promise";
import { RequestError } from "request-promise/errors";
import { BANTU_VID_ADDR, BANTU_VID_APP_KEY, HTTP_METHOD } from '../consts';
import { checkVidObjSign, get37CheckChatMd5Sign, get37Md5SignA, get37Md5SignB, getVidObjSign } from "./sdkUtil";
import { STATUS } from '../consts'
import { resResult } from "./util";
import { Chat37Params, CheckGuild37Params, CheckName37Params, GetWordParam } from "../domain/sdk";
// 通用请求http
export async function httpRequest(url: string, method: string, body: any, headers?: any, timeout = 150) {
console.log(`httpRequest*********: ${url}, ${method}, ${JSON.stringify(headers)}, ${JSON.stringify(body)}`)
if(!headers) {
headers = {
'content-type': 'application/json;charset=utf-8',
}
}
let options = {
url,
method,
headers,
body: JSON.stringify(body),
timeout,
JSON: true
}
try {
let res = await request(options);
console.log('*****request result*****');
console.log(JSON.stringify(res));
return res;
} catch (e) {
console.error('******', e);
let code = (<RequestError>e).cause?.code;
if(code == 'ESOCKETTIMEDOUT') {
return resResult(STATUS.REQUEST_TIME_OUT);
} else {
return resResult(STATUS.REQUEST_TIME_OUT);
}
}
}
export async function httpRequestForm(url: string, method: string, form: any, timeout = 150, printRes = true) {
console.log(`httpRequest*********: ${url}, ${method}, ${JSON.stringify(form)}`)
let options = {
url,
method,
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
timeout,
JSON: true
}
if(method == HTTP_METHOD.GET) {
options['qs'] = form;
} else if (method == HTTP_METHOD.POST) {
options['form'] = form;
}
try {
let res = await request(options);
console.log('*****request result*****');
if (printRes) {
console.log(JSON.stringify(res));
}
return res;
} catch (e) {
console.error('******', e);
let code = (<RequestError>e).cause?.code;
if(code == 'ESOCKETTIMEDOUT') {
return resResult(STATUS.REQUEST_TIME_OUT);
} else {
return resResult(STATUS.REQUEST_TIME_OUT);
}
}
}
/************** 厚土防沉迷接口 **************/
/**
* 在线报告 暂时不使用
* @param userCode 账号
* @param packageName 包名
*/
export async function reportOnline(userCode: string, packageName: string) {
if (!packageName || packageName == '') {
packageName = 'com.bantu.nfsg'
}
let result = await vidHttpRequest(BANTU_VID_ADDR.REPORT_ONLINE, {
account: userCode,
package: packageName
});
if (result && result.code !== 1) {
console.error(result.msg);
}
return result;
}
/**
* 实名认证 暂时不使用
* @param name 真实姓名
* @param idNum 身份证号
* @param userCode 账号
* @param packageName 包名
*/
export async function authenticate(name: string, idNum: string, userCode: string, packageName: string) {
if (!packageName || packageName == '') {
packageName = 'com.bantu.nfsg'
}
let result = await vidHttpRequest(BANTU_VID_ADDR.IDCARD, {
account: userCode,
cardno: idNum,
name,
appkey: BANTU_VID_APP_KEY,
package: packageName
});
if (result && result.code !== 1) {
console.error(result.msg);
}
return result && result.code == 1;
}
export async function vidHttpRequest(addr: string, body: any) {
body['sign'] = getVidObjSign(body);
console.log('body: ', JSON.stringify(body))
let options = {
url: BANTU_VID_ADDR.HOST + addr,
method: 'POST',
body: body,
json: true
}
try {
let res = await request(options);
let check = checkVidObjSign(res);
if (!check) return false;
// console.log('*****request result*****');
// console.log(JSON.stringify(res));
return res;
} catch (e) {
console.error(e);
return false
}
}
// 37sdk请求
export async function request37(url: string, body: any, key: string) {
body['sign'] = get37Md5SignA(body, key);
let result = await httpRequestForm(url, HTTP_METHOD.POST, body, 1000);
console.log('******result', result)
return result;
}
export async function request37Post(url: string, body: CheckName37Params|CheckGuild37Params, key: string) {
body.setSign(get37Md5SignB(body.getBody(), key));
let result = await httpRequestForm(url, HTTP_METHOD.POST, body, 1 * 60 * 1000);
console.log('*******', result != 1, result.code != STATUS.REQUEST_TIME_OUT.code)
if(result.code == STATUS.REQUEST_TIME_OUT.code) {
return STATUS.REQUEST_TIME_OUT.code;
}
if(result != 1) {
return 0
}
return 1;
}
export async function request37CheckChat(url: string, body: Chat37Params, key: string) {
body.setSign(get37CheckChatMd5Sign(body, key));
let result = await httpRequestForm(url, HTTP_METHOD.GET, body, 3 * 60 * 1000);
if(result != 1 && result.code != STATUS.REQUEST_TIME_OUT.code) {
return false
}
return true;
}
export async function request37GetWord(url: string, body: GetWordParam, key: string) {
body.setSign(get37Md5SignB(body.getBody(), key));
let result = await httpRequestForm(url, HTTP_METHOD.GET, body, 5 * 60 * 1000, false);
return result;
}