1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/// Supported audio formats, values here will be mapped by the crate for their string equivalents to be sent with the request.
#[derive(Debug, Copy, Clone)]
pub enum AudioFormats {
    /// `audio/basic`
    AudioBasic,
    /// `audio/flac`
    AudioFlac,
    /// `audio/l16`
    AudioL16,
    /// `audio/ogg`
    AudioOgg,
    /// `audio/ogg;codecs=opus`
    AudioOggCodecsOpus,
    /// `audio/ogg;codecs=vorbis`
    AudioOggCodecsVorbis,
    /// `audio/mp3`
    AudioMp3,
    /// `audio/mpeg`
    AudioMpeg,
    /// `audio/mulaw`
    AudioMulaw,
    /// `audio/wav`
    AudioWav,
    /// `audio/webm`
    AudioWebm,
    /// `audio/webm;codecs=opus`
    AudioWebmCodecsOpus,
    /// `audio/webm;codecs=vorbis`
    AudioWebmCodecsVorbis,
}
/// `AudioOggCodecsOpus`
impl Default for AudioFormats {
    fn default() -> Self {
        Self::AudioOggCodecsOpus
    }
}

pub(crate) fn map_audio_format(format: AudioFormats) -> &'static str {
    match format {
        AudioFormats::AudioBasic => "audio/basic",
        AudioFormats::AudioFlac => "audio/flac",
        AudioFormats::AudioL16 => "audio/l16",
        AudioFormats::AudioOgg => "audio/ogg",
        AudioFormats::AudioOggCodecsOpus => "audio/ogg;codecs=opus",
        AudioFormats::AudioOggCodecsVorbis => "audio/ogg;codecs=vorbis",
        AudioFormats::AudioMp3 => "audio/mp3",
        AudioFormats::AudioMpeg => "audio/mpeg",
        AudioFormats::AudioMulaw => "audio/mulaw",
        AudioFormats::AudioWav => "audio/wav",
        AudioFormats::AudioWebm => "audio/webm",
        AudioFormats::AudioWebmCodecsOpus => "audio/webm;codecs=opus",
        AudioFormats::AudioWebmCodecsVorbis => "audio/webm;codecs=vorbis",
    }
}