Skip to content

Commit 772fd18

Browse files
committed
Add support for custom monad run function in server
1 parent 3b5e426 commit 772fd18

File tree

11 files changed

+71
-115
lines changed

11 files changed

+71
-115
lines changed

docs/src/type-level-routing/Site1.purs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ module Site1 where
33
import Prelude
44
import Control.IxMonad ((:*>))
55
import Control.Monad.Eff (Eff)
6-
import Control.Monad.Eff.Console (CONSOLE, log)
6+
import Control.Monad.Eff.Console (CONSOLE)
77
import Data.Maybe (maybe)
88
import Data.MediaType.Common (textHTML)
99
import Hyper.Node.Server (defaultOptions, runServer)
10-
import Hyper.Port (Port(Port))
1110
import Hyper.Response (contentType, respond, closeHeaders, writeStatus)
1211
import Hyper.Routing.ContentType.HTML (class EncodeHTML, HTML)
1312
import Hyper.Routing.Method (Get)
@@ -43,13 +42,8 @@ site1 = Proxy
4342
-- start snippet main
4443
main :: forall e. Eff (http :: HTTP, console :: CONSOLE, buffer :: BUFFER | e) Unit
4544
main =
46-
runServer defaultOptions onListening onRequestError {} siteRouter
45+
runServer defaultOptions {} siteRouter
4746
where
48-
onListening (Port port) =
49-
log ("Listening on http://localhost:" <> show port)
50-
51-
onRequestError err =
52-
log ("Request failed: " <> show err)
5347
-- end snippet main
5448

5549
-- start snippet router

docs/src/type-level-routing/Site2.purs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ module Site2 where
22

33
import Control.IxMonad ((:*>))
44
import Control.Monad.Eff (Eff)
5-
import Control.Monad.Eff.Console (log, CONSOLE)
5+
import Control.Monad.Eff.Console (CONSOLE)
66
import Control.Monad.Error.Class (throwError)
77
import Control.Monad.Except (ExceptT)
88
import Data.Array (find)
99
import Data.Maybe (Maybe(..), maybe)
1010
import Data.MediaType.Common (textHTML)
1111
import Data.Traversable (traverse_)
1212
import Hyper.Node.Server (defaultOptions, runServer)
13-
import Hyper.Port (Port(..))
1413
import Hyper.Response (closeHeaders, contentType, respond, writeStatus)
1514
import Hyper.Routing (type (:/), type (:<|>), type (:>), Capture, (:<|>))
1615
import Hyper.Routing.ContentType.HTML (class EncodeHTML, HTML, linkTo)
@@ -110,11 +109,5 @@ main =
110109
:*> closeHeaders
111110
:*> respond (maybe "" id msg)
112111

113-
onListening (Port port) =
114-
log ("Listening on http://localhost:" <> show port)
115-
116-
onRequestError err =
117-
log ("Request failed: " <> show err)
118-
119-
in runServer defaultOptions onListening onRequestError {} otherSiteRouter
112+
in runServer defaultOptions {} otherSiteRouter
120113
-- end snippet main

docs/src/type-level-routing/Site3.purs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Site3 where
22

33
import Control.IxMonad ((:*>))
44
import Control.Monad.Eff (Eff)
5-
import Control.Monad.Eff.Console (log, CONSOLE)
5+
import Control.Monad.Eff.Console (CONSOLE)
66
import Control.Monad.Error.Class (throwError)
77
import Control.Monad.Except (ExceptT)
88
import Data.Argonaut (class EncodeJson, encodeJson, fromArray, jsonEmptyObject, (:=), (~>))
@@ -11,7 +11,6 @@ import Data.Foldable (traverse_)
1111
import Data.Maybe (Maybe(..), maybe)
1212
import Data.MediaType.Common (textHTML)
1313
import Hyper.Node.Server (defaultOptions, runServer)
14-
import Hyper.Port (Port(..))
1514
import Hyper.Response (closeHeaders, contentType, respond, writeStatus)
1615
import Hyper.Routing (type (:/), type (:<|>), type (:>), Capture, (:<|>))
1716
import Hyper.Routing.ContentType.HTML (class EncodeHTML, HTML, linkTo)
@@ -115,10 +114,4 @@ main =
115114
:*> closeHeaders
116115
:*> respond (maybe "" id msg)
117116

118-
onListening (Port port) =
119-
log ("Listening on http://localhost:" <> show port)
120-
121-
onRequestError err =
122-
log ("Request failed: " <> show err)
123-
124-
in runServer defaultOptions onListening onRequestError {} site3Router
117+
in runServer defaultOptions {} site3Router

