Commit 5de2890b authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[upload] arbitrary file saving to endpoint works now

parent 5dd90077
...@@ -26,6 +26,7 @@ import Data.Either ...@@ -26,6 +26,7 @@ import Data.Either
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Data.Swagger import Data.Swagger
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text.IO as TIO
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Servant import Servant
import Servant.Job.Core import Servant.Job.Core
...@@ -38,6 +39,7 @@ import Web.FormUrlEncoded (FromForm) ...@@ -38,6 +39,7 @@ import Web.FormUrlEncoded (FromForm)
import Gargantext.API.Admin.Orchestrator.Types (JobLog(..)) import Gargantext.API.Admin.Orchestrator.Types (JobLog(..))
import qualified Gargantext.API.Admin.Orchestrator.Types as T import qualified Gargantext.API.Admin.Orchestrator.Types as T
import Gargantext.API.Admin.Settings (HasSettings)
import Gargantext.API.Node.Corpus.New.File import Gargantext.API.Node.Corpus.New.File
import Gargantext.Core (Lang(..){-, allLangs-}) import Gargantext.Core (Lang(..){-, allLangs-})
import Gargantext.Core.Types.Individu (User(..)) import Gargantext.Core.Types.Individu (User(..))
...@@ -46,6 +48,7 @@ import Gargantext.Database.Action.Flow (FlowCmdM, flowCorpus, getDataText, flowD ...@@ -46,6 +48,7 @@ import Gargantext.Database.Action.Flow (FlowCmdM, flowCorpus, getDataText, flowD
import Gargantext.Database.Admin.Types.Hyperdata import Gargantext.Database.Admin.Types.Hyperdata
import Gargantext.Database.Admin.Types.Node (CorpusId, UserId) import Gargantext.Database.Admin.Types.Node (CorpusId, UserId)
import Gargantext.Prelude import Gargantext.Prelude
import qualified Gargantext.Prelude.Utils as GPU
import qualified Gargantext.Text.Corpus.API as API import qualified Gargantext.Text.Corpus.API as API
import qualified Gargantext.Text.Corpus.Parsers as Parser (FileFormat(..), parseFormat) import qualified Gargantext.Text.Corpus.Parsers as Parser (FileFormat(..), parseFormat)
...@@ -180,6 +183,12 @@ instance FromJSON NewWithFile where ...@@ -180,6 +183,12 @@ instance FromJSON NewWithFile where
instance ToSchema NewWithFile where instance ToSchema NewWithFile where
declareNamedSchema = genericDeclareNamedSchema (unPrefixSwagger "_wfi_") declareNamedSchema = genericDeclareNamedSchema (unPrefixSwagger "_wfi_")
instance GPU.SaveFile NewWithFile where
saveFile' fp (NewWithFile d _ _) = TIO.writeFile fp d
--instance GPU.ReadFile NewWithFile where
-- readFile' = TIO.readFile
------------------------------------------------------------------------ ------------------------------------------------------------------------
type AsyncJobs event ctI input output = type AsyncJobs event ctI input output =
AsyncJobsAPI' 'Unsafe 'Safe ctI '[JSON] Maybe event input output AsyncJobsAPI' 'Unsafe 'Safe ctI '[JSON] Maybe event input output
...@@ -332,13 +341,13 @@ type AddWithFile = Summary "Add with FileUrlEncoded to corpus endpoint" ...@@ -332,13 +341,13 @@ type AddWithFile = Summary "Add with FileUrlEncoded to corpus endpoint"
:> "async" :> "async"
:> AsyncJobs JobLog '[FormUrlEncoded] NewWithFile JobLog :> AsyncJobs JobLog '[FormUrlEncoded] NewWithFile JobLog
addToCorpusWithFile :: FlowCmdM env err m addToCorpusWithFile :: (HasSettings env, FlowCmdM env err m)
=> User => User
-> CorpusId -> CorpusId
-> NewWithFile -> NewWithFile
-> (JobLog -> m ()) -> (JobLog -> m ())
-> m JobLog -> m JobLog
addToCorpusWithFile _user cid (NewWithFile _d _l _n) logStatus = do addToCorpusWithFile _user cid nwf@(NewWithFile _d _l _n) logStatus = do
printDebug "[addToCorpusWithForm] Uploading file to corpus: " cid printDebug "[addToCorpusWithForm] Uploading file to corpus: " cid
logStatus JobLog { _scst_succeeded = Just 0 logStatus JobLog { _scst_succeeded = Just 0
...@@ -347,6 +356,9 @@ addToCorpusWithFile _user cid (NewWithFile _d _l _n) logStatus = do ...@@ -347,6 +356,9 @@ addToCorpusWithFile _user cid (NewWithFile _d _l _n) logStatus = do
, _scst_events = Just [] , _scst_events = Just []
} }
fp <- GPU.writeFile nwf
printDebug "File saved as: " fp
printDebug "File upload to corpus finished: " cid printDebug "File upload to corpus finished: " cid
pure $ JobLog { _scst_succeeded = Just 1 pure $ JobLog { _scst_succeeded = Just 1
, _scst_failed = Just 0 , _scst_failed = Just 0
......
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