Skip to content

Commit e2bf4d0

Browse files
committed
fix: Added back support for simplified URL session/:sessionId/master.m3u8
1 parent cbc0ba1 commit e2bf4d0

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

packages/stitcher/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { cors } from "@elysiajs/cors";
22
import { swagger } from "@matvp91/elysia-swagger";
33
import { Elysia } from "elysia";
4-
import { session } from "./routes/session";
4+
import { sessionRoutes } from "./routes/session";
55

66
interface CreateAppOptions {
77
aot: boolean;
@@ -25,4 +25,4 @@ export const createApp = ({ aot }: CreateAppOptions) =>
2525
},
2626
}),
2727
)
28-
.use(session);
28+
.use(sessionRoutes);

packages/stitcher/src/routes/session.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Elysia, t } from "elysia";
2-
import { getFilterFromQuery } from "../filters";
2+
import { getFilterFromQuery, getQueryParamsFromFilter } from "../filters";
33
import { decrypt } from "../lib/crypto";
4+
import { makeUrl } from "../lib/url";
45
import {
56
formatAssetList,
67
formatMasterPlaylist,
@@ -13,17 +14,16 @@ import {
1314
processSessionOnMasterReq,
1415
} from "../session";
1516

16-
export const session = new Elysia()
17+
export const sessionRoutes = new Elysia()
1718
.post(
1819
"/session",
1920
async ({ body }) => {
2021
const session = await createSession(body);
2122

2223
const filter = body.filter ?? {};
23-
const url = makeMasterUrl({
24-
url: session.url,
25-
session,
26-
filter,
24+
25+
const url = makeUrl(`session/${session.id}/master.m3u8`, {
26+
...getQueryParamsFromFilter(filter),
2727
});
2828

2929
return { url };
@@ -87,6 +87,27 @@ export const session = new Elysia()
8787
}),
8888
},
8989
)
90+
.get(
91+
"/session/:sessionId/master.m3u8",
92+
async ({ params, query, redirect }) => {
93+
const session = await getSession(params.sessionId);
94+
const url = makeMasterUrl({
95+
url: session.url,
96+
filter: getFilterFromQuery(query),
97+
session,
98+
});
99+
return redirect(url, 302);
100+
},
101+
{
102+
params: t.Object({
103+
sessionId: t.String(),
104+
}),
105+
query: t.Object({
106+
"filter.resolution": t.Optional(t.String()),
107+
"filter.audioLanguage": t.Optional(t.String()),
108+
}),
109+
},
110+
)
90111
.get(
91112
"/out/master.m3u8",
92113
async ({ set, query }) => {
@@ -95,9 +116,7 @@ export const session = new Elysia()
95116
await processSessionOnMasterReq(session);
96117

97118
const filter = getFilterFromQuery(query);
98-
99119
const url = decrypt(query.eurl);
100-
101120
const playlist = await formatMasterPlaylist(url, {
102121
session,
103122
filter,

0 commit comments

Comments
 (0)