@@ -53,38 +53,35 @@ router.get('/', async (req, res, next) => {
53
53
return next ( err ) ;
54
54
}
55
55
56
- const streams = await Promise . all ( result . docs . map ( user => {
57
- return async ( ) => {
58
- const streamKey = user . streamInfo . streamKey ;
59
- let thumbnailURL ;
60
- try {
61
- thumbnailURL = await getThumbnail ( streamKey ) ;
62
- } catch ( err ) {
63
- LOGGER . info ( 'An error occurred when getting thumbnail for stream (stream key: {}). ' +
64
- 'Returning default thumbnail. Error: {}' , streamKey , err ) ;
65
- thumbnailURL = config . defaultThumbnailURL ;
66
- }
67
- return {
68
- username : user . username ,
69
- displayName : user . displayName ,
70
- profilePicURL : user . getProfilePicURL ( ) ,
71
- title : user . streamInfo . title ,
72
- genre : user . streamInfo . genre ,
73
- category : user . streamInfo . category ,
74
- viewCount : user . streamInfo . viewCount ,
75
- startTime : user . streamInfo . startTime ,
76
- thumbnailURL
77
- } ;
78
- } ;
79
- } ) ) ;
80
-
81
56
res . json ( {
82
- streams,
57
+ streams : await Promise . all ( result . docs . map ( buildUserLivestream ) ) ,
83
58
nextPage : result . nextPage
84
59
} ) ;
85
60
} ) ;
86
61
} ) ;
87
62
63
+ async function buildUserLivestream ( user ) {
64
+ const streamKey = user . streamInfo . streamKey ;
65
+ let thumbnailURL ;
66
+ try {
67
+ thumbnailURL = await getThumbnail ( streamKey ) ;
68
+ } catch ( err ) {
69
+ LOGGER . info ( 'An error occurred when getting thumbnail for stream (stream key: {}). ' +
70
+ 'Returning default thumbnail. Error: {}' , streamKey , err ) ;
71
+ thumbnailURL = config . defaultThumbnailURL ;
72
+ }
73
+ return {
74
+ username : user . username ,
75
+ displayName : user . displayName ,
76
+ profilePicURL : user . getProfilePicURL ( ) ,
77
+ title : user . streamInfo . title ,
78
+ genre : user . streamInfo . genre ,
79
+ category : user . streamInfo . category ,
80
+ viewCount : user . streamInfo . viewCount ,
81
+ startTime : user . streamInfo . startTime ,
82
+ thumbnailURL
83
+ } ;
84
+ }
88
85
89
86
router . get ( '/event-stages' , async ( req , res , next ) => {
90
87
const streamKeys = await getLiveStreamKeys ( ) ;
@@ -154,33 +151,8 @@ router.get('/event-stages', async (req, res, next) => {
154
151
return next ( err ) ;
155
152
}
156
153
157
- const streams = await Promise . all ( result . docs . map ( eventStage => {
158
- return async ( ) => {
159
- const streamKey = eventStage . streamInfo . streamKey ;
160
- let thumbnailURL ;
161
- try {
162
- thumbnailURL = await getThumbnail ( streamKey ) ;
163
- } catch ( err ) {
164
- LOGGER . info ( 'An error occurred when getting thumbnail for stream (stream key: {}). ' +
165
- 'Returning default thumbnail. Error: {}' , streamKey , err ) ;
166
- thumbnailURL = config . defaultThumbnailURL ;
167
- }
168
- return {
169
- eventStageId : eventStage . _id ,
170
- stageName : eventStage . stageName ,
171
- event : eventStage . event ,
172
- title : eventStage . streamInfo . title ,
173
- genre : eventStage . streamInfo . genre ,
174
- category : eventStage . streamInfo . category ,
175
- viewCount : eventStage . streamInfo . viewCount ,
176
- startTime : eventStage . streamInfo . startTime ,
177
- thumbnailURL
178
- } ;
179
- } ;
180
- } ) ) ;
181
-
182
154
res . json ( {
183
- streams,
155
+ streams : await Promise . all ( result . docs . map ( buildEventStageLivestream ) ) ,
184
156
nextPage : result . nextPage
185
157
} ) ;
186
158
} ) ;
@@ -193,6 +165,29 @@ async function getLiveStreamKeys() {
193
165
return data . live ? Object . getOwnPropertyNames ( data . live ) : [ ] ;
194
166
}
195
167
168
+ async function buildEventStageLivestream ( eventStage ) {
169
+ const streamKey = eventStage . streamInfo . streamKey ;
170
+ let thumbnailURL ;
171
+ try {
172
+ thumbnailURL = await getThumbnail ( streamKey ) ;
173
+ } catch ( err ) {
174
+ LOGGER . info ( 'An error occurred when getting thumbnail for stream (stream key: {}). ' +
175
+ 'Returning default thumbnail. Error: {}' , streamKey , err ) ;
176
+ thumbnailURL = config . defaultThumbnailURL ;
177
+ }
178
+ return {
179
+ eventStageId : eventStage . _id ,
180
+ stageName : eventStage . stageName ,
181
+ event : eventStage . event ,
182
+ title : eventStage . streamInfo . title ,
183
+ genre : eventStage . streamInfo . genre ,
184
+ category : eventStage . streamInfo . category ,
185
+ viewCount : eventStage . streamInfo . viewCount ,
186
+ startTime : eventStage . streamInfo . startTime ,
187
+ thumbnailURL
188
+ } ;
189
+ }
190
+
196
191
router . get ( '/:streamKey/thumbnail' , async ( req , res ) => {
197
192
const streamKey = sanitise ( req . params . streamKey ) ;
198
193
try {
0 commit comments