Bluesky app fork with some witchin' additions 馃挮
at main 57 lines 1.2 kB view raw
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}