packages feed

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