22
33namespace Pharaonic \Laravel \Jsonable ;
44
5+ use Illuminate \Http \Resources \Json \JsonResource ;
6+ use Pharaonic \Laravel \Jsonable \Exceptions \Exception ;
7+
58/**
69 * Json Responser
7- *
10+ *
811 * @method \Illuminate\Http\JsonResponse success
912 * @method \Illuminate\Http\JsonResponse errors
1013 * @method \Illuminate\Http\JsonResponse exception
11- *
14+ *
1215 * @author Moamen Eltouny
16+ * @author Hatem Elsaid
1317 * @package pharoanic/laravel-jsonable
1418 * @version 0.0.7
1519 */
1620class Json
1721{
18- public function success (array $ data , ?string $ message = null , ?array $ extra = [], int $ status = 200 , array $ headers = [])
22+ public function success ($ data , ?string $ message = null , ?array $ extra = [], int $ status = 200 , array $ headers = [])
1923 {
24+ if ($ data instanceof JsonResource) {
25+ $ data = $ data ->toArray (request ());
26+ } elseif (!is_array ($ data )) {
27+ throw new \Exception ('You have to pass $data as JsonResource or Array. ' );
28+ }
29+
2030 return response ()->json ([
21- 'success ' => true ,
22- 'message ' => $ message ,
23- ' data ' => $ data
24- ] + ($ extra ?? []), $ status , $ headers );
31+ 'success ' => true ,
32+ 'message ' => $ message ,
33+ ' data ' => $ data
34+ ] + ($ extra ?? []), $ status , $ headers );
2535 }
2636
2737 public function errors (array $ errors , ?string $ code , ?string $ message = null , ?array $ extra = [], int $ status = 400 , array $ headers = [])
@@ -33,7 +43,7 @@ public function errors(array $errors, ?string $code, ?string $message = null, ?a
3343 $ errs = $ errs [0 ];
3444
3545 return (object )[
36- 'key ' => $ key ,
46+ 'key ' => $ key ,
3747 'value ' => $ errs
3848 ];
3949 }, array_keys ($ errors ), array_values ($ errors )));
@@ -45,26 +55,26 @@ public function errors(array $errors, ?string $code, ?string $message = null, ?a
4555
4656 // RESPONES
4757 return response ()->json ([
48- 'success ' => false ,
49- ' code ' => $ code ,
50- 'message ' => $ message ,
51- ' errors ' => $ errors
52- ] + ($ extra ?? []), $ status , $ headers );
58+ 'success ' => false ,
59+ ' code ' => $ code ,
60+ 'message ' => $ message ,
61+ ' errors ' => $ errors
62+ ] + ($ extra ?? []), $ status , $ headers );
5363 }
5464
5565 public function exception (\Throwable $ exception , ?string $ code = null , ?string $ message = null , ?array $ extra = [], int $ status = 400 , array $ headers = [])
5666 {
5767 return response ()->json ([
58- 'success ' => false ,
59- ' code ' => $ code ?? $ exception ->getCode () ?? null ,
60- 'message ' => $ message ?? $ exception ->getMessage (),
61- ' data ' => (object ) (app ()->environment ('local ' , 'staging ' ) ?
62- [
63- 'line ' => $ exception ->getLine (),
64- 'file ' => $ exception ->getFile (),
65- ] + (config ('Pharaonic.jsonable.tracing ' , false ) ? ['trace ' => $ exception ->getTrace ()] : [])
66- : []
67- )
68- ] + ($ extra ?? []), $ status , $ headers );
68+ 'success ' => false ,
69+ ' code ' => $ code ?? $ exception ->getCode () ?? null ,
70+ 'message ' => $ message ?? $ exception ->getMessage (),
71+ ' data ' => (object )(app ()->environment ('local ' , 'staging ' ) ?
72+ [
73+ 'line ' => $ exception ->getLine (),
74+ 'file ' => $ exception ->getFile (),
75+ ] + (config ('Pharaonic.jsonable.tracing ' , false ) ? ['trace ' => $ exception ->getTrace ()] : [])
76+ : []
77+ )
78+ ] + ($ extra ?? []), $ status , $ headers );
6979 }
7080}
0 commit comments