Skip to content

Commit

Permalink
fix: URLの取得に失敗したときビデオ切り替え等に失敗する不具合への対処
Browse files Browse the repository at this point in the history
  • Loading branch information
kou029w committed Apr 12, 2021
1 parent 54adb16 commit 5371ae0
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 4 deletions.
46 changes: 46 additions & 0 deletions utils/eventLogger/getFilePath.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import getFilePath from "./getFilePath";

test("YouTube Video IDが得られる", () => {
expect(
getFilePath({
providerUrl: "https://www.youtube.com/",
url: "https://www.youtube.com/watch?v=aqz-KE-bpKQ",
})
).toBe("aqz-KE-bpKQ");
});

test("Vimeo Video IDが得られる", () => {
expect(
getFilePath({
providerUrl: "https://vimeo.com/",
url: "https://vimeo.com/253989945",
})
).toBe("253989945");
});

test("Wowzaのファイルパスが得られる", () => {
expect(
getFilePath({
providerUrl: "https://example/",
url: "https://example/api/v2/wowza/sample.mp4",
})
).toBe("sample.mp4");
});

test("YouTube Video IDの取得失敗", () => {
expect(
getFilePath({
providerUrl: "https://www.youtube.com/",
url: "https://www.youtube.com/",
})
).toBe(undefined);
});

test("URLが空", () => {
expect(
getFilePath({
providerUrl: "https://vimeo.com/",
url: "",
})
).toBe(undefined);
});
27 changes: 27 additions & 0 deletions utils/eventLogger/getFilePath.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import getValidUrl from "$utils/getValidUrl";

/**
* ビデオリソースURLをv1イベントオブジェクトのfileパラメーターに変換
* @param e.providerUrl 動画プロバイダーの識別子
* @param e.url URL
* @return v1イベントオブジェクトのfileパラメーター
*/
function getFilePath({
providerUrl,
url,
}: {
providerUrl: string | null;
url: string;
}) {
const validUrl = getValidUrl(url);
// TODO: URLの取得に失敗し "" が得られる不具合が解決すればこの処理はおそらく不要
if (!validUrl) return;

if (providerUrl === "https://www.youtube.com/") {
return new URLSearchParams(url.split("?")[1]).get("v") ?? undefined;
}

return validUrl.pathname.replace(/^\/(?:api\/v2\/wowza\/)?/, "");
}

export default getFilePath;
6 changes: 2 additions & 4 deletions utils/eventLogger/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { EventType } from "$server/models/event";
import { api } from "$utils/api";
import { PlayerEvent, PlayerEvents, PlayerTracker } from "./playerTracker";
import { load } from "./loggerSessionPersister";
import getFilePath from "./getFilePath";

/** v1のときのトラッキング用コードの移植 */
function send(eventType: EventType, event: PlayerEvent, detail?: string) {
Expand All @@ -12,10 +13,7 @@ function send(eventType: EventType, event: PlayerEvent, detail?: string) {
const body = {
event: eventType,
detail,
file:
event.providerUrl === "https://www.youtube.com/"
? new URLSearchParams(event.url.split("?")[1]).get("v") ?? undefined
: new URL(event.url).pathname.replace(/^\/(?:api\/v2\/wowza\/)?/, ""),
file: getFilePath(event),
query: event.url.split("?")[1],
current: event.currentTime.toString(),
rid: id(ltiLaunchBody.resource_link_id),
Expand Down
1 change: 1 addition & 0 deletions utils/getValidUrl.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default } from "$server/utils/getValidUrl";

0 comments on commit 5371ae0

Please sign in to comment.