import Control.Arrow.ArrowIO
import Control.Concurrent.STM
+import Control.Monad
import Control.Monad.Trans
import qualified Data.ByteString.Char8 as C8
import Data.Dynamic
instance SysConfValue BaseURI where
confPath _ = "baseURI"
serialize (BaseURI uri) = uriToString id uri ""
- deserialize uri = fmap BaseURI (parseURI uri)
+ deserialize uri = fmap BaseURI
+ $ do parsed <- parseURI uri
+ when (uriPath parsed == "" ) (fail undefined)
+ when (last (uriPath parsed) /= '/') (fail undefined)
+ when (uriQuery parsed /= "" ) (fail undefined)
+ when (uriFragment parsed /= "" ) (fail undefined)
+ return parsed
defaultValue sc
= let conf = scLucuConf sc
host = C8.unpack $ LC.cnfServerHost conf