1- const { cam } = require ( 'tencent-cloud- sdk' ) ;
2- const { ApiError } = require ( '../../utils/error ' ) ;
1+ const { Capi } = require ( '@ tencent-sdk/capi ' ) ;
2+ const Apis = require ( './apis ' ) ;
33
44class Cam {
55 constructor ( credentials = { } , region ) {
66 this . region = region || 'ap-guangzhou' ;
77 this . credentials = credentials ;
8- this . camClient = new cam ( this . credentials ) ;
8+ this . capi = new Capi ( {
9+ Region : this . region ,
10+ AppId : this . credentials . AppId ,
11+ SecretId : this . credentials . SecretId ,
12+ SecretKey : this . credentials . SecretKey ,
13+ Token : this . credentials . Token ,
14+ } ) ;
915 }
1016
11- async request ( data ) {
12- try {
13- const res = await this . camClient . request ( data ) ;
14-
15- if ( res . Response && res . Response . Error ) {
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- } ) ;
22- }
23- return res ;
24- } catch ( e ) {
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- } ) ;
32- }
17+ async request ( { Action, ...data } ) {
18+ const result = await Apis [ Action ] ( this . capi , data ) ;
19+ return result ;
3320 }
3421
3522 async DescribeRoleList ( page , limit ) {
3623 const reqParams = {
3724 Action : 'DescribeRoleList' ,
38- Version : '2019-01-16' ,
3925 Page : page ,
4026 Rp : limit ,
4127 } ;
@@ -45,7 +31,6 @@ class Cam {
4531 async ListRolePoliciesByRoleId ( roleId , page , limit ) {
4632 const reqParams = {
4733 Action : 'ListAttachedRolePolicies' ,
48- Version : '2019-01-16' ,
4934 Page : page ,
5035 Rp : limit ,
5136 RoleId : roleId ,
@@ -56,40 +41,53 @@ class Cam {
5641 async CreateRole ( roleName , policiesDocument ) {
5742 const reqParams = {
5843 Action : 'CreateRole' ,
59- Version : '2019-01-16' ,
6044 RoleName : roleName ,
6145 PolicyDocument : policiesDocument ,
62- Description : 'Serverless Framework' ,
46+ Description : 'Created By Serverless Framework' ,
6347 } ;
6448 return this . request ( reqParams ) ;
6549 }
6650
51+ async GetRole ( roleName ) {
52+ return this . request ( {
53+ Action : 'GetRole' ,
54+ RoleName : roleName ,
55+ } ) ;
56+ }
57+
58+ async DeleteRole ( roleName ) {
59+ return this . request ( {
60+ Action : 'DeleteRole' ,
61+ RoleName : roleName ,
62+ } ) ;
63+ }
64+
6765 // api limit qps 3/s
6866 async AttachRolePolicyByName ( roleId , policyName ) {
6967 const reqParams = {
7068 Action : 'AttachRolePolicy' ,
71- Version : '2019-01-16' ,
7269 AttachRoleId : roleId ,
7370 PolicyName : policyName ,
7471 } ;
7572 return this . request ( reqParams ) ;
7673 }
7774
78- async CheckSCFExcuteRole ( ) {
79- const ScfExcuteRoleName = 'QCS_SCFExcuteRole' ;
80-
81- const roles = await this . DescribeRoleList ( 1 , 200 ) ;
75+ async isRoleExist ( roleName ) {
76+ const { List = [ ] } = await this . DescribeRoleList ( 1 , 200 ) ;
8277
83- const len = roles . Response . List . length ;
84- for ( var i = 0 ; i < len ; i ++ ) {
85- const roleItem = roles . Response . List [ i ] ;
78+ for ( var i = 0 ; i < List . length ; i ++ ) {
79+ const roleItem = List [ i ] ;
8680
87- if ( roleItem . RoleName == ScfExcuteRoleName ) {
81+ if ( roleItem . RoleName === roleName ) {
8882 return true ;
8983 }
9084 }
9185 return false ;
9286 }
87+
88+ async CheckSCFExcuteRole ( ) {
89+ return this . isRoleExist ( 'QCS_SCFExcuteRole' ) ;
90+ }
9391}
9492
9593module . exports = Cam ;
0 commit comments