Commit 206041e4 authored by Mael NICOLAS's avatar Mael NICOLAS

Linked with pandoc

parent e152e7c6
......@@ -2,7 +2,9 @@ module Main where
import BBW.API
import System.Environment
import qualified Data.Text.IO as T
import qualified Data.Text.IO as TIO
import Text.Pandoc
import Servant.Client
{--
P,Pu:/api/processHeaderDocument
......@@ -25,10 +27,16 @@ consolidateCitations 0 || 1
P-}
toPAST :: Either ServantError TEI -> IO ()
toPAST (Right (TEI x)) = do
result <- runIO $ do
readMarkdown def x
rst <- handleError result
print rst
toPAST (Left err) = print err
main :: IO ()
main = do
[filePath] <- getArgs
res <- queries filePath
case res of
Left err -> print err
Right x -> T.putStrLn x
toPAST res
......@@ -38,7 +38,8 @@ dependencies:
- mime-types
- bytestring
- case-insensitive
- servant-xml
- unordered-containers
- pandoc
library:
source-dirs: src
......
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module BBW.API where
import Control.Monad.IO.Class
import Data.Proxy
import BBW.Multipart
import Network.HTTP.Client (newManager, Manager, defaultManagerSettings)
import BBW.Multipart
import Servant.API
import Servant.API.ContentTypes
import Servant.Client
import Servant.Multipart
import System.Environment
import Servant.XML
import qualified Network.HTTP.Media as M
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TL
-- was MultipartData Mem
newtype TEI = TEI T.Text
instance Accept TEI where
contentType _ = "application" M.// "xml"
instance MimeUnrender TEI TEI where
mimeUnrender _ b = Right . TEI . TL.toStrict $ TL.decodeUtf8 b
type GrobidAPI =
"processHeaderDocument" :> Header "Accept" T.Text :> MultipartForm Tmp (MultipartData Mem) :> Post '[XML] T.Text
:<|> "process" :> Header "Accept" T.Text :> MultipartForm Tmp (MultipartData Mem) :> Post '[XML] T.Text
"processHeaderDocument" :> MultipartForm Tmp (MultipartData Mem) :> Post '[TEI] TEI
:<|> "processFulltextDocument" :> MultipartForm Tmp (MultipartData Mem) :> Post '[TEI] TEI
-- processHeaderDocument :: FilePath -> ClientM T.Text
processHeaderDocument :: Maybe T.Text -> MultipartData Mem -> ClientM T.Text
process :: Maybe T.Text -> MultipartData Mem -> ClientM T.Text
processHeaderDocument :: MultipartData Mem -> ClientM TEI
processFulltextDocument :: MultipartData Mem -> ClientM TEI
grobidAPI :: Proxy GrobidAPI
grobidAPI = Proxy
processHeaderDocument :<|> process = client grobidAPI
-- fileTest :: FilePath
-- fileTest = "/home/mudada/Code/Haskell/grobid-binding/files"
processHeaderDocument :<|> processFulltextDocument = client grobidAPI
queries :: FilePath -> IO (Either ServantError T.Text)
queries :: FilePath -> IO (Either ServantError TEI)
queries filePath = do
fileContents <- liftIO $ LBS.readFile filePath
manager <- newManager defaultManagerSettings
......@@ -51,7 +59,7 @@ queries filePath = do
{ inputs = []
, files = [fileData]
}
c = processHeaderDocument (Just $ T.pack "application/xml") multipartData
c = processFulltextDocument multipartData
baseUrl = BaseUrl Http "localhost" 8080 "api"
env = mkClientEnv manager baseUrl
runClientM c env
module BBW.Type where
module BBW.XML where
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