• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

RonasIT / laravel-swagger / 28349344520

29 Jun 2026 04:49AM UTC coverage: 99.318% (-0.4%) from 99.671%
28349344520

Pull #193

github

web-flow
Merge 7c6d0d10f into ead648e99
Pull Request #193: feat: name response object by resource class

224 of 228 new or added lines in 12 files covered. (98.25%)

1 existing line in 1 file now uncovered.

1020 of 1027 relevant lines covered (99.32%)

24.5 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.44
/src/Support/Factories/RequestSnapshotFactory.php
1
<?php
2

3
namespace RonasIT\AutoDoc\Support\Factories;
4

5
use Illuminate\Http\Request;
6
use RonasIT\AutoDoc\Contracts\ControllerInspectorContract;
7
use RonasIT\AutoDoc\DTO\HttpActionMeta;
8
use RonasIT\AutoDoc\DTO\RequestSnapshot;
9
use RonasIT\AutoDoc\DTO\RouteSnapshot;
10
use RonasIT\AutoDoc\Inspectors\ClassControllerInspector;
11
use RonasIT\AutoDoc\Inspectors\ClosureControllerInspector;
12
use RonasIT\AutoDoc\Inspectors\RouteInspector;
13
use RonasIT\AutoDoc\Support\Resolvers\MethodDependencyResolver;
14
use RonasIT\AutoDoc\Support\Resolvers\ResourceSchemaNameResolver;
15

16
class RequestSnapshotFactory
17
{
18
    public function __construct(
19
        private MethodDependencyResolver $dependencyResolver,
20
        private ResourceSchemaNameResolver $resourceSchemaNameResolver,
21
        private RequestDataFactory $requestDataFactory,
22
    ) {
23
    }
115✔
24

25
    public function make(Request $request): RequestSnapshot
26
    {
27
        $routeInspector = new RouteInspector($request->route());
38✔
28

29
        $controllerInspector = $this->getControllerInspector($routeInspector);
38✔
30

31
        $requestClass = $controllerInspector->getRequestClass();
38✔
32
        $resourceSchemaName = $controllerInspector->getResourceSchemaName();
38✔
33

34
        return new RequestSnapshot(
38✔
35
            route: new RouteSnapshot(
38✔
36
                uri: $routeInspector->getUri(),
38✔
37
                httpMethod: strtolower($request->method()),
38✔
38
                wheres: $routeInspector->getWheres(),
38✔
39
            ),
38✔
40
            action: new HttpActionMeta(
38✔
41
                requestClass: $requestClass,
38✔
42
                resourceSchemaName: $resourceSchemaName,
38✔
43
            ),
38✔
44
            requestData: $this->requestDataFactory->make($request, $requestClass),
38✔
45
            hasSecurityToken: $this->resolveSecurityToken($request),
38✔
46
        );
38✔
47
    }
48

49
    protected function getControllerInspector(RouteInspector $routeInspector): ControllerInspectorContract
50
    {
51
        return $routeInspector->isClosureAction()
38✔
52
            ? new ClosureControllerInspector(
3✔
53
                closure: $routeInspector->getClosure(),
3✔
54
                resourceSchemaNameResolver: $this->resourceSchemaNameResolver,
3✔
55
            )
3✔
56
            : new ClassControllerInspector(
38✔
57
                class: $routeInspector->getControllerClass(),
38✔
58
                method: $routeInspector->getControllerMethod(),
38✔
59
                dependencyResolver: $this->dependencyResolver,
38✔
60
                resourceSchemaNameResolver: $this->resourceSchemaNameResolver,
38✔
61
            );
38✔
62
    }
63

64
    protected function resolveSecurityToken(Request $request): bool
65
    {
66
        $security = config('auto-doc.security', '');
38✔
67
        $driver = config("auto-doc.security_drivers.{$security}", []);
38✔
68

69
        if (empty($driver['in'])) {
38✔
70
            return false;
27✔
71
        }
72

73
        $driverName = match ($driver['in']) {
11✔
74
            'header' => $request->header($driver['name']),
9✔
75
            'cookie' => $request->cookie($driver['name']),
1✔
76
            'query' => $request->query($driver['name']),
1✔
NEW
77
            default => null,
×
78
        };
79

80
        return !empty($driverName);
11✔
81
    }
82
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc