export type HeadApiAudioItemIdUniversalArgs = {itemId: string, container?: (Array | null) | undefined, mediaSourceId?: (string | null) | undefined, deviceId?: (string | null) | undefined, userId?: (string | null) | undefined, audioCodec?: (string | null) | undefined, maxAudioChannels?: (number | null) | undefined, transcodingAudioChannels?: (number | null) | undefined, maxStreamingBitrate?: (number | null) | undefined, audioBitRate?: (number | null) | undefined, startTimeTicks?: (number | null) | undefined, transcodingContainer?: (string | null) | undefined, transcodingProtocol?: (string | null) | undefined, maxAudioSampleRate?: (number | null) | undefined, maxAudioBitDepth?: (number | null) | undefined, enableRemoteMedia?: (boolean | null) | undefined, breakOnNonKeyFrames?: boolean | undefined, enableRedirection?: boolean | undefined}; export type HeadApiAudioItemIdUniversalOptions = {baseUrl?: string | undefined, CustomAuthentication?: string | undefined, fetch?: typeof fetch | undefined}; /** * Gets an audio stream. * * HEAD /Audio/{itemId}/universal */ export const headApiAudioItemIdUniversal = async (args: HeadApiAudioItemIdUniversalArgs, options?: HeadApiAudioItemIdUniversalOptions) => { const {baseUrl = "http://localhost", fetch: fetchFn = fetch, CustomAuthentication} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "audio/*") for (const item of args.container ?? []) query.append("container", String(item)) if (args.mediaSourceId != null) query.append("mediaSourceId", String(args.mediaSourceId)) if (args.deviceId != null) query.append("deviceId", String(args.deviceId)) if (args.userId != null) query.append("userId", String(args.userId)) if (args.audioCodec != null) query.append("audioCodec", String(args.audioCodec)) if (args.maxAudioChannels != null) query.append("maxAudioChannels", String(args.maxAudioChannels)) if (args.transcodingAudioChannels != null) query.append("transcodingAudioChannels", String(args.transcodingAudioChannels)) if (args.maxStreamingBitrate != null) query.append("maxStreamingBitrate", String(args.maxStreamingBitrate)) if (args.audioBitRate != null) query.append("audioBitRate", String(args.audioBitRate)) if (args.startTimeTicks != null) query.append("startTimeTicks", String(args.startTimeTicks)) if (args.transcodingContainer != null) query.append("transcodingContainer", String(args.transcodingContainer)) if (args.transcodingProtocol != null) query.append("transcodingProtocol", String(args.transcodingProtocol)) if (args.maxAudioSampleRate != null) query.append("maxAudioSampleRate", String(args.maxAudioSampleRate)) if (args.maxAudioBitDepth != null) query.append("maxAudioBitDepth", String(args.maxAudioBitDepth)) if (args.enableRemoteMedia != null) query.append("enableRemoteMedia", String(args.enableRemoteMedia)) if (args.breakOnNonKeyFrames != null) query.append("breakOnNonKeyFrames", String(args.breakOnNonKeyFrames)) if (args.enableRedirection != null) query.append("enableRedirection", String(args.enableRedirection)) if (CustomAuthentication !== undefined) headers.set("X-Emby-Authorization", CustomAuthentication) const url = `${baseUrl.replace(/\/+$/, '')}/Audio/${encodeURIComponent(String(args.itemId))}/universal${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "HEAD", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return res.blob() };