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)