+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
+ }