Skip to content

Commit f54d24d

Browse files
committed
fix: add ApiError for api request error customize
1 parent b8ec791 commit f54d24d

File tree

16 files changed

+414
-200
lines changed

16 files changed

+414
-200
lines changed

src/modules/apigw/apis.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { TypeError } = require('../../utils/error');
1+
const { ApiError } = require('../../utils/error');
22

33
function isEmpty(val) {
44
return val === undefined || val === null || (typeof val === 'number' && isNaN(val));
@@ -39,18 +39,24 @@ function apiFactory(actions) {
3939

4040
if (Response && Response.Error && Response.Error.Code) {
4141
if (Response.Error.Code.indexOf('ResourceNotFound') === -1) {
42-
throw new TypeError(
43-
`API_APIGW_${action}`,
44-
`${Response.Error.Code}: ${Response.Error.Message} ${Response.RequestId}`,
45-
null,
46-
Response.RequestId,
47-
);
42+
throw new ApiError({
43+
type: `API_APIGW_${action}`,
44+
message: `${Response.Error.Message} (reqId: ${Response.RequestId})`,
45+
reqId: Response.RequestId,
46+
code: Response.Error.Code,
47+
});
4848
}
4949
return null;
5050
}
5151
return Response.Result || Response;
5252
} catch (e) {
53-
throw new TypeError(`API_APIGW_${action}`, e.message, e.stack, e.reqId);
53+
throw new ApiError({
54+
type: `API_APIGW_${action}`,
55+
message: e.message,
56+
stack: e.stack,
57+
reqId: e.reqId,
58+
code: e.code,
59+
});
5460
}
5561
};
5662
});

src/modules/apigw/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,14 +534,13 @@ class Apigw {
534534
console.log(`Please add CNAME record ${subDomain} for ${domainItem.domain}.`);
535535
} catch (e) {
536536
// User hasn't add cname dns record
537-
if (e.message.indexOf('DomainResolveError') !== -1) {
537+
if (e.code === 'FailedOperation.DomainResolveError') {
538538
customDomainOutput.push({
539539
isBinded: false,
540540
created: '创建失败',
541541
subDomain: domainItem.domain,
542542
cname: subDomain,
543543
message: `您的自定义域名还未生效,请给域名 ${domainItem.domain} 添加 CNAME 记录 ${subDomain},等待解析生效后,再次运行 'sls deploy' 完成自定义域名的配置`,
544-
errorMsg: e.message,
545544
});
546545
} else {
547546
throw e;

src/modules/cam/index.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { cam } = require('tencent-cloud-sdk');
2-
const { TypeError } = require('../../utils/error');
2+
const { ApiError } = require('../../utils/error');
33

44
class Cam {
55
constructor(credentials = {}, region) {
@@ -13,16 +13,22 @@ class Cam {
1313
const res = await this.camClient.request(data);
1414

1515
if (res.Response && res.Response.Error) {
16-
throw new TypeError(
17-
`API_CAM_${data.Action}`,
18-
`${res.Response.Error.Code}: ${res.Response.Error.Message} ${res.Response.RequestId}`,
19-
null,
20-
res.Response.RequestId,
21-
);
16+
throw new ApiError({
17+
type: `API_CAM_${data.action}`,
18+
message: `${res.Response.Error.Message} (reqId: ${res.Response.RequestId})`,
19+
reqId: res.Response.RequestId,
20+
code: res.Response.Error.Code,
21+
});
2222
}
2323
return res;
2424
} catch (e) {
25-
throw new TypeError(`API_CAM_${data.Action}`, e.message, e.stack, e.reqId);
25+
throw new ApiError({
26+
type: `API_CAM_${data.action}`,
27+
message: e.message,
28+
stack: e.stack,
29+
reqId: e.reqId,
30+
code: e.code,
31+
});
2632
}
2733
}
2834

src/modules/cdn/apis.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { TypeError } = require('../../utils/error');
1+
const { ApiError } = require('../../utils/error');
22

33
function isEmpty(val) {
44
return val === undefined || val === null || (typeof val === 'number' && isNaN(val));
@@ -36,16 +36,22 @@ function apiFactory(actions) {
3636
},
3737
);
3838
if (Response && Response.Error && Response.Error.Code) {
39-
throw new TypeError(
40-
`API_CDN_${action}`,
41-
`${Response.Error.Code}: ${Response.Error.Message} ${Response.RequestId}`,
42-
null,
43-
Response.RequestId,
44-
);
39+
throw new ApiError({
40+
type: `API_CDN_${action}`,
41+
message: `${Response.Error.Message} (reqId: ${Response.RequestId})`,
42+
reqId: Response.RequestId,
43+
code: Response.Error.Code,
44+
});
4545
}
4646
return Response;
4747
} catch (e) {
48-
throw new TypeError(`API_CDN_${action}`, e.message, e.stack, e.reqId);
48+
throw new ApiError({
49+
type: `API_CDN_${action}`,
50+
message: e.message,
51+
stack: e.stack,
52+
reqId: e.reqId,
53+
code: e.code,
54+
});
4955
}
5056
};
5157
});

