diff --git a/src/Gargantext/API/Node/Document/Export.hs b/src/Gargantext/API/Node/Document/Export.hs index ed6f9396ef34daab3a9b4c6475a5f3d192360081..6d7304eca79f0c1527ca08011f4b24c1b910e47c 100644 --- a/src/Gargantext/API/Node/Document/Export.hs +++ b/src/Gargantext/API/Node/Document/Export.hs @@ -36,16 +36,19 @@ api uid dId = getDocumentsJSON uid dId -- | Hashes are ordered by Set getDocumentsJSON :: UserId -> DocId - -> GargNoServer DocumentExport + -> GargNoServer (Headers '[Header "Content-Disposition" T.Text] DocumentExport) getDocumentsJSON uId pId = do mcId <- getClosestParentIdByType pId NodeCorpus let cId = maybe (panic "[G.A.N.D.Export] Node has no parent") identity mcId docs <- runViewDocuments cId False Nothing Nothing Nothing Nothing Nothing - pure $ DocumentExport { _de_documents = mapFacetDoc <$> docs + pure $ addHeader (T.concat [ "attachment; filename=GarganText_DocsList-" + , T.pack $ show pId + , ".json"]) + DocumentExport { _de_documents = mapFacetDoc <$> docs , _de_garg_version = T.pack $ showVersion PG.version } where mapFacetDoc (FacetDoc { .. }) = - Document { _d_document = + Document { _d_document = Node { _node_id = facetDoc_id , _node_hash_id = Nothing , _node_typename = toDBid NodeDocument @@ -64,10 +67,13 @@ getDocumentsJSON uId pId = do getDocumentsCSV :: UserId -> DocId - -> GargNoServer T.Text -- [Document] + -> GargNoServer (Headers '[Header "Content-Disposition" T.Text] T.Text) -- [Document] getDocumentsCSV uId pId = do - DocumentExport { _de_documents } <- getDocumentsJSON uId pId + dJSON <- getDocumentsJSON uId pId + let DocumentExport { _de_documents } = getResponse dJSON let ret = TE.decodeUtf8 $ BSC.toStrict $ encodeDefaultOrderedByName _de_documents - pure ret - + pure $ addHeader (T.concat [ "attachment; filename=GarganText_DocsList-" + , T.pack $ show pId + , ".csv"]) + ret diff --git a/src/Gargantext/API/Node/Document/Export/Types.hs b/src/Gargantext/API/Node/Document/Export/Types.hs index 08aeacbc2c46fd724358cc0a3448b27de95e84bb..e475845efb06fe71a8974c3376bef0a9323dccaa 100644 --- a/src/Gargantext/API/Node/Document/Export/Types.hs +++ b/src/Gargantext/API/Node/Document/Export/Types.hs @@ -90,9 +90,9 @@ instance ToParamSchema Ngrams where type API = Summary "Document Export" :> "export" :> ( "json" - :> Get '[JSON] DocumentExport + :> Get '[JSON] (Headers '[Servant.Header "Content-Disposition" Text] DocumentExport) :<|> "csv" - :> Get '[PlainText] Text) -- [Document]) + :> Get '[PlainText] (Headers '[Servant.Header "Content-Disposition" Text] Text)) -- [Document]) $(deriveJSON (unPrefix "_de_") ''DocumentExport) $(deriveJSON (unPrefix "_d_") ''Document)