forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {AtpAgent} from '@atproto/api'
2
3import {type SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants'
4
5export const createVideoEndpointUrl = (
6 route: string,
7 params?: Record<string, string>,
8) => {
9 const url = new URL(VIDEO_SERVICE)
10 url.pathname = route
11 if (params) {
12 for (const key in params) {
13 url.searchParams.set(key, params[key])
14 }
15 }
16 return url.href
17}
18
19export function createVideoAgent() {
20 return new AtpAgent({
21 service: VIDEO_SERVICE,
22 })
23}
24
25export function mimeToExt(mimeType: SupportedMimeTypes | (string & {})) {
26 switch (mimeType) {
27 case 'video/mp4':
28 return 'mp4'
29 case 'video/webm':
30 return 'webm'
31 case 'video/mpeg':
32 return 'mpeg'
33 case 'video/quicktime':
34 return 'mov'
35 case 'image/gif':
36 return 'gif'
37 default:
38 throw new Error(`Unsupported mime type: ${mimeType}`)
39 }
40}
41
42export function extToMime(ext: string) {
43 switch (ext.toLowerCase()) {
44 case 'mp4':
45 return 'video/mp4'
46 case 'webm':
47 return 'video/webm'
48 case 'mpeg':
49 return 'video/mpeg'
50 case 'mov':
51 return 'video/quicktime'
52 case 'gif':
53 return 'image/gif'
54 default:
55 throw new Error(`Unsupported file extension: ${ext}`)
56 }
57}