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

RonasIT / laravel-swagger / 28350144886

29 Jun 2026 05:12AM UTC coverage: 99.316% (-0.4%) from 99.671%
28350144886

Pull #193

github

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

221 of 225 new or added lines in 11 files covered. (98.22%)

1 existing line in 1 file now uncovered.

1017 of 1024 relevant lines covered (99.32%)

24.46 hits per line

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

97.3
/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\RequestSnapshot;
8
use RonasIT\AutoDoc\DTO\RouteSnapshot;
9
use RonasIT\AutoDoc\Inspectors\ClassControllerInspector;
10
use RonasIT\AutoDoc\Inspectors\ClosureControllerInspector;
11
use RonasIT\AutoDoc\Inspectors\RouteInspector;
12
use RonasIT\AutoDoc\Support\Resolvers\MethodDependencyResolver;
13
use RonasIT\AutoDoc\Support\Resolvers\ResourceSchemaNameResolver;
14

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

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

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

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

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

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

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

66
        if (empty($driver['in'])) {
38✔
67
            return false;
27✔
68
        }
69

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

77
        return !empty($driverName);
11✔
78
    }
79
}
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