Skip to content

Commit

Permalink
added multiple open api transformers support
Browse files Browse the repository at this point in the history
  • Loading branch information
romalytvynenko committed Jan 12, 2025
1 parent a536cd2 commit d738b6d
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 18 deletions.
4 changes: 3 additions & 1 deletion src/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ public function __invoke(?GeneratorConfig $config = null)
$this->moveSameAlternativeServersToPath($openApi);

if ($afterOpenApiGenerated = $config->afterOpenApiGenerated()) {
$afterOpenApiGenerated($openApi);
foreach ($afterOpenApiGenerated as $openApiTransformer) {
$openApiTransformer($openApi, $context);
}
}

return $openApi->toArray();
Expand Down
8 changes: 5 additions & 3 deletions src/GeneratorConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class GeneratorConfig
public function __construct(
private array $config = [],
private ?Closure $routeResolver = null,
private ?Closure $afterOpenApiGenerated = null,
private array $afterOpenApiGenerated = [],
) {}

public function config(array $config)
Expand Down Expand Up @@ -43,13 +43,15 @@ private function defaultRoutesFilter(Route $route)
&& (! $expectedDomain || $route->getDomain() === $expectedDomain);
}

public function afterOpenApiGenerated(?Closure $afterOpenApiGenerated = null)
public function afterOpenApiGenerated(callable $afterOpenApiGenerated = null)
{
if (count(func_get_args()) === 0) {
return $this->afterOpenApiGenerated;
}

$this->afterOpenApiGenerated = $afterOpenApiGenerated;
if ($afterOpenApiGenerated) {
$this->afterOpenApiGenerated[] = $afterOpenApiGenerated;
}

return $this;
}
Expand Down
9 changes: 0 additions & 9 deletions src/Scramble.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use Dedoc\Scramble\Extensions\TypeToSchemaExtension;
use Dedoc\Scramble\Http\Middleware\RestrictedDocsAccess;
use Dedoc\Scramble\Infer\Extensions\InferExtension;
use Dedoc\Scramble\Support\ClassBasedSchemaNameResolver;
use Dedoc\Scramble\Support\Generator\Operation;
use Dedoc\Scramble\Support\Generator\ServerVariable;
use Dedoc\Scramble\Support\Generator\Types\Type as OpenApiType;
Expand All @@ -19,9 +18,6 @@
use Illuminate\Support\Facades\Route as RouteFacade;
use LogicException;

/**
* @phpstan-import-type NameResolver from ClassBasedSchemaNameResolver
*/
class Scramble
{
public static $routeResolver = null;
Expand Down Expand Up @@ -80,11 +76,6 @@ public static function registerApi(string $name, array $config = []): GeneratorC
return $generatorConfig;
}

public static function nameClassBasedSchemaUsing(Closure $cb): void
{
app(ClassBasedSchemaNameResolver::class)->addNameResolver($cb);
}

/**
* Update open api document before finally rendering it.
*
Expand Down
4 changes: 1 addition & 3 deletions src/ScrambleServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,7 @@ public function bootingPackage()
$this->package->hasRoute('web');
}

Scramble::registerApi('default', config('scramble'))
->routes(Scramble::$routeResolver)
->afterOpenApiGenerated(Scramble::$openApiExtender);
Scramble::registerApi('default', config('scramble'));

$this->app->booted(function () {
Scramble::getGeneratorConfig('default')
Expand Down
4 changes: 2 additions & 2 deletions src/Support/Generator/SecuritySchemes/HttpSecurityScheme.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ public function __construct(string $scheme, string $bearerFormat = '')

public function toArray()
{
return array_merge(parent::toArray(), [
return array_merge(parent::toArray(), array_filter([
'scheme' => $this->scheme,
'bearerFormat' => $this->bearerFormat,
]);
]));
}
}

0 comments on commit d738b6d

Please sign in to comment.