1 {-# LANGUAGE OverloadedStrings #-} 2 module Store.Types 3 ( Transcoder(..) 4 , TranscoderConfig (..) 5 , Storage(..) 6 , getStorageTempParticipantUpload' 7 , getStorageTempParticipantUpload 8 , MonadStorage 9 ) where 10 11 import Control.Monad.IO.Class (MonadIO) 12 import qualified Data.ByteString.Char8 as BSC 13 import Data.Monoid ((<>)) 14 import System.Posix.FilePath ((</>)) 15 16 import Has (MonadHas) 17 import Files 18 19 -- | Transcoder config options 20 data TranscoderConfig = TranscoderConfig 21 { transcoderHost :: Maybe String 22 , transcoderDir :: Maybe FilePath 23 , transcoderMount :: Maybe String 24 } 25 26 {-# DEPRECATED transcoderArgs "This should be built out of transcoderConfig when needed, rather than baked in." #-} 27 data Transcoder = Transcoder 28 { transcoderCmd :: !FilePath 29 , transcoderArgs :: ![String] 30 , transcoderConfig :: TranscoderConfig 31 -- ^ Config options used to build this value via 'initTranscoder' 32 } 33 34 data Storage = Storage 35 { storageMaster :: !RawFilePath 36 , storageFallback :: !(Maybe RawFilePath) 37 , storageTemp :: !RawFilePath 38 , storageUpload :: !RawFilePath 39 , storageCache :: !(Maybe RawFilePath) 40 , storageStage :: !(Maybe RawFilePath) 41 , storageTranscoder :: !(Maybe Transcoder) 42 } 43 44 getStorageTempParticipantUpload' :: FilePath -> FilePath 45 getStorageTempParticipantUpload' tempPath = tempPath <> "participantUpload" 46 47 getStorageTempParticipantUpload :: String -> Storage -> RawFilePath 48 getStorageTempParticipantUpload uploadFile s = 49 storageTemp s </> "participantUpload" </> BSC.pack uploadFile 50 51 type MonadStorage c m = (MonadHas Storage c m, MonadIO m)