diff options
Diffstat (limited to 'src/lib/media/video/util.ts')
-rw-r--r-- | src/lib/media/video/util.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/lib/media/video/util.ts b/src/lib/media/video/util.ts new file mode 100644 index 000000000..87b422c2c --- /dev/null +++ b/src/lib/media/video/util.ts @@ -0,0 +1,53 @@ +import {AtpAgent} from '@atproto/api' + +import {SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants' + +export const createVideoEndpointUrl = ( + route: string, + params?: Record<string, string>, +) => { + const url = new URL(VIDEO_SERVICE) + url.pathname = route + if (params) { + for (const key in params) { + url.searchParams.set(key, params[key]) + } + } + return url.href +} + +export function createVideoAgent() { + return new AtpAgent({ + service: VIDEO_SERVICE, + }) +} + +export function mimeToExt(mimeType: SupportedMimeTypes | (string & {})) { + switch (mimeType) { + case 'video/mp4': + return 'mp4' + case 'video/webm': + return 'webm' + case 'video/mpeg': + return 'mpeg' + case 'video/quicktime': + return 'mov' + default: + throw new Error(`Unsupported mime type: ${mimeType}`) + } +} + +export function extToMime(ext: string) { + switch (ext) { + case 'mp4': + return 'video/mp4' + case 'webm': + return 'video/webm' + case 'mpeg': + return 'video/mpeg' + case 'mov': + return 'video/quicktime' + default: + throw new Error(`Unsupported file extension: ${ext}`) + } +} |