]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Search.hs
Resurrection from slight bitrot.
[Rakka.git] / Rakka / Resource / Search.hs
index c46d40152c34f4ab25e8c43f8e2afe8c9af81e07..423bfdc3f32b921393c95892362dbf920f29431d 100644 (file)
@@ -3,13 +3,9 @@ module Rakka.Resource.Search
     )
     where
 
-import qualified Codec.Binary.UTF8.String as UTF8
-import           Control.Arrow
-import           Control.Arrow.ArrowIO
-import           Control.Arrow.ArrowIf
-import           Control.Arrow.ArrowList
-import           Control.Arrow.ArrowTree
+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
@@ -25,10 +21,8 @@ import           Rakka.W3CDateTime
 import           Rakka.Wiki.Engine
 import           System.FilePath
 import           Text.HyperEstraier hiding (getText)
-import           Text.XML.HXT.Arrow.Namespace
-import           Text.XML.HXT.Arrow.XmlArrow
-import           Text.XML.HXT.Arrow.XmlNodeSet
-import           Text.XML.HXT.DOM.TypeDefs
+import           Text.XML.HXT.Arrow
+import           Text.XML.HXT.XPath
 
 
 resSearch :: Environment -> ResourceDef
@@ -52,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"
@@ -69,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