Skip to content

Commit 4a804a9

Browse files
committed
Create the request from the aliased contract instance to allow customization.
Signed-off-by: Jason Lewis <[email protected]>
1 parent 9c63146 commit 4a804a9

File tree

4 files changed

+42
-15
lines changed

4 files changed

+42
-15
lines changed

src/Contract/Http/Request.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Dingo\Api\Contract\Http;
4+
5+
use Illuminate\Http\Request as IlluminateRequest;
6+
7+
interface Request
8+
{
9+
/**
10+
* Create a new Dingo request instance from an Illuminate request instance.
11+
*
12+
* @param \Illuminate\Http\Request $old
13+
*
14+
* @return \Dingo\Api\Http\Request
15+
*/
16+
public function createFromIlluminate(IlluminateRequest $old);
17+
}

src/Http/Middleware/Request.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function __construct(Application $app, Router $router, RequestValidator $
6868
public function handle($request, Closure $next)
6969
{
7070
if ($this->validator->validateRequest($request)) {
71-
$request = HttpRequest::createFromExisting($request);
71+
$request = $this->app->make('Dingo\Api\Contract\Http\Request')->createFromIlluminate($request);
7272

7373
return $this->sendRequestThroughRouter($request);
7474
}

src/Http/Request.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33
namespace Dingo\Api\Http;
44

55
use Illuminate\Http\Request as IlluminateRequest;
6+
use Dingo\Api\Contract\Http\Request as RequestInterface;
67

7-
class Request extends IlluminateRequest
8+
class Request extends IlluminateRequest implements RequestInterface
89
{
910
/**
11+
* Create a new Dingo request instance from an Illuminate request instance.
12+
*
1013
* @param \Illuminate\Http\Request $old
1114
*
12-
* @return static
15+
* @return \Dingo\Api\Http\Request
1316
*/
14-
public static function createFromExisting(IlluminateRequest $old)
17+
public function createFromIlluminate(IlluminateRequest $old)
1518
{
1619
$new = new static(
1720
$old->query->all(), $old->request->all(), $old->attributes->all(),

src/Provider/ApiServiceProvider.php

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,24 @@ protected function setupConfig()
9191
*/
9292
protected function setupClassAliases()
9393
{
94-
$this->app->alias('request', 'Dingo\Api\Http\Request');
95-
$this->app->alias('api.dispatcher', 'Dingo\Api\Dispatcher');
96-
$this->app->alias('api.http.validator', 'Dingo\Api\Http\RequestValidator');
97-
$this->app->alias('api.http.response', 'Dingo\Api\Http\Response\Factory');
98-
$this->app->alias('api.router', 'Dingo\Api\Routing\Router');
99-
$this->app->alias('api.router.adapter', 'Dingo\Api\Routing\Adapter\AdapterInterface');
100-
$this->app->alias('api.auth', 'Dingo\Api\Auth\Auth');
101-
$this->app->alias('api.limiting', 'Dingo\Api\Http\RateLimit\Handler');
102-
$this->app->alias('api.transformer', 'Dingo\Api\Transformer\Factory');
103-
$this->app->alias('api.url', 'Dingo\Api\Routing\UrlGenerator');
104-
$this->app->alias('api.exception', 'Dingo\Api\Exception\Handler');
94+
$this->app->alias('Dingo\Api\Http\Request', 'Dingo\Api\Contract\Http\Request');
95+
96+
$aliases = [
97+
'api.dispatcher' => 'Dingo\Api\Dispatcher',
98+
'api.http.validator' => 'Dingo\Api\Http\RequestValidator',
99+
'api.http.response' => 'Dingo\Api\Http\Response\Factory',
100+
'api.router' => 'Dingo\Api\Routing\Router',
101+
'api.router.adapter' => 'Dingo\Api\Contract\Routing\Adapter',
102+
'api.auth' => 'Dingo\Api\Auth\Auth',
103+
'api.limiting' => 'Dingo\Api\Contract\Http\RateLimit\Adapter',
104+
'api.transformer' => 'Dingo\Api\Transformer\Factory',
105+
'api.url' => 'Dingo\Api\Routing\UrlGenerator',
106+
'api.exception' => 'Dingo\Api\Exception\Handler'
107+
];
108+
109+
foreach ($aliases as $key => $alias) {
110+
$this->app->alias($key, $alias);
111+
}
105112
}
106113

107114
/**

0 commit comments

Comments
 (0)