[graph update] add "force" parameter to force graph recomputation
[gargantext.git] / src / Gargantext / Core / Text / Corpus / Parsers.hs
index 5bd5c0995053dc104d454cad8e5dd88050d6d551..0a30fdb1aab0f239abb60fbaaf6622592cadc695 100644 (file)
@@ -25,8 +25,8 @@ module Gargantext.Core.Text.Corpus.Parsers (FileFormat(..), clean, parseFile, cl
 
 import "zip" Codec.Archive.Zip (withArchive, getEntry, getEntries)
 import Control.Concurrent.Async as CCA (mapConcurrently)
-import Control.Monad (join)
 import Data.Attoparsec.ByteString (parseOnly, Parser)
+import Control.Monad (join)
 import Data.Either(Either(..))
 import Data.Either.Extra (partitionEithers)
 import Data.List (concat, lookup)
@@ -43,6 +43,7 @@ import qualified Data.ByteString.Lazy  as DBL
 import qualified Data.Map              as DM
 import qualified Data.Text             as DT
 import qualified Prelude as Prelude
+import System.IO.Temp (emptySystemTempFile)
 
 import Gargantext.Core (Lang(..))
 import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument(..))
@@ -68,6 +69,7 @@ type ParseError = String
 -- different parser are available.
 data FileFormat = WOS | RIS | RisPresse
                 | CsvGargV3 | CsvHal
+                | ZIP
   deriving (Show)
 
 -- Implemented (ISI Format)
@@ -94,6 +96,12 @@ parseFormat WOS bs = do
           $ partitionEithers
           $ [runParser'  WOS bs]
   pure $ Right docs
+parseFormat ZIP bs = do
+  path <- emptySystemTempFile "parsed-zip"
+  DB.writeFile path bs
+  parsedZip <- withArchive path $ do
+    DM.keys <$> getEntries
+  pure $ Left $ "Not implemented for ZIP, parsedZip" <> show parsedZip
 parseFormat _ _ = undefined
 
 -- | Parse file into documents