module Rakka.Plugin ( Plugin(..) , RequestHandler , RequestContext(..) ) where import Data.Typeable import Network.HTTP.Lucu import Rakka.Wiki.Interpreter import Rakka.Storage import Rakka.SystemConfig data Plugin = Plugin { pinInterpreters :: ![Interpreter] , pinRequestHandlers :: ![RequestHandler] } deriving (Typeable) type RequestHandler = RequestContext -> [String] -> IO (Maybe ResourceDef) data RequestContext = RequestContext { rcStorage :: !Storage , rcSysConf :: !SystemConfig }