module NLP.GenI.Client where
import qualified Data.ByteString as B
import Data.Text as T
import Data.Text.Encoding as T
import Data.Word (Word16)
import Network.Http.Client
import NLP.GenI
import NLP.GenI.Server.Instruction as Geni
import System.IO.Streams (InputStream, OutputStream, stdout)
import qualified System.IO.Streams as Streams
import qualified Text.JSON as Json
realise :: B.ByteString
-> Word16
-> [String]
-> T.Text
-> IO (Json.Result GeniResults)
realise server port params sem = do
c <- openConnection server port
q <- buildRequest $ do
http POST "/dump"
semStream <- Streams.fromByteString (toJson instr)
sendRequest c q (inputStreamBody semStream)
resp <- receiveResponse c concatHandler
closeConnection c
return (fromJson resp)
where
instr = Geni.ServerInstruction params (T.unpack sem)
toJson = T.encodeUtf8 . T.pack . Json.encode
fromJson = Json.decode . T.unpack . T.decodeUtf8