ResourceResolver   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 11
c 3
b 1
f 0
dl 0
loc 25
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A resolve() 0 17 5
1
<?php
2
3
namespace Signifly\Responder\Support;
4
5
use Illuminate\Http\Resources\Json\JsonResource;
6
use Signifly\Responder\Contracts\ResourceResolver as Contract;
7
use Signifly\Responder\Exceptions\ResourceNotFoundException;
8
9
class ResourceResolver implements Contract
10
{
11
    /**
12
     * Resolve a resource from a model class.
13
     *
14
     * @param  string $model
15
     * @return string|null
16
     */
17
    public function resolve(string $model): string
18
    {
19
        $modelName = class_basename($model);
20
21
        $resourceName = config('responder.namespace').'\\'.$modelName;
22
23
        $resourceClass = config('responder.use_type_suffix')
24
            ? $resourceName.'Resource'
25
            : $resourceName;
26
27
        if (! class_exists($resourceClass) && config('responder.force_resources')) {
28
            throw ResourceNotFoundException::for($resourceClass);
29
        }
30
31
        return class_exists($resourceClass)
32
            ? $resourceClass
33
            : config('responder.default_resource', JsonResource::class);
34
    }
35
}
36