Skip to content

Commit ebab946

Browse files
committed
convert from illuminate request to dingo request in transformer factory
1 parent 93e4c6a commit ebab946

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/Transformer/Factory.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44

55
use Closure;
66
use RuntimeException;
7+
use Dingo\Api\Http\Request;
78
use Illuminate\Support\Collection;
89
use Illuminate\Container\Container;
910
use Dingo\Api\Contract\Transformer\Adapter;
1011
use Illuminate\Contracts\Pagination\Paginator;
12+
use Illuminate\Http\Request as IlluminateRequest;
1113

1214
class Factory
1315
{
@@ -82,7 +84,7 @@ public function transform($response)
8284
{
8385
$binding = $this->getBinding($response);
8486

85-
return $this->adapter->transform($response, $binding->resolveTransformer(), $binding, $this->container['request']);
87+
return $this->adapter->transform($response, $binding->resolveTransformer(), $binding, $this->getRequest());
8688
}
8789

8890
/**
@@ -224,4 +226,20 @@ public function getAdapter()
224226
{
225227
return $this->adapter;
226228
}
229+
230+
/**
231+
* Get the request from the container.
232+
*
233+
* @return \Dingo\Api\Http\Request
234+
*/
235+
public function getRequest()
236+
{
237+
$request = $this->container['request'];
238+
239+
if ($request instanceof IlluminateRequest && ! $request instanceof Request) {
240+
$request = (new Request())->createFromIlluminate($request);
241+
}
242+
243+
return $request;
244+
}
227245
}

tests/Transformer/FactoryTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,20 @@ public function testTransformingCollectionResponse()
8383
$this->assertEquals([['name' => 'Jason'], ['name' => 'Bob']], $response);
8484
}
8585

86+
public function testTransforingWithIlluminateRequest()
87+
{
88+
$container = new Container;
89+
$container['request'] = new \Illuminate\Http\Request();
90+
91+
$factory = new Factory($container, new TransformerStub);
92+
93+
$factory->register('Dingo\Api\Tests\Stubs\UserStub', new UserTransformerStub);
94+
95+
$response = $factory->transform(new UserStub('Jason'));
96+
97+
$this->assertEquals(['name' => 'Jason'], $response);
98+
}
99+
86100
/**
87101
* @expectedException \RuntimeException
88102
* @expectedExceptionMessage Unable to find bound transformer for "Dingo\Api\Tests\Stubs\UserStub" class

0 commit comments

Comments
 (0)