examples/Authentication.purs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ import Hyper.Node.BasicAuth as BasicAuth
55
import Control.IxMonad ((:>>=), (:*>))
66
import Control.Monad.Aff (Aff)
77
import Control.Monad.Eff (Eff)
8-
import Control.Monad.Eff.Console (log, CONSOLE)
8+
import Control.Monad.Eff.Console (CONSOLE)
99
import Data.Maybe (Maybe(Just, Nothing))
1010
import Data.MediaType.Common (textHTML)
1111
import Data.Tuple (Tuple(Tuple))
1212
import Hyper.Middleware.Class (getConn)
1313
import Hyper.Node.Server (runServer, defaultOptions)
14-
import Hyper.Port (Port(..))
1514
import Hyper.Response (closeHeaders, contentType, respond, writeStatus)
1615
import Hyper.Status (statusOK)
1716
import Node.Buffer (BUFFER)
@@ -32,9 +31,6 @@ userFromBasicAuth =
3231
main :: forall e. Eff (console :: CONSOLE, http HTTP, buffer :: BUFFER | e) Unit
3332
main =
3433
let
35-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
36-
onRequestError err = log ("Request failed: " <> show err)
37-
3834
myProfilePage =
3935
getConn :>>= \conn ->
4036
case conn.components.authentication of
@@ -48,4 +44,4 @@ main =
4844
BasicAuth.withAuthentication userFromBasicAuth
4945
:*> BasicAuth.authenticated "Authentication Example" myProfilePage
5046
components = { authentication: unit }
51-
in runServer defaultOptions onListening onRequestError components app
47+
in runServer defaultOptions components app

examples/AuthenticationAndAuthorization.purs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Control.IxMonad ((:>>=), (:*>))
1414
import Control.Monad.Aff.AVar (AVAR)
1515
import Control.Monad.Aff.Class (class MonadAff)
1616
import Control.Monad.Eff (Eff)
17-
import Control.Monad.Eff.Console (log, CONSOLE)
17+
import Control.Monad.Eff.Console (CONSOLE)
1818
import Control.Monad.Eff.Exception (EXCEPTION)
1919
import Data.Either (Either(..))
2020
import Data.HTTP.Method (CustomMethod, Method(..))
@@ -27,7 +27,6 @@ import Hyper.Conn (Conn)
2727
import Hyper.Middleware (Middleware)
2828
import Hyper.Middleware.Class (getConn)
2929
import Hyper.Node.Server (defaultOptions, runServer)
30-
import Hyper.Port (Port(..))
3130
import Hyper.Response (class Response, class ResponseWriter, ResponseEnded, StatusLineOpen, closeHeaders, contentType, respond, writeStatus)
3231
import Hyper.Status (Status, statusNotFound, statusOK)
3332
import Node.Buffer (BUFFER)
@@ -196,9 +195,7 @@ app = BasicAuth.withAuthentication userFromBasicAuth :>>= \_ → router
196195
main :: forall e. Eff (http :: HTTP, console :: CONSOLE, err :: EXCEPTION, avar :: AVAR, buffer :: BUFFER | e) Unit
197196
main =
198197
let
199-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
200-
onRequestError err = log ("Request failed: " <> show err)
201198
components = { authentication: unit
202199
, authorization: unit
203200
}
204-
in runServer defaultOptions onListening onRequestError components app
201+
in runServer defaultOptions components app

examples/FileServer.purs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ module Examples.FileServer where
33
import Prelude
44
import Control.IxMonad ((:*>))
55
import Control.Monad.Eff (Eff)
6-
import Control.Monad.Eff.Console (CONSOLE, log)
6+
import Control.Monad.Eff.Console (CONSOLE)
77
import Data.Tuple (Tuple(Tuple))
88
import Hyper.Node.FileServer (fileServer)
99
import Hyper.Node.Server (defaultOptions, runServer)
10-
import Hyper.Port (Port(..))
1110
import Hyper.Response (headers, respond, writeStatus)
1211
import Hyper.Status (statusNotFound)
1312
import Node.Buffer (BUFFER)
@@ -18,11 +17,9 @@ import Node.HTTP (HTTP)
1817
main :: forall e. Eff (console :: CONSOLE, http HTTP, fs :: FS, buffer :: BUFFER | e) Unit
1918
main =
2019
let
21-
onListening (Port port) = log ("Serving files at http://localhost:" <> show port)
22-
onRequestError err = log ("Request failed: " <> show err)
2320
notFound =
2421
writeStatus statusNotFound
2522
:*> headers []
2623
:*> respond (Tuple "<h1>Not Found</h1>" UTF8)
2724
app = fileServer "examples/FileServer" notFound
28-
in runServer defaultOptions onListening onRequestError {} app
25+
in runServer defaultOptions {} app

examples/FormParser.purs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import Data.Tuple (lookup)
1717
import Hyper.Form (Form(Form), parseForm)
1818
import Hyper.Middleware.Class (getConn)
1919
import Hyper.Node.Server (readBodyAsString, defaultOptions, runServer)
20-
import Hyper.Port (Port(..))
2120
import Hyper.Response (closeHeaders, contentType, respond, writeStatus)
2221
import Hyper.Status (statusBadRequest, statusMethodNotAllowed, statusOK)
2322
import Node.HTTP (HTTP)
@@ -89,10 +88,5 @@ main =
8988
-- handler.
9089
app = readBodyAsString :*> router
9190

92-
-- Some nice console printing when the server starts, and if a request
93-
-- fails (in this case when the request body is unreadable for some reason).
94-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
95-
onRequestError err = log ("Request failed: " <> show err)
96-
9791
-- Let's run it.
98-
in runServer defaultOptions onListening onRequestError {} app
92+
in runServer defaultOptions {} app

examples/HelloHyper.purs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@ module Examples.HelloHyper where
33
import Prelude
44
import Control.IxMonad ((:*>))
55
import Control.Monad.Eff (Eff)
6-
import Control.Monad.Eff.Console (CONSOLE, log)
6+
import Control.Monad.Eff.Console (CONSOLE)
77
import Hyper.Node.Server (defaultOptions, runServer)
8-
import Hyper.Port (Port(..))
98
import Hyper.Response (closeHeaders, respond, writeStatus)
109
import Hyper.Status (statusOK)
1110
import Node.HTTP (HTTP)
1211

1312
main :: forall e. Eff (console :: CONSOLE, http :: HTTP | e) Unit
1413
main =
1514
let
16-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
17-
onRequestError err = log ("Request failed: " <> show err)
1815
app = do
1916
writeStatus statusOK
2017
:*> closeHeaders
2118
:*> respond "Hello, Hyper!"
22-
in runServer defaultOptions onListening onRequestError {} app
19+
in runServer defaultOptions {} app

examples/NodeStreamResponse.purs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ import Control.IxMonad ((:*>))
99
import Control.Monad.Aff (later')
1010
import Control.Monad.Aff.Class (class MonadAff, liftAff)
1111
import Control.Monad.Eff (Eff)
12-
import Control.Monad.Eff.Console (CONSOLE, log)
12+
import Control.Monad.Eff.Console (CONSOLE)
1313
import Data.Traversable (traverse_)
1414
import Data.Tuple (Tuple(..))
1515
import Hyper.Middleware (Middleware, lift')
1616
import Hyper.Node.Server (defaultOptions, runServer, writeString)
17-
import Hyper.Port (Port(..))
1817
import Hyper.Response (closeHeaders, end, send, writeStatus)
1918
import Hyper.Status (statusOK)
2019
import Node.Encoding (Encoding(..))
@@ -26,9 +25,6 @@ delay n = lift' (liftAff (later' n (pure unit)))
2625
main :: forall e. Eff (console :: CONSOLE, http :: HTTP | e) Unit
2726
main =
2827
let
29-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
30-
onRequestError err = log ("Request failed: " <> show err)
31-
3228
-- These messages are streamed one at a time, regardless of their individual
3329
-- delays, i.e. they're sequenced.
3430
streamMessages =
@@ -44,4 +40,4 @@ main =
4440
:*> closeHeaders
4541
:*> streamMessages
4642
:*> end
47-
in runServer defaultOptions onListening onRequestError {} app
43+
in runServer defaultOptions {} app

examples/Routing.purs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Control.IxMonad ((:*>))
55
import Control.Monad.Aff (Aff)
66
import Control.Monad.Aff.AVar (AVAR)
77
import Control.Monad.Eff (Eff)
8-
import Control.Monad.Eff.Console (log, CONSOLE)
8+
import Control.Monad.Eff.Console (CONSOLE)
99
import Control.Monad.Eff.Exception (EXCEPTION)
1010
import Control.Monad.Error.Class (throwError)
1111
import Control.Monad.Except (ExceptT)
@@ -16,7 +16,6 @@ import Data.Generic (class Generic)
1616
import Data.Maybe (Maybe(..), maybe)
1717
import Data.MediaType.Common (textHTML)
1818
import Hyper.Node.Server (defaultOptions, runServer)
19-
import Hyper.Port (Port(..))
2019
import Hyper.Response (closeHeaders, contentType, respond, writeStatus)
2120
import Hyper.Routing (type (:/), type (:<|>), type (:>), Capture, (:<|>))
2221
import Hyper.Routing.ContentType.HTML (class EncodeHTML, HTML, linkTo)
@@ -98,10 +97,8 @@ viewPost postId =
9897

9998
main :: forall e. Eff (http :: HTTP, console :: CONSOLE, err :: EXCEPTION, avar :: AVAR | e) Unit
10099
main =
101-
runServer defaultOptions onListening onRequestError {} siteRouter
100+
runServer defaultOptions {} siteRouter
102101
where
103-
onListening (Port port) = log ("Listening on http://localhost:" <> show port)
104-
onRequestError err = log ("Request failed: " <> show err)
105102
siteRouter = router site (postsView :<|> viewPost) onRoutingError
106103
onRoutingError status msg = do
107104
writeStatus status

0 commit comments

Comments
 (0)