ResourceResolver::resolve()   A
last analyzed

Complexity

Conditions 5
Paths 6

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 10
c 1
b 0
f 0
nc 6
nop 1
dl 0
loc 17
rs 9.6111
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