module Clckwrks.IrcBot.Page.IrcLog where
import Control.Applicative ((<$>))
import Control.Monad.Reader (ask)
import Clckwrks
import Clckwrks.IrcBot.Monad
import Clckwrks.IrcBot.Page.Template (template)
import Data.List (sort)
import Data.Text (pack)
import Data.Text.IO as T (readFile)
import Happstack.Server.FileServe.BuildingBlocks (isSafePath)
import System.Directory
import System.FilePath
import HSP.XMLGenerator
import HSP.XML
import Happstack.Server
import Happstack.Server.HSP.HTML
ircLog :: FilePath -> IrcBotM Response
ircLog logFile =
if isSafePath (splitDirectories logFile)
then case takeExtension logFile of
".txt" ->
do logDir <- ircBotLogDirectory <$> ask
c <- liftIO $ T.readFile (logDir </> logFile)
template (pack logFile) () <pre><% c %></pre>
".html" ->
do logDir <- ircBotLogDirectory <$> ask
serveFile (asContentType "text/html; charset=UTF-8") (logDir </> logFile)
_ -> notFound $ toResponse $ "not sure what to do with " ++ logFile
else do unauthorized $ toResponse $ "Access Denied to file " ++ logFile