Skip to content

Commit 0bdd1fd

Browse files
committed
Revert to GET with query param
1 parent 7496700 commit 0bdd1fd

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

server/Main.hs

+21-10
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ import qualified Data.Aeson as A
1919
import Data.Aeson ((.=))
2020
import Data.Bifunctor (first, second, bimap)
2121
import qualified Data.ByteString as BS
22-
import qualified Data.ByteString.Char8 as BS.Char8
2322
import qualified Data.ByteString.Lazy as BL
2423
import qualified Data.ByteString.Lazy.Char8 as BL.Char8
2524
import Data.Default (def)
26-
import Data.Function (on, fix)
25+
import Data.Function (on)
2726
import qualified Data.IORef as IORef
2827
import Data.List (nubBy)
2928
import qualified Data.List.NonEmpty as NE
@@ -52,7 +51,6 @@ import System.Environment (getArgs)
5251
import System.Exit (exitFailure)
5352
import System.FilePath.Glob (glob)
5453
import qualified System.IO as IO
55-
import System.IO (BufferMode(NoBuffering))
5654
import qualified System.Process as Process
5755
import Web.Scotty
5856
import qualified Web.Scotty as Scotty
@@ -120,7 +118,6 @@ buildMakeActions codegenRef =
120118
outputPrimDocs :: Make.Make ()
121119
outputPrimDocs = pure ()
122120

123-
124121
server :: [P.ExternsFile] -> P.Env -> P.Environment -> Int -> String -> IO ()
125122
server externs initNamesEnv initEnv port pursIDEPortString = do
126123
codegenRef <- IORef.newIORef Nothing
@@ -166,19 +163,33 @@ server externs initNamesEnv initEnv port pursIDEPortString = do
166163
Right (warnings, comp) ->
167164
Scotty.json $ A.object [ "js" .= comp, "warnings" .= warnings ]
168165

169-
post "/complete" $ do
166+
get "/complete" $ do
167+
query <- param "q"
170168
Scotty.setHeader "Access-Control-Allow-Origin" "*"
171169
Scotty.setHeader "Content-Type" "application/json"
170+
let mkCommand q = A.encode $ A.object
171+
[ "command" .= ("complete" :: Text)
172+
, "params" .= A.object
173+
[ "filters" .= A.Array
174+
( V.fromList
175+
[ A.object
176+
[ "filter" .= ("prefix" :: Text)
177+
, "params" .= A.object
178+
[ "search" .= q ]
179+
]
180+
]
181+
)
182+
]
183+
]
172184
(Just handleIn, Just handleOut, _, _) <- liftIO $
173185
Process.createProcess_
174186
"purs-ide-client"
175187
(Process.proc "purs" ["ide", "client", "-p", pursIDEPortString])
176188
{ Process.std_in = Process.CreatePipe
177189
, Process.std_out = Process.CreatePipe
178190
}
179-
liftIO (IO.hSetBuffering handleIn NoBuffering)
180-
command <- BL.Char8.toStrict <$> body
181-
liftIO (BS.Char8.hPutStrLn handleIn command)
191+
liftIO (IO.hSetBuffering handleIn IO.NoBuffering)
192+
liftIO (BL.Char8.hPutStrLn handleIn (mkCommand (query :: Text)))
182193
result <- liftIO (BS.hGetContents handleOut)
183194
Scotty.text (TL.fromStrict (T.decodeUtf8 result))
184195

@@ -265,6 +276,6 @@ main = do
265276
case e of
266277
Left err -> print err >> exitFailure
267278
Right (exts, namesEnv, env) -> do
268-
let ideServer = Process.proc "purs" ("ide":"server":"-p":pursIDEPortString:inputGlobs)
269-
Process.withCreateProcess ideServer $
279+
let pursIDEServer = Process.proc "purs" ("ide":"server":"-p":pursIDEPortString:inputGlobs)
280+
Process.withCreateProcess pursIDEServer $
270281
\_ _ _ _ -> server exts namesEnv env port pursIDEPortString

0 commit comments

Comments
 (0)