Skip to content

Commit ceca14a

Browse files
authored
Merge pull request #114 from clue-labs/response
Update to use HTTP status code constants and JSON/HTML response helpers
2 parents f178760 + 97344df commit ceca14a

20 files changed

Lines changed: 276 additions & 315 deletions

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,13 @@ require __DIR__ . '/../vendor/autoload.php';
2424
$app = new FrameworkX\App();
2525

2626
$app->get('/', function () {
27-
return new React\Http\Message\Response(
28-
200,
29-
[],
27+
return React\Http\Message\Response::plaintext(
3028
"Hello wörld!\n"
3129
);
3230
});
3331

3432
$app->get('/users/{name}', function (Psr\Http\Message\ServerRequestInterface $request) {
35-
return new React\Http\Message\Response(
36-
200,
37-
[],
33+
return React\Http\Message\Response::plaintext(
3834
"Hello " . $request->getAttribute('name') . "!\n"
3935
);
4036
});

docs/api/app.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ multiple routes using inline closures like this:
2323

2424
```php
2525
$app->get('/user', function () {
26-
return new React\Http\Message\Response(200, [], "hello everybody!");
26+
return React\Http\Message\Response::plaintext("Hello everybody!\n");
2727
});
2828

2929
$app->get('/user/{id}', function (Psr\Http\Message\ServerRequestInterface $request) {
3030
$id = $request->getAttribute('id');
31-
return new React\Http\Message\Response(200, [], "hello $id");
31+
return React\Http\Message\Response::plaintext("Hello $id!\n");
3232
});
3333
```
3434

@@ -76,17 +76,17 @@ The `App` also offers a convenient helper method to redirect a matching route to
7676
a new URL like this:
7777

7878
```php
79-
$app->redirect('/promo/reactphp', 'http://reactphp.org/');
79+
$app->redirect('/promo/reactphp', 'https://reactphp.org/');
8080
```
8181

8282
Browsers and search engine crawlers will automatically follow the redirect with
8383
the `302 Found` status code by default. You can optionally pass a custom redirect
8484
status code in the `3xx` range to use. If this is a permanent redirect, you may
85-
want to use the `301 Permanent Redirect` status code to instruct search engine
85+
want to use the `301 Moved Permanently` status code to instruct search engine
8686
crawlers to update their index like this:
8787

8888
```php
89-
$app->redirect('/blog.html', '/blog', 301);
89+
$app->redirect('/blog.html', '/blog', React\Http\Message\Response::STATUS_MOVED_PERMANENTLY);
9090
```
9191

9292
See [response status codes](response.md#status-codes) for more details.
@@ -98,9 +98,7 @@ examples more concise:
9898

9999
```
100100
$app->get('/', function () {
101-
return new React\Http\Message\Response(
102-
200,
103-
[],
101+
return React\Http\Message\Response::plaintext(
104102
"Hello wörld!\n"
105103
);
106104
});
@@ -144,9 +142,7 @@ class HelloController
144142
{
145143
public function __invoke()
146144
{
147-
return new Response(
148-
200,
149-
[],
145+
return Response::plaintext(
150146
"Hello wörld!\n"
151147
);
152148
}

docs/api/middleware.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ $app->get(
2020
'/user',
2121
function (Psr\Http\Message\ServerRequestInterface $request, callable $next) {
2222
// optionally return response without passing to next handler
23-
// return new React\Http\Message\Response(403, [], "Forbidden!\n");
23+
// return React\Http\Message\Response::plaintext("Done.\n");
2424

2525
// optionally modify request before passing to next handler
2626
// $request = $request->withAttribute('admin', false);
@@ -36,7 +36,7 @@ $app->get(
3636
},
3737
function (Psr\Http\Message\ServerRequestInterface $request) {
3838
$role = $request->getAttribute('admin') ? 'admin' : 'user';
39-
return new React\Http\Message\Response(200, [], "Hello $role!\n");
39+
return React\Http\Message\Response::plaintext("Hello $role!\n");
4040
}
4141
);
4242
```
@@ -65,7 +65,7 @@ class DemoMiddleware
6565
public function __invoke(ServerRequestInterface $request, callable $next)
6666
{
6767
// optionally return response without passing to next handler
68-
// return new React\Http\Message\Response(403, [], "Forbidden!\n");
68+
// return React\Http\Message\Response::plaintext("Done.\n");
6969

7070
// optionally modify request before passing to next handler
7171
// $request = $request->withAttribute('admin', false);
@@ -156,7 +156,7 @@ class UserController
156156
public function __invoke(ServerRequestInterface $request)
157157
{
158158
$role = $request->getAttribute('admin') ? 'admin' : 'user';
159-
return new Response(200, [], "Hello $role!\n");
159+
return Response::plaintext("Hello $role!\n");
160160
}
161161
}
162162
```
@@ -235,7 +235,7 @@ class UserController
235235
public function __invoke(ServerRequestInterface $request)
236236
{
237237
$name = 'Alice';
238-
return new Response(200, [], "Hello $name!\n");
238+
return Response::plaintext("Hello $name!\n");
239239
}
240240
}
241241
```
@@ -416,7 +416,7 @@ a response object synchronously:
416416
$name = yield $promise;
417417
assert(is_string($name));
418418

419-
return new Response(200, [], "Hello $name!\n");
419+
return Response::plaintext("Hello $name!\n");
420420
}
421421

422422
/**
@@ -455,7 +455,7 @@ a response object synchronously:
455455
{
456456
// async pseudo code to load some data from an external source
457457
return $this->fetchRandomUserName()->then(function (string $name) {
458-
return new Response(200, [], "Hello $name!\n");
458+
return Response::plaintext("Hello $name!\n");
459459
});
460460
}
461461

docs/api/request.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ You can access request attributes like this:
3333
$app->get('/user/{id}', function (Psr\Http\Message\ServerRequestInterface $request) {
3434
$id = $request->getAttribute('id');
3535

36-
return new React\Http\Message\Response(200, [], "Hello $id");
36+
return React\Http\Message\Response::plaintext("Hello $id!\n");
3737
});
3838
```
3939

4040
An HTTP request can be sent like this:
4141

4242
```bash
4343
$ curl http://localhost:8080/user/Alice
44-
Hello Alice
44+
Hello Alice!
4545
```
4646

4747
These custom attributes are most commonly used when using URI placeholders
@@ -63,15 +63,15 @@ $app->post('/user', function (Psr\Http\Message\ServerRequestInterface $request)
6363
$data = json_decode((string) $request->getBody());
6464
$name = $data->name ?? 'anonymous';
6565

66-
return new React\Http\Message\Response(200, [], "Hello $name");
66+
return React\Http\Message\Response::plaintext("Hello $name!\n");
6767
});
6868
```
6969

7070
An HTTP request can be sent like this:
7171

7272
```bash
7373
$ curl http://localhost:8080/user --data '{"name":"Alice"}'
74-
Hello Alice
74+
Hello Alice!
7575
```
7676

7777
Additionally, you may want to validate the `Content-Type: application/json` request header
@@ -89,7 +89,7 @@ $app->post('/user', function (Psr\Http\Message\ServerRequestInterface $request)
8989
$data = $request->getParsedBody();
9090
$name = $data['name'] ?? 'Anonymous';
9191

92-
return new React\Http\Message\Response(200, [], "Hello $name");
92+
return React\Http\Message\Response::plaintext("Hello $name!\n");
9393
});
9494
```
9595

@@ -98,7 +98,7 @@ An HTTP request can be sent like this:
9898

9999
```bash
100100
$ curl http://localhost:8080/user -d name=Alice
101-
Hello Alice
101+
Hello Alice!
102102
```
103103

104104
This method returns a possibly nested array of form fields, very similar to
@@ -113,7 +113,7 @@ $app->post('/user', function (Psr\Http\Message\ServerRequestInterface $request)
113113
$files = $request->getUploadedFiles();
114114
$name = isset($files['image']) ? $files['image']->getClientFilename() : 'x';
115115

116-
return new React\Http\Message\Response(200, [], "Uploaded $name");
116+
return React\Http\Message\Response::plaintext("Uploaded $name\n");
117117
});
118118
```
119119

@@ -161,7 +161,7 @@ You can access all HTTP request headers like this:
161161
$app->get('/user', function (Psr\Http\Message\ServerRequestInterface $request) {
162162
$agent = $request->getHeaderLine('User-Agent');
163163

164-
return new React\Http\Message\Response(200, [], "Hello $agent");
164+
return React\Http\Message\Response::plaintext("Hello $agent\n");
165165
});
166166
```
167167

@@ -184,7 +184,7 @@ $app->get('/user', function (Psr\Http\Message\ServerRequestInterface $request) {
184184
$params = $request->getServerParams();
185185
$ip = $params['REMOTE_ADDR'] ?? 'unknown';
186186

187-
return new React\Http\Message\Response(200, [], "Hello $ip");
187+
return React\Http\Message\Response::plaintext("Hello $ip\n");
188188
});
189189
```
190190

0 commit comments

Comments
 (0)