Commit 3cd592a2 authored by Mudada's avatar Mudada

Added possibility to manage the number of page you want

parent bd7e0e67
...@@ -6,7 +6,7 @@ import SEARX ...@@ -6,7 +6,7 @@ import SEARX
main :: IO () main :: IO ()
main = do main = do
res <- getMetadataWith "sociology" res <- getMetadataWith "ia" 300
case res of case res of
(Left err) -> print err (Left err) -> print err
(Right r) -> print r (Right r) -> print r
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "someFunc"
...@@ -11,9 +11,31 @@ import SEARX.Client ...@@ -11,9 +11,31 @@ import SEARX.Client
import qualified Data.Text as T import qualified Data.Text as T
getMetadataWith :: T.Text -> IO (Either ClientError Documents) {-
getMetadataWith q = do debug purpose, use getMetadataWith
-}
getMetadataWith2 :: T.Text -> IO (Either ClientError Documents)
getMetadataWith2 q = do
manager' <- newManager tlsManagerSettings manager' <- newManager tlsManagerSettings
runClientM runClientM
(search (Just q) (Just 1) (Just 1) (Just "") (Just All) (Just Json)) (search (Just q) (Just 1) (Just 3) (Just "") (Just All) (Just Json))
(mkClientEnv manager' $ BaseUrl Https "search.iscpif.fr" 443 "") (mkClientEnv manager' $ BaseUrl Https "search.iscpif.fr" 443 "")
specConcatEith :: Semigroup a => Either b a -> Either b a -> Either b a
specConcatEith (Left _) b = b
specConcatEith a (Left _) = a
specConcatEith (Right a) (Right b) = Right $ a <> b
getMetadataWith :: T.Text -> Int -> IO (Either ClientError Documents)
getMetadataWith q i = do
manager' <- newManager tlsManagerSettings
getMetadataWith' manager' q i 1
where client' man = mkClientEnv man $ BaseUrl Https "search.iscpif.fr" 443 ""
search' r' p' = search (Just r') (Just 1) (Just p') (Just "") (Just All) (Just Json)
getMetadataWith' man req maxP curP
| maxP >= curP = do
val <- runClientM (search' req curP) (client' man)
nextVal <- getMetadataWith' man req maxP (curP + 1)
return $ specConcatEith val nextVal
| otherwise = return (Right $ Documents 0 [])
...@@ -44,6 +44,11 @@ data Documents = Documents ...@@ -44,6 +44,11 @@ data Documents = Documents
} deriving (Show, Generic) } deriving (Show, Generic)
L.makeLenses ''Documents L.makeLenses ''Documents
instance Semigroup Documents where
a <> b = Documents
((_documents_total a) + (_documents_total b))
((_documents_hits a) <> (_documents_hits b))
instance FromJSON Documents where instance FromJSON Documents where
parseJSON (Object o) = parseJSON (Object o) =
Documents <$> (o .: "number_of_results") <*> (o .: "results") Documents <$> (o .: "number_of_results") <*> (o .: "results")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment