mirror of
https://github.com/flarum/framework.git
synced 2025-03-03 23:27:40 +08:00
Extract another middleware from API routing
This commit is contained in:
parent
26c9c17a1b
commit
a773970956
24
framework/core/src/Api/Middleware/ReadJsonParameters.php
Normal file
24
framework/core/src/Api/Middleware/ReadJsonParameters.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?php namespace Flarum\Api\Middleware;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ResponseInterface as Response;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
|
use Zend\Stratigility\MiddlewareInterface;
|
||||||
|
|
||||||
|
class ReadJsonParameters implements MiddlewareInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function __invoke(Request $request, Response $response, callable $out = null)
|
||||||
|
{
|
||||||
|
if (str_contains($request->getHeaderLine('content-type'), 'application/vnd.api+json')) {
|
||||||
|
$input = json_decode($request->getBody(), true);
|
||||||
|
|
||||||
|
foreach ($input as $name => $value) {
|
||||||
|
$request = $request->withAttribute($name, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out ? $out($request, $response) : $response;
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Flarum\Api\Request as ApiRequest;
|
use Flarum\Api\Request;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
|
||||||
$action = function ($class) {
|
$action = function ($class) {
|
||||||
@ -8,14 +8,8 @@ $action = function ($class) {
|
|||||||
$action = $this->app->make($class);
|
$action = $this->app->make($class);
|
||||||
$actor = $this->app->make('Flarum\Support\Actor');
|
$actor = $this->app->make('Flarum\Support\Actor');
|
||||||
|
|
||||||
if (str_contains($httpRequest->getHeaderLine('content-type'), 'application/vnd.api+json')) {
|
$input = array_merge($httpRequest->getAttributes(), $routeParams);
|
||||||
$input = json_decode($httpRequest->getBody(), true);
|
$request = new Request($input, $actor, $httpRequest);
|
||||||
} else {
|
|
||||||
$input = $httpRequest->getAttributes();
|
|
||||||
}
|
|
||||||
$input = array_merge($input, $routeParams);
|
|
||||||
|
|
||||||
$request = new ApiRequest($input, $actor, $httpRequest);
|
|
||||||
|
|
||||||
return $action->handle($request);
|
return $action->handle($request);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user