import { v4 as uuidv4 } from 'uuid'; // UAT环境 // const appKey = "k5hfiei5eevouvjohkapjaudpk2gakpaxha22fiy"; // const appSecret = "e65ffb25148b08207088148d5bce114d"; // const accessServer = "http://116.198.37.53:8080"; const accessServer = "https://uc.hivoice.cn"; const appKey = "tp3szvq45m3yn6rdjhxlzrrikf6fc3a75t2yh3y3"; const appSecret = "c5eccccfec16d46fe9ac678d69198415"; function constructParameter(body) { let params = []; for (let key in body) { params.push(body[key].toString()); } params.sort(); let digest = ""; for (let param of params) { digest += param; } let sha1 = require('sha1'); body.signature = sha1(digest).toUpperCase(); let p = ''; for (let key in body) { p += key; p += "="; p += encodeURIComponent(body[key]); p += "&"; } p = p.slice(0, -1); return p; } const yzs = { get_access_token: function (ip, flushToken) { let body = {}; body.subsystemId = 16; body.clientId = ip; body.timestamp = parseInt(new Date().getTime() / 1000); body.flushToken = flushToken; return fetch(`${accessServer}/rest/v2/token/get_access_token`, { method: "POST", body: constructParameter(body), headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', }, }).then(response => response.json()).then((json) => { console.log(json); return json.result.accessToken; }).catch(error => { console.log(error); }); }, update_access_token: function (ip, accessToken) { let body = {}; body.subsystemId = 16; body.clientId = ip; body.timestamp = parseInt(new Date().getTime() / 1000); body.accessToken = accessToken; return fetch(`${accessServer}/rest/v2/token/refresh_access_token`, { method: "POST", body: constructParameter(body), headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', }, }).then(response => response.json()).then((json) => { console.log(json); return json.result.accessToken; }).catch(error => { console.log(error); }); }, get_user_info: function (ip, accessToken) { let body = {}; body.subsystemId = 16; body.clientId = ip; body.timestamp = parseInt(new Date().getTime() / 1000); body.accessToken = accessToken; return fetch(`${accessServer}/rest/v2/user/get_user_info`, { method: "POST", body: constructParameter(body), headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', }, }).then(response => response.json()).then((json) => { console.log(json); if (json.returnCode != "uc_0000") throw json; return json.result; }); }, user_select: function (ip, accessToken) { let sha256 = require('sha256'); let timestamp = new Date().getTime(); let sig = appKey + timestamp.toString() + appSecret; sig = sha256(sig).toUpperCase();; let url = `/api/app/app-voice-recorder/rest/v1/user/select?accessToken=${encodeURIComponent(accessToken)}&phoneUdid=${encodeURIComponent(ip)}`; console.log("url: ", url) return fetch(url, { headers: { 'appKey': appKey, 'timestamp': timestamp, 'signature': sig, }, }).then(response => response.json()).then((json) => { console.log(json) return json.result; }); }, get_record_list: function (accessToken, passportId) { let sha256 = require('sha256'); let timestamp = new Date().getTime(); let sig = appKey + timestamp.toString() + appSecret; sig = sha256(sig).toUpperCase(); let url = `/api/app/app-voice-recorder/rest/v1/trans/info/list?accessToken=${encodeURIComponent(accessToken)}&passportId=${passportId}`; console.log("url: ", url) return fetch(url, { headers: { 'appKey': appKey, 'timestamp': timestamp, 'signature': sig, }, }).then(response => response.json()).then((json) => { if (json.errorCode !== "0") { throw json; } console.log(json) return json; }); }, download: function (accessToken, url) { let sha256 = require('sha256'); let timestamp = new Date().getTime(); let sig = appKey + timestamp.toString() + appSecret; sig = sha256(sig).toUpperCase(); let body = { url: url, accessToken: accessToken, }; return fetch("/api/app/app-voice-recorder/rest/v1/trans/info/download", { method: "POST", headers: { 'appKey': appKey, 'timestamp': timestamp, 'signature': sig, 'Content-Type': 'application/json; charset=utf-8', }, body: JSON.stringify(body), }).then(response => response.blob()); }, login: function (udid, account, password) { let md5 = require('md5'); let body = {}; body.subsystemId = 16; body.clientId = udid; body.timestamp = Math.round(new Date().getTime() / 1000); body.account = account; body.password = md5(password); return fetch(`${accessServer}/rest/v2/user/login`, { method: "POST", body: constructParameter(body), // mode: "no-cors", headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', }, }).then(response => response.json()).then((json) => { console.log("flushToken: ", json.result.flushToken); return json.result.flushToken; }).catch(error => { console.log(error); }); }, dynamic_code_login: function (udid, userCell, phoneCode) { let body = {}; body.subsystemId = 16; body.clientId = udid; body.timestamp = Math.round(new Date().getTime() / 1000); body.userCell = userCell; body.phoneCode = phoneCode; return fetch(`${accessServer}/rest/v2/phone/login`, { method: "POST", body: constructParameter(body), // mode: "no-cors", headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', "Access-Control-Allow-Origin": "*", }, }).then(response => response.json()).then((json) => { console.log("flushToken: ", json.result.flushToken); return json.result.flushToken; }).catch(error => { console.log(error); }); }, send_phone_code: function (udid, userCell) { let body = {}; body.subsystemId = 16; body.clientId = udid; body.timestamp = Math.round(new Date().getTime() / 1000); body.userCell = userCell; return fetch(`${accessServer}/rest/v2/phone/send_phone_code`, { method: "POST", body: constructParameter(body), // mode: "no-cors", headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', "Access-Control-Allow-Origin": "*", }, }).then(response => response.json()).then((json) => { console.log("send_phone_code: ", json); return json; }).catch(error => { console.log(error); }); }, uniqueDeviceIdentifier: function () { let udid = localStorage.getItem('uniqueDeviceIdentifier'); if (!udid) { udid = uuidv4(); localStorage.setItem('uniqueDeviceIdentifier', udid); } return udid; } }; export default yzs;