{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}

module AWS.Transcribe.Settings where

import qualified Data.Text as T

-- | Transcribe session specific settings
data Settings = MkSettings
    { Settings -> LanguageCode
languageCode :: LanguageCode
    , Settings -> MediaEncoding
mediaEncoding :: MediaEncoding
    , Settings -> Word
sampleRate :: Word
    , Settings -> Region
region :: Region
    }

-- | The language code for the input audio.
data LanguageCode
    = EnAU
    | EnGB
    | EnUS
    | EsUS
    | FrCA
    | FrFR
    | DeDE
    | JaJP
    | KoKR
    | PtBR
    | ZhCN
    | ItIT

langCode :: LanguageCode -> T.Text
langCode :: LanguageCode -> Text
langCode = \case
    LanguageCode
EnAU -> Text
"en-AU"
    LanguageCode
EnGB -> Text
"en-GB"
    LanguageCode
EnUS -> Text
"en-US"
    LanguageCode
EsUS -> Text
"es-US"
    LanguageCode
FrCA -> Text
"fr-CA"
    LanguageCode
FrFR -> Text
"fr-FR"
    LanguageCode
DeDE -> Text
"de-DE"
    LanguageCode
JaJP -> Text
"ja-JP"
    LanguageCode
KoKR -> Text
"ko-KR"
    LanguageCode
PtBR -> Text
"pt-BR"
    LanguageCode
ZhCN -> Text
"zh-CN"
    LanguageCode
ItIT -> Text
"it-IT"

-- | The encoding used for the input audio
data MediaEncoding
    = PCM
    | OggOpus
    | Flac

meToText :: MediaEncoding -> T.Text
meToText :: MediaEncoding -> Text
meToText = \case
    MediaEncoding
PCM -> Text
"pcm"
    MediaEncoding
OggOpus -> Text
"ogg-opus"
    MediaEncoding
Flac -> Text
"flac"

-- | Amazon Transcribe Streaming regions
data Region
    = USEast1
    | USEast2
    | USWest2
    | APNorthEast1
    | APNorthEast2
    | APSouthEast2
    | CACentral1
    | EUCentral1
    | EUWest1
    | EUWest2
    | SAEast1

rgToText :: Region -> T.Text
rgToText :: Region -> Text
rgToText = \case
    Region
USEast1 -> Text
"us-east-1"
    Region
USEast2 -> Text
"us-east-2"
    Region
USWest2 -> Text
"us-west-2"
    Region
APNorthEast1 -> Text
"ap-northeast-1"
    Region
APNorthEast2 -> Text
"ap-northeast-2"
    Region
APSouthEast2 -> Text
"ap-southeast-2"
    Region
CACentral1 -> Text
"ca-central-1"
    Region
EUCentral1 -> Text
"eu-central-1"
    Region
EUWest1 -> Text
"eu-west-1"
    Region
EUWest2 -> Text
"eu-west-2"
    Region
SAEast1 -> Text
"sa-east-1"

srToText :: Word -> T.Text
srToText :: Word -> Text
srToText = String -> Text
T.pack (String -> Text) -> (Word -> String) -> Word -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word -> String
forall a. Show a => a -> String
show