reanimate-0.1.0.0: server/Cache.hs
module Cache (lookupCache, insertCache) where
import Control.Concurrent
import Control.Exception
import qualified Data.IntMap as M
import System.Directory
import System.FilePath
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Data.Text (Text)
import Data.Hashable
valueFilePath :: Text -> IO FilePath
valueFilePath key = do
tmp <- getTemporaryDirectory
return $ tmp </> "reanimate" ++ show (hash key) <.> "svgs"
insertCache :: Text -> [Text] -> IO ()
insertCache key value = do
cacheFile <- valueFilePath key
T.writeFile cacheFile (T.unlines value)
lookupCache :: Text -> IO (Maybe [Text])
lookupCache key = do
cacheFile <- valueFilePath key
do svgs <- T.lines <$> T.readFile cacheFile
evaluate (svgs)
return (Just svgs)
`catch` \SomeException{} -> return Nothing