@@ -2,22 +2,23 @@ module Test.Main where
22
33import Prelude
44
5+ import Node.Encoding (Encoding (..))
6+ import Node.HTTP (HTTP , listen , createServer , setHeader , requestMethod , requestURL , responseAsStream , requestAsStream , setStatusCode )
7+ import Node.Stream (Writable , end , pipe , writeString )
8+ import Node.HTTP.Client as Client
9+ import Control.Monad.Eff (Eff )
10+ import Control.Monad.Eff.Console (CONSOLE , log )
511import Data.Foldable (foldMap )
6- import Data.Options
7-
8- import Control.Monad.Eff.Console
9-
10- import Node.HTTP
11- import qualified Node.HTTP.Client as Client
12- import Node.Stream
13- import Node.Encoding
12+ import Partial.Unsafe (unsafeCrashWith )
1413
1514foreign import stdout :: forall eff r . Writable r eff
1615
16+ main :: forall eff . Eff (console :: CONSOLE , http :: HTTP | eff ) Unit
1717main = do
1818 testBasic
1919 testHttps
2020
21+ testBasic :: forall eff . Eff (console :: CONSOLE , http :: HTTP | eff ) Unit
2122testBasic = do
2223 server <- createServer respond
2324 listen server 8080 $ void do
@@ -31,24 +32,27 @@ testBasic = do
3132 log (requestMethod req <> " " <> requestURL req)
3233 case requestMethod req of
3334 " GET" -> do
34- let html = foldMap (<> " \n " )
35+ let html = foldMap (_ <> " \n " )
3536 [ " <form method='POST' action='/'>"
3637 , " <input name='text' type='text'>"
3738 , " <input type='submit'>"
3839 , " </form>"
3940 ]
4041 setHeader res " Content-Type" " text/html"
41- writeString outputStream UTF8 html(return unit)
42- end outputStream (return unit)
42+ writeString outputStream UTF8 html (pure unit)
43+ end outputStream (pure unit)
4344 " POST" -> void $ pipe inputStream outputStream
45+ _ -> unsafeCrashWith " Unexpected HTTP method"
4446
47+ testHttps :: forall eff . Eff (console :: CONSOLE , http :: HTTP | eff ) Unit
4548testHttps =
46- simpleReq " https://api.github.com "
49+ simpleReq " https://pursuit.purescript.org/packages/purescript-node-http/badge "
4750
51+ simpleReq :: forall eff . String -> Eff (console :: CONSOLE , http :: HTTP | eff ) Unit
4852simpleReq uri = do
4953 log (" GET " <> uri <> " :" )
5054 req <- Client .requestFromURI uri \response -> void do
5155 log " Response:"
5256 let responseStream = Client .responseAsStream response
5357 pipe responseStream stdout
54- end (Client .requestAsStream req) (return unit)
58+ end (Client .requestAsStream req) (pure unit)
0 commit comments