src/modules/cfs/apis/apis.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { TypeError } = require('../../../utils/error');
1+
const { ApiError } = require('../../../utils/error');
22

33
function apiFactory(actions) {
44
const apis = {};
@@ -23,16 +23,22 @@ function apiFactory(actions) {
2323
);
2424

2525
if (Response && Response.Error && Response.Error.Code) {
26-
throw new TypeError(
27-
`API_CFS_${action}`,
28-
`${Response.Error.Code}: ${Response.Error.Message} ${Response.RequestId}`,
29-
null,
30-
Response.RequestId,
31-
);
26+
throw new ApiError({
27+
type: `API_CFS_${action}`,
28+
message: `${Response.Error.Message} (reqId: ${Response.RequestId})`,
29+
reqId: Response.RequestId,
30+
code: Response.Error.Code,
31+
});
3232
}
3333
return Response;
3434
} catch (e) {
35-
throw new TypeError(`API_CFS_${action}`, e.message, e.stack, e.reqId);
35+
throw new ApiError({
36+
type: `API_CFS_${action}`,
37+
message: e.message,
38+
stack: e.stack,
39+
reqId: e.reqId,
40+
code: e.code,
41+
});
3642
}
3743
};
3844
});

src/modules/cns/index.js

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { cns } = require('tencent-cloud-sdk');
2-
const { TypeError } = require('../../utils/error');
2+
const { ApiError } = require('../../utils/error');
33
const { getRealType } = require('../../utils');
44

55
class Cns {
@@ -116,11 +116,20 @@ class Cns {
116116
tempInputs.Action = 'RecordModify';
117117
try {
118118
const modifyResult = await this.cnsClient.request(tempInputs);
119-
if (modifyResult.code != 0) {
120-
throw new TypeError(`API_CNS_RecordModify`, JSON.stringify(modifyResult));
119+
if (modifyResult.code !== 0) {
120+
throw new ApiError({
121+
type: `API_CNS_RecordModify`,
122+
message: modifyResult.message,
123+
code: modifyResult.code,
124+
});
121125
}
122126
} catch (e) {
123-
throw new TypeError(`API_CNS_RecordModify`, e.message, e.stack);
127+
throw new ApiError({
128+
type: `API_CNS_RecordModify`,
129+
message: e.message,
130+
stack: e.stack,
131+
code: e.code,
132+
});
124133
}
125134
console.log(`Modified dns record ${tempInputs.recordId} success`);
126135
} else {
@@ -129,13 +138,22 @@ class Cns {
129138
tempInputs.Action = 'RecordCreate';
130139
try {
131140
let createOutputs = await this.cnsClient.request(tempInputs);
132-
if (createOutputs.code != 0) {
133-
throw new TypeError(`API_CNS_RecordCreate`, JSON.stringify(createOutputs));
141+
if (createOutputs.code !== 0) {
142+
throw new ApiError({
143+
type: `API_CNS_RecordCreate`,
144+
message: createOutputs.message,
145+
code: createOutputs.code,
146+
});
134147
}
135148
createOutputs = createOutputs['data'];
136149
tempInputs.recordId = createOutputs.record.id;
137150
} catch (e) {
138-
throw e;
151+
throw new ApiError({
152+
type: `API_CNS_RecordCreate`,
153+
message: e.message,
154+
stack: e.stack,
155+
code: e.code,
156+
});
139157
}
140158
console.log(`Created dns record ${tempInputs.recordId}`);
141159
}
@@ -160,11 +178,20 @@ class Cns {
160178
};
161179
try {
162180
const statusResult = await this.cnsClient.request(statusInputs);
163-
if (statusResult.code != 0) {
164-
throw new TypeError(`API_CNS_RecordStatus`, JSON.stringify(statusResult));
181+
if (statusResult.code !== 0) {
182+
throw new ApiError({
183+
type: `API_CNS_RecordStatus`,
184+
message: statusResult.message,
185+
code: statusResult.code,
186+
});
165187
}
166188
} catch (e) {
167-
throw new TypeError(`API_CNS_RecordStatus`, e.message, e.stack);
189+
throw new ApiError({
190+
type: `API_CNS_RecordStatus`,
191+
message: e.message,
192+
stack: e.stack,
193+
code: e.code,
194+
});
168195
}
169196
console.log(`Modified status to ${tempInputs.status}`);
170197
}
@@ -187,7 +214,7 @@ class Cns {
187214
};
188215
try {
189216
const deleteResult = await this.cnsClient.request(deleteInputs);
190-
if (deleteResult.code != 0) {
217+
if (deleteResult.code !== 0) {
191218
console.log(`Error API_CNS_RecordDelete: ${JSON.stringify(deleteResult)}`);
192219
}
193220
} catch (e) {

0 commit comments

Comments
 (0)