This repository was archived by the owner on Mar 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathJaneOpenApi.php
43 lines (36 loc) · 1.59 KB
/
JaneOpenApi.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace Jane\OpenApi;
use Jane\OpenApi\Generator\AuthenticationGenerator;
use Jane\OpenApiCommon\Generator\ModelGenerator;
use Jane\JsonSchema\Generator\Naming;
use Jane\OpenApiCommon\Generator\NormalizerGenerator;
use Jane\OpenApi\Generator\GeneratorFactory;
use Jane\OpenApi\Guesser\OpenApiSchema\GuesserFactory;
use Jane\OpenApi\SchemaParser\SchemaParser;
use PhpParser\ParserFactory;
use Jane\OpenApiCommon\JaneOpenApi as CommonJaneOpenApi;
class JaneOpenApi extends CommonJaneOpenApi
{
protected const OBJECT_NORMALIZER_CLASS = JsonSchema\Normalizer\JaneObjectNormalizer::class;
public static function build(array $options = [])
{
$serializer = self::buildSerializer();
$schemaParser = new SchemaParser($serializer);
$naming = new Naming();
$parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
$modelGenerator = new ModelGenerator($naming, $parser);
$normGenerator = new NormalizerGenerator($naming, $parser, $options['reference'] ?? false, $options['use-cacheable-supports-method'] ?? false, $options['normalizer-force-null-when-nullable'] ?? true);
$authGenerator = new AuthenticationGenerator($naming);
$self = new self(
$schemaParser,
GuesserFactory::create($serializer, $options),
$naming,
$options['strict'] ?? true
);
$self->addGenerator($modelGenerator);
$self->addGenerator($normGenerator);
$self->addGenerator($authGenerator);
$self->addGenerator(GeneratorFactory::build($serializer));
return $self;
}
}