X-Git-Url: https://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FResource%2FSearch.hs;h=3f5a869c4def3d64d3e5de0fdd0ae18df1b3754c;hp=7318e30b34845b9bb01aa4ef65fd8b38cd86976d;hb=706ee842873fdceb9465cdf6a583176ab855fae2;hpb=a4b849476ee3a204ea91dee8f3fd235b0b33a10a diff --git a/Rakka/Resource/Search.hs b/Rakka/Resource/Search.hs index 7318e30..3f5a869 100644 --- a/Rakka/Resource/Search.hs +++ b/Rakka/Resource/Search.hs @@ -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 + {- 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