)
where
-import qualified Codec.Binary.UTF8.String as UTF8
+import qualified Codec.Binary.UTF8.Generic as UTF8
import Control.Monad.Trans
+import Data.List
import Data.Maybe
import Data.Time
import Network.HTTP.Lucu
maxSectionWindowSize = 10
+findQueryParam :: String -> [FormData] -> Maybe String
+findQueryParam name qps
+ = do fd <- find (\ qp -> fdName qp == name) qps
+ return $ UTF8.toString $ fdContent fd
+
{-
<searchResult query="foo bar baz"
from="0"
handleSearch env
= do params <- getQueryForm
- let query = UTF8.decodeString $ fromMaybe "" $ lookup "q" params
- order = fmap UTF8.decodeString (lookup "order" params)
+ let query = fromMaybe "" $ findQueryParam "q" params
+ order = findQueryParam "order" params
from = fromMaybe 0
- $ fmap read $ lookup "from" params
+ $ fmap read $ findQueryParam "from" params
to = fromMaybe (from + resultsPerSection)
- $ fmap read $ lookup "to" params
+ $ fmap read $ findQueryParam "to" params
cond <- liftIO $ mkCond query order from to
result <- searchPages (envStorage env) cond