]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Search.hs
Fixed breakage on newer HXT
[Rakka.git] / Rakka / Resource / Search.hs
index 7318e30b34845b9bb01aa4ef65fd8b38cd86976d..3f5a869c4def3d64d3e5de0fdd0ae18df1b3754c 100644 (file)
@@ -3,8 +3,9 @@ module Rakka.Resource.Search
     )
     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
@@ -45,6 +46,11 @@ maxSectionWindowSize :: Int
 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"
@@ -62,12 +68,12 @@ handleSearch :: Environment -> Resource ()
 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