@@ -52,6 +52,11 @@ plugins.register("/permissions/features", function(ob) {
5252 "ltl":true,
5353 "lt":true,
5454 "rcz":true
55+ "bom": true,
56+ "bom_at": 10,
57+ "bom_rqp": 0.5,
58+ "bom_ra": 24,
59+ "bom_d": 60
5560 }
5661 * }
5762 */
@@ -60,21 +65,29 @@ plugins.register("/permissions/features", function(ob) {
6065 if ( params . qstring . method !== "sc" ) {
6166 return false ;
6267 }
63- return new Promise ( function ( resolve ) {
64- getSDKConfig ( params ) . then ( function ( config ) {
65- delete config . _id ;
66- config . v = 1 ;
67- config . t = Date . now ( ) ;
68- config . c = config . config || { } ;
68+ return getSDKConfig ( params ) . then ( function ( config ) {
69+ delete config . _id ;
70+ let cc = config . config || { } ;
71+ if ( typeof cc . bom_rqp !== "undefined" ) {
72+ cc . bom_rqp = cc . bom_rqp / 100 ;
73+ }
74+ config . v = 2 ;
75+ config . t = Date . now ( ) ;
76+ config . c = cc ;
77+
78+ return getEnforcement ( params ) . then ( function ( enforcement ) {
79+ if ( enforcement && enforcement . enforcement ) {
80+ for ( let key in config . c ) {
81+ if ( enforcement . enforcement [ key ] === false ) {
82+ delete config . c [ key ] ;
83+ }
84+ }
85+ }
6986 delete config . config ;
7087 common . returnOutput ( params , config ) ;
71- } )
72- . catch ( function ( err ) {
73- common . returnMessage ( params , 400 , 'Error: ' + err ) ;
74- } )
75- . finally ( function ( ) {
76- resolve ( ) ;
77- } ) ;
88+ } ) ;
89+ } ) . catch ( function ( err ) {
90+ common . returnMessage ( params , 400 , 'Error: ' + err ) ;
7891 } ) ;
7992 } ) ;
8093
@@ -100,6 +113,7 @@ plugins.register("/permissions/features", function(ob) {
100113 if ( params . qstring . method === "sdk-config" ) {
101114 validateRead ( params , FEATURE_NAME , function ( ) {
102115 getSDKConfig ( params ) . then ( function ( res ) {
116+ // TODO: check if filtering is needed here too
103117 common . returnOutput ( params , res . config || { } ) ;
104118 } )
105119 . catch ( function ( err ) {
@@ -153,7 +167,12 @@ plugins.register("/permissions/features", function(ob) {
153167 "ltlpt" ,
154168 "ltl" ,
155169 "lt" ,
156- "rcz"
170+ "rcz" ,
171+ "bom" ,
172+ "bom_at" ,
173+ "bom_rqp" ,
174+ "bom_ra" ,
175+ "bom_d"
157176 ] ;
158177 for ( var key in configToSave ) {
159178 if ( validOptions . indexOf ( key ) === - 1 ) {
@@ -178,6 +197,17 @@ plugins.register("/permissions/features", function(ob) {
178197 } ) ;
179198 } ) ;
180199 }
200+ if ( params . qstring . method === "sdk-enforcement" ) {
201+ validateRead ( params , FEATURE_NAME , function ( ) {
202+ getEnforcement ( params ) . then ( function ( res ) {
203+ common . returnOutput ( params , res . enforcement || { } ) ;
204+ } )
205+ . catch ( function ( err ) {
206+ common . returnMessage ( params , 400 , 'Error: ' + err ) ;
207+ } ) ;
208+ } ) ;
209+ return true ;
210+ }
181211
182212 return false ;
183213 } ) ;
@@ -189,6 +219,32 @@ plugins.register("/permissions/features", function(ob) {
189219 switch ( paths [ 3 ] ) {
190220 case 'update-parameter' : validateUpdate ( params , FEATURE_NAME , updateParameter ) ;
191221 break ;
222+ case 'update-enforcement' :
223+ validateUpdate ( params , FEATURE_NAME , function ( ) {
224+ var enforcement = params . qstring . enforcement ;
225+ if ( typeof enforcement === "string" ) {
226+ try {
227+ enforcement = JSON . parse ( enforcement ) ;
228+ }
229+ catch ( SyntaxError ) {
230+ return common . returnMessage ( params , 400 , 'Error parsing enforcement' ) ;
231+ }
232+ }
233+ common . outDb . collection ( 'sdk_enforcement' ) . updateOne (
234+ { _id : params . app_id + "" } ,
235+ { $set : { enforcement : enforcement } } ,
236+ { upsert : true } ,
237+ function ( err ) {
238+ if ( err ) {
239+ common . returnMessage ( params , 500 , 'Error saving enforcement to database' ) ;
240+ }
241+ else {
242+ common . returnOutput ( params , { result : 'Success' } ) ;
243+ }
244+ }
245+ ) ;
246+ } ) ;
247+ break ;
192248 default : common . returnMessage ( params , 404 , 'Invalid endpoint' ) ;
193249 break ;
194250 }
@@ -497,4 +553,21 @@ plugins.register("/permissions/features", function(ob) {
497553 } ) ;
498554 } ) ;
499555 }
556+
557+ /**
558+ * Function to get enforcement info for the given app
559+ * @param {Object } params - params object
560+ * @returns {Promise } response
561+ */
562+ function getEnforcement ( params ) {
563+ return new Promise ( function ( resolve , reject ) {
564+ common . outDb . collection ( 'sdk_enforcement' ) . findOne ( { _id : params . app_id + "" } , function ( err , res ) {
565+ if ( err ) {
566+ console . log ( err ) ;
567+ return reject ( ) ;
568+ }
569+ return resolve ( res || { } ) ;
570+ } ) ;
571+ } ) ;
572+ }
500573} ( ) ) ;
0 commit comments