@@ -14,6 +14,7 @@ const middlewares = jsonServer.defaults();
1414const authMiddleware = require ( './authMiddleware' ) ;
1515
1616const members = require ( './services.json' ) . members ;
17+ const roles = require ( './services.json' ) . roles ;
1718
1819server . use ( middlewares ) ;
1920
@@ -29,7 +30,12 @@ server.get('/v3/members/_search', (req, res) => {
2930 const ret = { } ;
3031 const splitted = single . split ( ':' ) ;
3132 // if the result can be parsed successfully
32- const parsed = jsprim . parseInteger ( splitted [ 1 ] , { allowTrailing : true , trimWhitespace : true } ) ;
33+ let parsed = Error ( ) ;
34+ try {
35+ parsed = jsprim . parseInteger ( splitted [ 1 ] , { allowTrailing : true , trimWhitespace : true } ) ;
36+ } catch ( e ) {
37+ // no-empty
38+ }
3339 if ( parsed instanceof Error ) {
3440 ret [ splitted [ 0 ] ] = splitted [ 1 ] ;
3541 } else {
@@ -38,6 +44,7 @@ server.get('/v3/members/_search', (req, res) => {
3844 return ret ;
3945 } ) ;
4046 const userIds = _ . map ( criteria , 'userId' ) ;
47+ const handles = _ . map ( criteria , 'handle' ) ;
4148 const cloned = _ . cloneDeep ( members ) ;
4249 const response = {
4350 id : 'res1' ,
@@ -53,13 +60,42 @@ server.get('/v3/members/_search', (req, res) => {
5360 found = _ . pick ( found , fields ) ;
5461 }
5562 return found ;
63+ } else if ( _ . indexOf ( handles , single . result . content . handle ) > - 1 ) {
64+ let found = single . result . content ;
65+ if ( fields . length > 0 ) {
66+ found = _ . pick ( found , fields ) ;
67+ }
68+ return found ;
5669 }
5770 return null ;
5871 } ) . filter ( _ . identity ) ;
5972 response . result . metadata = { totalCount : response . result . content . length } ;
6073 res . status ( 200 ) . json ( response ) ;
6174} ) ;
6275
76+ // add additional search route for project members
77+ server . get ( '/roles' , ( req , res ) => {
78+ const filter = _ . isString ( req . query . filter ) ?
79+ req . query . filter . replace ( '%2520' , ' ' ) . replace ( '%20' , ' ' ) . split ( '=' ) : [ ] ;
80+ const cloned = _ . cloneDeep ( roles ) ;
81+ const response = {
82+ id : 'res1' ,
83+ result : {
84+ success : true ,
85+ status : 200 ,
86+ } ,
87+ } ;
88+ const role = filter ? _ . find ( cloned , ( single ) => {
89+ if ( single . userId === filter [ 1 ] ) {
90+ return single . roles ;
91+ }
92+ return null ;
93+ } ) : null ;
94+
95+ response . result . content = role ? role . roles : [ ] ;
96+ res . status ( 200 ) . json ( response ) ;
97+ } ) ;
98+
6399server . use ( router ) ;
64100
65101server . listen ( PORT , ( ) => {
0 commit comments