Skip to content

Commit 410c3bc

Browse files
Merge pull request #1 from HatemElsaid/main
allow passing data in JsonResource in success method
2 parents 8b5401d + 93a0c58 commit 410c3bc

File tree

2 files changed

+35
-25
lines changed

2 files changed

+35
-25
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
}
1616
],
1717
"require": {
18-
"php": ">=8.0",
18+
"php": ">=8.1",
1919
"laravel/framework": ">=8.0"
2020
},
2121
"config": {

src/Json.php

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,36 @@
22

33
namespace 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
*/
1620
class 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

Comments
 (0)