1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace EllipseSynergie\ApiResponse\Laravel; |
4
|
|
|
|
5
|
|
|
use EllipseSynergie\ApiResponse\Serializer\Serializer; |
6
|
|
|
use Illuminate\Support\ServiceProvider; |
7
|
|
|
use League\Fractal\Manager; |
8
|
|
|
|
9
|
|
|
/** |
10
|
|
|
* Class ResponseServiceProvider |
11
|
|
|
* |
12
|
|
|
* For the full copyright and license information, please view the LICENSE |
13
|
|
|
* file that was distributed with this source code. |
14
|
|
|
* |
15
|
|
|
* @package EllipseSynergie\ApiResponse\Laravel |
16
|
|
|
* @author Maxime Beaudoin <[email protected]> |
17
|
|
|
*/ |
18
|
|
|
class ResponseServiceProvider extends ServiceProvider |
19
|
|
|
{ |
20
|
|
|
/** |
21
|
|
|
* Register the service provider. |
22
|
|
|
* |
23
|
|
|
* @return void |
24
|
|
|
*/ |
25
|
|
|
public function boot() |
26
|
|
|
{ |
27
|
|
|
$response = $this->bootResponse(); |
28
|
|
|
$this->registerMacro($response); |
|
|
|
|
29
|
|
|
} |
30
|
|
|
|
31
|
|
|
/** |
32
|
|
|
* Override this to use your own serializer. |
33
|
|
|
* |
34
|
|
|
* @return Serializer |
35
|
|
|
*/ |
36
|
|
|
protected function getSerializer() |
37
|
|
|
{ |
38
|
|
|
return new Serializer(); |
39
|
|
|
} |
40
|
|
|
|
41
|
|
|
/** |
42
|
|
|
* Boot response |
43
|
|
|
* |
44
|
|
|
* @return Response |
45
|
|
|
*/ |
46
|
|
|
protected function bootResponse() |
47
|
|
|
{ |
48
|
|
|
$manager = new Manager; |
49
|
|
|
|
50
|
|
|
// Custom serializer because DataArraySerializer doesn't provide the opportunity to change the resource key |
51
|
|
|
$manager->setSerializer($this->getSerializer()); |
52
|
|
|
|
53
|
|
|
//Get includes from request |
54
|
|
|
$includes = $this->app['Illuminate\Http\Request']->get('include'); |
55
|
|
|
|
56
|
|
|
//If includes is not already a array |
57
|
|
|
if(!is_array($includes)){ |
58
|
|
|
$includes = explode(',', $includes); |
59
|
|
|
} |
60
|
|
|
|
61
|
|
|
// Are we going to try and include embedded data? |
62
|
|
|
$manager->parseIncludes($includes); |
63
|
|
|
|
64
|
|
|
// Return the Response object |
65
|
|
|
$response = new Response($manager); |
66
|
|
|
|
67
|
|
|
//Set the response instance properly |
68
|
|
|
$this->app->instance('EllipseSynergie\ApiResponse\Contracts\Response', $response); |
69
|
|
|
|
70
|
|
|
return $response; |
71
|
|
|
} |
72
|
|
|
|
73
|
|
|
/** |
74
|
|
|
* Register the service provider. |
75
|
|
|
* |
76
|
|
|
* @return void |
77
|
|
|
*/ |
78
|
|
|
public function register() |
79
|
|
|
{ |
80
|
|
|
// |
81
|
|
|
} |
82
|
|
|
|
83
|
|
|
/** |
84
|
|
|
* Register response macro |
85
|
|
|
* |
86
|
|
|
* @deprecated We still register macro for backward compatibility, but DO NOT USE THIS MACRO ANYMORE ! |
87
|
|
|
* @param Response $response |
88
|
|
|
*/ |
89
|
|
|
private function registerMacro($response) |
90
|
|
|
{ |
91
|
|
|
\Response::macro('api', function () use ($response) { |
|
|
|
|
92
|
|
|
return $response; |
93
|
|
|
}); |
94
|
|
|
} |
95
|
|
|
} |
96
|
|
|
|
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.