This repository was archived by the owner on Feb 14, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +71
-1
lines changed Expand file tree Collapse file tree 4 files changed +71
-1
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace SkoreLabs \JsonApi \Contracts ;
4+
5+ interface JsonApiable
6+ {
7+ /**
8+ * Get a custom resource type for JSON:API formatting.
9+ *
10+ * @return string
11+ */
12+ public function resourceType (): string ;
13+ }
Original file line number Diff line number Diff line change 66use Illuminate \Http \Resources \MissingValue ;
77use Illuminate \Support \Str ;
88use SkoreLabs \JsonApi \Concerns \HasConfig ;
9+ use SkoreLabs \JsonApi \Support \JsonApi ;
910
1011class JsonApiResource extends JsonResource
1112{
@@ -81,7 +82,7 @@ public function getResourceIdentifier()
8182 {
8283 return [
8384 $ this ->resource ->getKeyName () => (string ) $ this ->resource ->getKey (),
84- 'type ' => Str:: snake ( class_basename ( $ this ->resource ) ),
85+ 'type ' => JsonApi:: getResourceType ( $ this ->resource ),
8586 ];
8687 }
8788
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace SkoreLabs \JsonApi \Support \Facades ;
4+
5+ use Illuminate \Support \Facades \Facade ;
6+
7+ class JsonApi extends Facade
8+ {
9+ protected static function getFacadeAccessor ()
10+ {
11+ return 'json-api ' ;
12+ }
13+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace SkoreLabs \JsonApi \Support ;
4+
5+ use Illuminate \Contracts \Pagination \LengthAwarePaginator ;
6+ use Illuminate \Support \Collection ;
7+ use SkoreLabs \JsonApi \Contracts \JsonApiable ;
8+ use SkoreLabs \JsonApi \Http \Resources \JsonApiCollection ;
9+ use SkoreLabs \JsonApi \Http \Resources \JsonApiResource ;
10+ use Illuminate \Support \Str ;
11+
12+ class JsonApi
13+ {
14+ /**
15+ * Format the input contents to JSON:API.
16+ *
17+ * @param mixed $value
18+ * @return \SkoreLabs\JsonApi\Http\Resources\JsonApiResource
19+ */
20+ public static function format ($ value )
21+ {
22+ if ($ value instanceof LengthAwarePaginator || $ value instanceof Collection) {
23+ return JsonApiCollection::make ($ value );
24+ }
25+
26+ return JsonApiResource::make ($ value );
27+ }
28+
29+ /**
30+ * Get resource type from a model.
31+ *
32+ * @param \Illuminate\Database\Eloquent\Model|string $model
33+ * @return string
34+ */
35+ public static function getResourceType ($ model )
36+ {
37+ if ($ model instanceof JsonApiable) {
38+ return $ model ->resourceType ();
39+ }
40+
41+ return Str::snake (class_basename (is_string ($ model ) ? $ model : $ model ::class));
42+ }
43+ }
You can’t perform that action at this time.
0 commit comments