Skip to content

Commit c812774

Browse files
committed
【update】隧道加密优化; review by songym
1 parent 73044a9 commit c812774

File tree

5 files changed

+57
-27
lines changed

5 files changed

+57
-27
lines changed

src/common/index.common.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ import {
334334
getMeterPerMapUnit,
335335
getWrapNum,
336336
conversionDegree,
337-
EncryptFetchRequestUtil
337+
EncryptRequest
338338
} from './util';
339339
import { CartoCSS, ThemeStyle } from './style';
340340
import {
@@ -499,7 +499,7 @@ export {
499499
isCORS,
500500
setCORS,
501501
FetchRequest,
502-
EncryptFetchRequestUtil,
502+
EncryptRequest,
503503
ColorsPickerUtil,
504504
ArrayStatistic,
505505
getMeterPerMapUnit,

src/common/namespace.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ import {
337337
isCORS,
338338
setCORS,
339339
FetchRequest,
340-
EncryptFetchRequestUtil,
340+
EncryptRequest,
341341
ColorsPickerUtil,
342342
ArrayStatistic,
343343
CartoCSS,
@@ -494,7 +494,7 @@ SuperMap.isCORS = isCORS;
494494
SuperMap.setRequestTimeout = setRequestTimeout;
495495
SuperMap.getRequestTimeout = getRequestTimeout;
496496
SuperMap.FetchRequest = FetchRequest;
497-
SuperMap.EncryptFetchRequestUtil = EncryptFetchRequestUtil;
497+
SuperMap.EncryptRequest = EncryptRequest;
498498

499499
// commontypes
500500
SuperMap.inherit = inheritExt;

src/common/util/EncryptFetchRequestUtil.js renamed to src/common/util/EncryptRequest.js

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import {
99

1010
/**
1111
* @private
12-
* @name EncryptFetchRequestUtil
12+
* @name EncryptRequest
1313
* @namespace
1414
* @category BaseTypes Util
1515
* @classdesc 加密请求地址
16+
* @param {string} serverUrl - 服务地址。
1617
*/
17-
export class EncryptFetchRequestUtil {
18-
constructor(serverUrl = 'http://172.16.13.234:8090/iserver') {
18+
export class EncryptRequest {
19+
constructor(serverUrl = '') {
1920
this.serverUrl = serverUrl.split('').slice(-1)[0] === '/' ? serverUrl : `${serverUrl}/`;
2021
this.tunnelUrl = undefined;
2122
this.blockedUrlRegex = {
@@ -29,9 +30,22 @@ export class EncryptFetchRequestUtil {
2930
this.encryptAESIV = generateAESRandomIV();
3031
}
3132

32-
async encryptRequest(options) {
33+
/**
34+
* @function EncryptRequest.prototype.request
35+
* @description 加密请求地址。
36+
* @param {Object} config - 加密请求参数。
37+
* @param {string} config.method - 请求方法。
38+
* @param {string} config.url - 请求地址。
39+
* @param {string} config.params - 请求参数。
40+
* @param {Object} config.options - 请求的配置属性。
41+
* @returns {Promise} Promise 对象。
42+
*/
43+
async request(options) {
44+
if (!this.serverUrl) {
45+
throw 'serverUrl can not be empty.';
46+
}
3347
const config = Object.assign({ baseURL: '' }, options);
34-
const tunnelUrl = await this.createTunnel();
48+
const tunnelUrl = await this._createTunnel();
3549
if (!tunnelUrl) {
3650
return;
3751
}
@@ -63,12 +77,23 @@ export class EncryptFetchRequestUtil {
6377
console.debug('解密请求响应失败');
6478
return;
6579
}
66-
return JSON.parse(decryptResult).data;
80+
const resultData = JSON.parse(decryptResult);
81+
const resData = Object.create({
82+
json: function () {
83+
return Promise.resolve(resultData.data);
84+
}
85+
});
86+
return Object.assign(resData, resultData);
6787
}
6888
return response;
6989
}
7090

71-
async getRSAPublicKey() {
91+
/**
92+
* @private
93+
* @description 获取RSA public key
94+
* @function EncryptRequest.prototype._getRSAPublicKey
95+
*/
96+
async _getRSAPublicKey() {
7297
try {
7398
const response = await FetchRequest.get(`${this.serverUrl}services/security/tunnel/v1/publickey`);
7499
// 解析publicKey
@@ -88,10 +113,15 @@ export class EncryptFetchRequestUtil {
88113
}
89114
}
90115

91-
async createTunnel() {
116+
/**
117+
* @private
118+
* @description 创建隧道
119+
* @function EncryptRequest.prototype._createTunnel
120+
*/
121+
async _createTunnel() {
92122
if (!this.tunnelUrl) {
93123
try {
94-
const data = await this.getRSAPublicKey();
124+
const data = await this._getRSAPublicKey();
95125
if (!data) {
96126
throw 'fetch RSA publicKey failed';
97127
}

src/common/util/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111

1212
import { ColorsPickerUtil } from './ColorsPickerUtil';
1313

14-
import { EncryptFetchRequestUtil } from './EncryptFetchRequestUtil';
14+
import { EncryptRequest } from './EncryptRequest';
1515

1616
import { ArrayStatistic } from './ArrayStatistic';
1717
import { getMeterPerMapUnit, getWrapNum, conversionDegree } from './MapCalculateUtil';
@@ -72,7 +72,7 @@ export {
7272
setRequestTimeout,
7373
getRequestTimeout,
7474
FetchRequest,
75-
EncryptFetchRequestUtil,
75+
EncryptRequest,
7676
ColorsPickerUtil,
7777
ArrayStatistic,
7878
getMeterPerMapUnit,

test/common/util/EncryptFetchRequestUtilSpec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { FetchRequest } from '../../../src/common//util/FetchRequest';
2-
import { EncryptFetchRequestUtil } from '../../../src/common//util/EncryptFetchRequestUtil';
2+
import { EncryptRequest } from '../../../src/common//util/EncryptRequest';
33

4-
describe('EncryptFetchRequestUtil', () => {
4+
describe('EncryptRequest', () => {
55
const serverUrl = 'http://fake.iserver.com/iserver';
66
const options = {
77
url: 'http://fake.iserver.com/iserver/iserver/services/security/svckeys/keyIDNAME.json',
88
method: 'get'
99
};
1010

11-
it('encryptRequest fail', (done) => {
11+
it('request fail', (done) => {
1212
const spyGet = spyOn(FetchRequest, 'get').and.returnValue('');
1313
const spyPost = spyOn(FetchRequest, 'post').and.returnValue({});
14-
const encryptFetchRequestUtil = new EncryptFetchRequestUtil(serverUrl);
15-
encryptFetchRequestUtil.encryptRequest(options).then((result) => {
14+
const encryptRequest = new EncryptRequest(serverUrl);
15+
encryptRequest.request(options).then((result) => {
1616
expect(result).toBeUndefined();
1717
expect(spyGet.calls.count()).toBe(1);
1818
expect(spyPost.calls.count()).toBe(0);
@@ -22,7 +22,7 @@ describe('EncryptFetchRequestUtil', () => {
2222
});
2323
});
2424

25-
it('encryptRequest succeed', (done) => {
25+
it('request succeed', (done) => {
2626
const spyGet = spyOn(FetchRequest, 'get').and.callFake(() => {
2727
const response = {
2828
keyLength: 2048,
@@ -50,16 +50,16 @@ describe('EncryptFetchRequestUtil', () => {
5050
'HAsHE/ok/jROEySWBxWSr2FTLXcnIkeFAYzig+V7NGalR0f/VnBorkAOyOnbCSq9nM3YWrhEUFaWwAouSDeEVqe+BLuIA+7KmCBfD7hh+qyM0lC5cvZ8vOIjsI3eqhHhiPOi+IQLGHQsRbFl8hSkE0XU1GIojqjppSEAxW5jhFC2bH5hdCt/+PKuHPhATElgJqOI6FJHpVpbLWiqoP7WMYVYvZm7wubYCQIG77LUSivbUQ61gjW0mevsKRdoiRl8fafV8Zq5D+QBbCy+Mn4rWXDC+gjwvyyYxEdOixALJgfnjWL48RRHxvITPapzbEsEkcnZiu+INSULcT60BeuduKzxp+hUg6Q8sn2Bu//CNk0NlGMeT5hqTON72iI4GBgfEOnGrcBHjsT/N2jX0NnVz1bgR6B9O6TpQQr3zkjVPidw8ElSO+lM8P5AuRqtNH9ajYt2uDwWBhbG+OfyR4hKIJ9V5aDhAwkIzkUerRP78Colsg==';
5151
return Promise.resolve({ text: () => Promise.resolve(response) });
5252
});
53-
const encryptFetchRequestUtil = new EncryptFetchRequestUtil(serverUrl);
54-
encryptFetchRequestUtil.encryptAESKey = 'SLbsaRbf4Rou8Bju';
55-
encryptFetchRequestUtil.encryptAESIV = 'rzLM7Z4RJGFd';
56-
encryptFetchRequestUtil.encryptRequest(options).then((result) => {
53+
const encryptRequest = new EncryptRequest(serverUrl);
54+
encryptRequest.encryptAESKey = 'SLbsaRbf4Rou8Bju';
55+
encryptRequest.encryptAESIV = 'rzLM7Z4RJGFd';
56+
encryptRequest.request(options).then((result) => {
5757
expect(result).toBe('l3nQtAUM4li87qMfO68exInHVFQ5gS3a6pb8ySIbib8=');
5858
expect(spyGet.calls.count()).toBe(1);
5959
expect(spyPost.calls.count()).toBe(1);
6060
expect(spyCommit.calls.count()).toBe(1);
61-
expect(encryptFetchRequestUtil.tunnelUrl).not.toBeUndefined();
62-
encryptFetchRequestUtil.encryptRequest(options).then(result => {
61+
expect(encryptRequest.tunnelUrl).not.toBeUndefined();
62+
encryptRequest.request(options).then(result => {
6363
expect(result).toBe('l3nQtAUM4li87qMfO68exInHVFQ5gS3a6pb8ySIbib8=');
6464
expect(FetchRequest.get.calls.count()).toBe(1);
6565
expect(FetchRequest.post.calls.count()).toBe(1);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy