Skip to content

Commit e1a75ea

Browse files
ulrikstridGithub Runner
andauthored
Move to Piaf as the server implementation (reason-native-web#41)
* It compiles * Add .gitattributes * Update docs and move things into morph * Don't use Piaf.Server in examples * Update CI esy version * Try to fix lint * Update lockdir * More cleanup and prepare for 0.4.0 * Fix docs build * Fix CI lint * Update lockdir Co-authored-by: Github Runner <[email protected]>
1 parent 995215b commit e1a75ea

File tree

124 files changed

+1390
-6974
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+1390
-6974
lines changed

.ci/utils/use-esy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# steps to install esy globally
22

33
steps:
4-
- script: "npm install -g esy@0.5.8"
4+
- script: "npm install -g esy@0.6.4"
55
displayName: "install esy"

.gitattributes

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Some settings for the github language statistics
2+
# This also supresses the lock folder from the diffs
3+
esy.lock/* linguist-generated=true
4+
# Tell github that .re and .rei files are Reason
5+
*.re linguist-language=Reason
6+
*.rei linguist-language=Reason
7+
# Tell github that .ml and .mli files are OCaml
8+
*.ml linguist-language=OCaml
9+
*.mli linguist-language=OCaml
10+
11+
# Declare shell files to have LF endings on checkout
12+
# On Windows, the default git setting for `core.autocrlf`
13+
# means that when checking out code, LF endings get converted
14+
# to CRLF. This causes problems for shell scripts, as bash
15+
# gets choked up on the extra `\r` character.
16+
* text eol=lf

.github/workflows/lint_pr.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
- name: format sources files
6464
run: |
6565
esy fmt
66-
git add "*.re" "*.rei" "*.ml" "*.mli"
66+
git add "*.re" "*.rei"
6767
- name: Update version in packages
6868
run: |
6969
node .github/workflows/update_package_version.js
@@ -78,7 +78,7 @@ jobs:
7878
git config user.email "[email protected]"
7979
git commit -am "Update lockdir"
8080
git status
81-
git push origin HEAD:$GITHUB_REF
81+
git push origin HEAD:$GITHUB_HEAD_REF
8282
env:
8383
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8484
- name: Display status should be clean

.vscode/settings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"ocaml.packageManager": "esy",
3+
"ocaml.sandbox": {
4+
"root": "/Users/ulrik.strid/dev/reason-native-web/morph",
5+
"kind": "esy"
6+
}
7+
}

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.6
1+
0.4.0

docs/markdown/dune

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(executables
2-
(libraries morph morph_server_http morph_graphql_server mtime mtime.clock.os
3-
routes logs logs.fmt fmt.tty lwt graphql graphql-lwt uri)
2+
(libraries morph morph_graphql_server mtime mtime.clock.os routes logs
3+
logs.fmt fmt.tty lwt graphql graphql-lwt uri)
44
(names getting_started simple_switch_based_router with_routes_package
55
writing_middleware graphql_server))
66

docs/markdown/getting-started.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ There are some helpers to create some of the common responses, we will use the t
1313
<!--Reason-->
1414

1515
```reason
16-
let server = Morph_server_http.make();
17-
let handler = _request => Morph.Response.text("Hello World!", Morph.Response.empty);
16+
let server = Morph.Server.make();
17+
let handler = _request => Morph.Response.text("Hello World!") |> Lwt.return;
1818
1919
Morph.start(~servers=[server], handler) |> Lwt_main.run;
2020
```
@@ -23,9 +23,9 @@ Morph.start(~servers=[server], handler) |> Lwt_main.run;
2323

2424
```ocaml
2525
let () =
26-
let server = Morph_server_http.make () in
26+
let server = Morph.Server.make () in
2727
let handler _request =
28-
Morph.Response.text "Hello World!" Morph.Response.empty in
28+
Morph.Response.text "Hello World!" |> Lwt.return in
2929
Morph.start ~servers:[server] handler |> Lwt_main.run
3030
```
3131

docs/markdown/graphql-server.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ When we have our handler we can create a server and start serving requests. This
181181
<!--Reason-->
182182

183183
```reason
184-
let server = Morph_server_http.make();
184+
let server = Morph.Server.make();
185185
186186
Morph.start(~servers=[server], handler) |> Lwt_main.run;
187187
```
@@ -190,7 +190,7 @@ Morph.start(~servers=[server], handler) |> Lwt_main.run;
190190

191191
```ocaml
192192
let () =
193-
let server = Morph_server_http.make () in
193+
let server = Morph.Server.make () in
194194
Morph.start ~servers:[server] handler |> Lwt_main.run
195195
```
196196

docs/markdown/simple-switch-based-router.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,44 +13,45 @@ The example code bellow shows some common usecases
1313
<!--Reason-->
1414

1515
```reason
16-
let handler = request => {
16+
let handler = ({request, _}: Morph.Request.t) => {
1717
let path_parts =
18-
request.target
18+
request.message.target
1919
|> Uri.of_string
2020
|> Uri.path
2121
|> String.split_on_char('/')
2222
|> List.filter(s => s != "");
2323
24-
switch (request.meth, path_parts) {
25-
| (_, []) => Morph.Response.text("Hello world!", Morph.Response.empty)
24+
switch (request.message.meth, path_parts) {
25+
| (_, []) => Morph.Response.text("Hello world!")
2626
| (_, ["greet", name]) =>
27-
Morph.Response.text("Hello " ++ name ++ "!", Morph.Response.empty)
27+
Morph.Response.text("Hello " ++ name ++ "!")
2828
| (`GET, ["static", ...file_path]) =>
29-
Morph_base.Response.static(~file_path=String.concat("/", file_path), Morph.Response.empty)
30-
| (_, _) => Morph.Response.not_found(Morph.Response.empty)
31-
};
29+
Morph.Response.static(~file_path=String.concat("/", file_path))
30+
| (_, _) => Morph.Response.not_found()
31+
}
32+
|> Lwt.return;
3233
};
3334
```
3435

3536
<!--OCaml-->
3637

3738
```ocaml
38-
let handler request =
39-
let open Morph.Request in
39+
let handler ({request; _}: Morph.Request.t) =
4040
let path_parts =
41-
request.target
41+
request.message.target
4242
|> Uri.of_string
4343
|> Uri.path
4444
|> String.split_on_char '/'
4545
|> List.filter (fun s -> s <> "") in
46-
match ((request.meth), path_parts) with
46+
(match (request.message.meth, path_parts) with
4747
| (_,[]) ->
48-
Morph.Response.text "Hello world!" Morph.Response.empty
48+
Morph.Response.text "Hello world!"
4949
| (_,"greet"::name::[]) ->
50-
Morph.Response.text ("Hello " ^ name ^ "!") Morph.Response.empty
50+
Morph.Response.text ("Hello " ^ name ^ "!")
5151
| (`GET, "static"::file_path) ->
52-
Morph_base.Response.static ~file_path:(String.concat "/" file_path) Morph.Response.empty
53-
| (_,_) -> Morph.Response.not_found Morph.Response.empty
52+
Morph.Response.static ~file_path:(String.concat "/" file_path)
53+
| (_,_) -> Morph.Response.not_found ())
54+
|> Lwt.return
5455
```
5556

5657
<!--END_DOCUSAURUS_CODE_TABS-->
@@ -61,15 +62,15 @@ When you have built out the routes you want inside of the handler you simply pas
6162
<!--Reason-->
6263

6364
```reason
64-
let server = Morph_server_http.make();
65+
let server = Morph.Server.make();
6566
Morph.start(~servers=[server], handler)
6667
|> Lwt_main.run;
6768
```
6869

6970
<!--OCaml-->
7071

7172
```ocaml
72-
let server = Morph_server_http.make () in
73+
let server = Morph.Server.make () in
7374
Morph.start ~servers:[server] handler
7475
|> Lwt_main.run
7576
```

docs/markdown/with-routes-package.md

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ First step is to create handlers. A handler is just a function that returns a `R
1414

1515
```reason
1616
/* Just respond with "ok" on every request */
17-
let root_handler = (_request) => Morph.Response.ok(Morph.Response.empty);
17+
let root_handler = (_request) => Morph.Response.ok();
1818
1919
/* Return a greeting with the name */
2020
let greet_handler = (greeting, _request) => {
21-
Morph.Response.text(greeting, Morph.Response.empty);
21+
Morph.Response.text(greeting);
2222
};
2323
```
2424

2525
<!--OCaml-->
2626

2727
```ocaml
2828
(* Just respond with "ok" on every request *)
29-
let root_handler _request = Morph.Response.ok Morph.Response.empty
29+
let root_handler _request = Morph.Response.ok ()
3030
3131
(* Return a greeting with the name *)
32-
let greet_handler greeting _request = Morph.Response.text greeting Morph.Response.empty
32+
let greet_handler greeting _request = Morph.Response.text greeting
3333
```
3434

3535
<!--END_DOCUSAURUS_CODE_TABS-->
@@ -42,12 +42,10 @@ Then you create a route definition. This definition will use the `root_handler`
4242
```reason
4343
let routes =
4444
Routes.(
45-
Routes.Infix.(
46-
with_method([
47-
(`GET, root_handler <$ s("")),
48-
(`GET, greet_handler <$> s("greet") *> str),
49-
])
50-
)
45+
with_method([
46+
root_handler / s(""),
47+
greet_handler / s("greet") / str,
48+
])
5149
);
5250
```
5351

@@ -56,11 +54,10 @@ let routes =
5654
```ocaml
5755
let routes =
5856
let open Routes in
59-
let open Routes.Infix in
60-
with_method [
61-
(`GET, root_handler <$ s "");
62-
(`GET, greet_handler <$> s "greet" *> str)
63-
]
57+
one_of [
58+
s "" /? trail @--> root_handler;
59+
s "greet" / str /? trail @--> greet_handler;
60+
]
6461
```
6562

6663
<!--END_DOCUSAURUS_CODE_TABS-->
@@ -71,29 +68,29 @@ Lastly you create a routes callback and start the server. In this case we pass i
7168
<!--Reason-->
7269

7370
```reason
74-
let handler = request =>
75-
Routes.match_with_method(~target=request.target, ~meth=request.meth, routes)
71+
let handler = {request, _} =>
72+
Routes.match(~target=request.message.target, routes)
7673
|> (
7774
fun
7875
| Some(res) => res(request)
7976
| None => Morph.Response.not_found(Morph.Response.empty)
8077
);
8178
82-
let server = Morph_server_http.make();
79+
let server = Morph.Server.make();
8380
Morph.start(~servers=[server], handler) |> Lwt_main.run;
8481
```
8582

8683
<!--OCaml-->
8784

8885
```ocaml
8986
let () =
90-
let handler request =
91-
let open Morph.Request in
92-
(Routes.match_with_method ~target:request.target ~meth:request.meth routes)
87+
let handler (req: Morph.Request.t) =
88+
(Routes.match' ~target:req.request.message.target routes)
9389
|> (function
94-
| Some res -> res request
95-
| None -> Morph.Response.not_found Morph.Response.empty) in
96-
let server = Morph_server_http.make () in
90+
| Some handler -> handler req
91+
| None -> Morph.Response.not_found ())
92+
|> Lwt.return in
93+
let server = Morph.Server.make () in
9794
Morph.start ~servers:[server] handler
9895
|> Lwt_main.run
9996
```

0 commit comments

Comments
 (0)