@@ -158,7 +158,11 @@ app.get("/:id", authorizer({}), async (req, res) => {
158
158
let originalRecordingUrl : string | null = null ;
159
159
160
160
if ( req . query . sourceRecording === "true" ) {
161
- const { url } = await buildRecordingUrl ( session , req ) ;
161
+ const { url } = await buildRecordingUrl (
162
+ session ,
163
+ req . config . recordCatalystObjectStoreId ,
164
+ req . config . secondaryRecordObjectStoreId
165
+ ) ;
162
166
originalRecordingUrl = url ;
163
167
session . sourceRecordingUrl = originalRecordingUrl ;
164
168
}
@@ -230,56 +234,58 @@ export async function getRunningRecording(content: DBStream, req: Request) {
230
234
} ;
231
235
}
232
236
233
- return await buildRecordingUrl ( session , req ) ;
237
+ return await buildRecordingUrl (
238
+ session ,
239
+ req . config . recordCatalystObjectStoreId ,
240
+ req . config . secondaryRecordObjectStoreId
241
+ ) ;
234
242
}
235
243
236
- export async function buildRecordingUrl ( session : DBSession , req : Request ) {
237
- let objectStoreId : string ;
238
- const os = await db . objectStore . get ( req . config . recordCatalystObjectStoreId ) ;
244
+ export async function buildRecordingUrl (
245
+ session : DBSession ,
246
+ recordCatalystObjectStoreId : string ,
247
+ secondaryRecordObjectStoreId : string
248
+ ) {
249
+ const os = await db . objectStore . get ( recordCatalystObjectStoreId ) ;
239
250
240
- let url = pathJoin (
241
- os . publicUrl ,
242
- session . playbackId ,
243
- session . id ,
244
- "output.m3u8"
245
- ) ;
251
+ let urlPrefix = pathJoin ( os . publicUrl , session . playbackId , session . id ) ;
252
+ let manifestUrl = pathJoin ( urlPrefix , "output.m3u8" ) ;
246
253
247
254
let params = {
248
255
method : "HEAD" ,
249
256
timeout : 5 * 1000 ,
250
257
} ;
251
- let resp = await fetchWithTimeout ( url , params ) ;
258
+ let resp = await fetchWithTimeout ( manifestUrl , params ) ;
259
+ if ( resp . status == 200 ) {
260
+ return {
261
+ url : manifestUrl ,
262
+ session,
263
+ objectStoreId : recordCatalystObjectStoreId ,
264
+ thumbUrl : pathJoin ( urlPrefix , "source" , "latest.jpg" ) ,
265
+ } ;
266
+ }
252
267
253
- if ( resp . status != 200 ) {
254
- const secondaryOs = req . config . secondaryRecordObjectStoreId
255
- ? await db . objectStore . get ( req . config . secondaryRecordObjectStoreId )
256
- : undefined ;
257
- url = pathJoin (
258
- secondaryOs . publicUrl ,
259
- session . playbackId ,
260
- session . id ,
261
- "output.m3u8"
262
- ) ;
268
+ const secondaryOs = await db . objectStore . get ( secondaryRecordObjectStoreId ) ;
269
+ urlPrefix = pathJoin ( secondaryOs . publicUrl , session . playbackId , session . id ) ;
270
+ manifestUrl = pathJoin ( urlPrefix , "output.m3u8" ) ;
263
271
264
- objectStoreId = req . config . secondaryRecordObjectStoreId ;
272
+ const objectStoreId = secondaryRecordObjectStoreId ;
265
273
266
- resp = await fetchWithTimeout ( url , params ) ;
274
+ resp = await fetchWithTimeout ( manifestUrl , params ) ;
267
275
268
- if ( resp . status != 200 ) {
269
- return {
270
- url : null ,
271
- session,
272
- objectStoreId,
273
- } ;
274
- }
275
- } else {
276
- objectStoreId = req . config . recordCatalystObjectStoreId ;
276
+ if ( resp . status != 200 ) {
277
+ return {
278
+ url : null ,
279
+ session,
280
+ objectStoreId,
281
+ } ;
277
282
}
278
283
279
284
return {
280
- url,
285
+ url : manifestUrl ,
281
286
session,
282
287
objectStoreId,
288
+ thumbUrl : pathJoin ( urlPrefix , "source" , "latest.jpg" ) ,
283
289
} ;
284
290
}
285
291
export default app ;
0 commit comments