Skip to content

Commit 8bca68d

Browse files
authored
Improve (#2)
1 parent b744699 commit 8bca68d

File tree

9 files changed

+264
-14
lines changed

9 files changed

+264
-14
lines changed

.scrutinizer.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,14 @@ build:
1515
tests:
1616
stop_on_failure: true
1717
override:
18-
- php-scrutinizer-run --enable-security-analysis
19-
-
20-
command: make codestyle
21-
analysis:
22-
file: 'build/reports/cs-data'
23-
format: 'php-cs-checkstyle'
2418
-
2519
command: make coverage
2620
idle_timeout: 1200
2721
coverage:
2822
file: 'build/coverage/clover.xml'
2923
format: 'php-clover'
24+
- php-scrutinizer-run --enable-security-analysis
25+
- make codestyle
3026
cache:
3127
directories:
3228
- ~/.composer
@@ -39,8 +35,6 @@ build:
3935
COMPOSER_OPTIONS: '--optimize-autoloader'
4036
COVERAGE_OUTPUT_STYLE: 'clover'
4137
COVERAGE_CLOVER_FILE_PATH: 'build/coverage/clover.xml'
42-
PHPCS_REPORT_STYLE: 'checkstyle'
43-
PHPCS_REPORT_FILE: 'build/reports/cs-data'
4438
php:
4539
version: "7.1"
4640
timezone: UTC

.travis.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
language: php
22

33
php:
4-
- '7.0'
54
- '7.1'
65
- '7.2'
6+
- '7.3'
77

88
env:
99
global:
1010
CI: 'true'
1111
TEST_OUTPUT_STYLE: 'pretty'
1212
PHPCS_REPORT_STYLE: 'full'
1313
COMPOSER_OPTIONS: '--optimize-autoloader'
14+
matrix:
15+
- SYMFONY_VERSION: '~3.0'
16+
- SYMFONY_VERSION: '~4.0'
1417

1518
sudo: false
1619

@@ -19,9 +22,10 @@ matrix:
1922

2023
before_install:
2124
# remove xdebug to speed up build
22-
- phpenv config-rm xdebug.ini
25+
- phpenv config-rm xdebug.ini || true
2326

2427
install:
28+
- composer require symfony/http-foundation:$SYMFONY_VERSION symfony/http-kernel:$SYMFONY_VERSION symfony/config:$SYMFONY_VERSION symfony/dependency-injection:$SYMFONY_VERSION
2529
- make build
2630
script:
2731
- make test-technical

composer.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "yoanm/symfony-jsonrpc-http-server-swagger-doc",
33
"description": "Symfony bundle for easy JSON-RPC server Swagger 2.0 documentation",
44
"license": "MIT",
5+
"minimum-stability": "dev",
56
"type": "library",
67
"support": {
78
"issues": "https://github.com/yoanm/symfony-jsonrpc-http-server-swagger-doc/issues"
@@ -25,10 +26,10 @@
2526
}
2627
},
2728
"require": {
28-
"php": ">=5.5",
29-
"yoanm/jsonrpc-server-doc-sdk": "dev-feature/improve",
30-
"yoanm/jsonrpc-http-server-swagger-doc-sdk": "dev-feature/improve",
31-
"yoanm/symfony-jsonrpc-http-server-doc": "dev-feature/improve",
29+
"php": ">=7.1",
30+
"yoanm/jsonrpc-server-doc-sdk": "dev-release/1.0.0",
31+
"yoanm/jsonrpc-http-server-swagger-doc-sdk": "dev-release/1.0.0",
32+
"yoanm/symfony-jsonrpc-http-server-doc": "dev-release/0.1.0",
3233
"symfony/http-foundation": "^3.0 || ^4.0",
3334
"symfony/http-kernel": "^3.0 || ^4.0",
3435
"symfony/config": "^3.0 || ^4.0",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
namespace Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc\DependencyInjection;
3+
4+
use Symfony\Component\Config\FileLocator;
5+
use Symfony\Component\DependencyInjection\ContainerBuilder;
6+
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
7+
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
8+
9+
/**
10+
* Class JsonRpcHttpServerSwaggerDocExtension
11+
*/
12+
class JsonRpcHttpServerSwaggerDocExtension implements ExtensionInterface
13+
{
14+
// Extension identifier (used in configuration for instance)
15+
const EXTENSION_IDENTIFIER = 'json_rpc_http_server_swagger_doc';
16+
17+
/**
18+
* {@inheritdoc}
19+
*/
20+
public function load(array $configs, ContainerBuilder $container)
21+
{
22+
$loader = new YamlFileLoader(
23+
$container,
24+
new FileLocator(__DIR__.'/../Resources/config')
25+
);
26+
$loader->load('services.sdk.yaml');
27+
$loader->load('services.public.yaml');
28+
}
29+
30+
/**
31+
* {@inheritdoc}
32+
*/
33+
public function getNamespace()
34+
{
35+
return 'http://example.org/schema/dic/'.$this->getAlias();
36+
}
37+
38+
/**
39+
* {@inheritdoc}
40+
*/
41+
public function getXsdValidationBasePath()
42+
{
43+
return '';
44+
}
45+
46+
/**
47+
* {@inheritdoc}
48+
*/
49+
public function getAlias()
50+
{
51+
return self::EXTENSION_IDENTIFIER;
52+
}
53+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
namespace Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc\Event;
3+
4+
use Yoanm\JsonRpcServerDoc\Domain\Model\HttpServerDoc;
5+
use Yoanm\SymfonyJsonRpcHttpServerDoc\Event\DocEvent;
6+
7+
/**
8+
* Class SwaggerDocCreatedEvent
9+
*/
10+
class SwaggerDocCreatedEvent extends DocEvent
11+
{
12+
const EVENT_NAME = 'json_rpc_http_server_swagger_doc.array_created';
13+
14+
/** @var array */
15+
private $swaggerDoc;
16+
/** @var HttpServerDoc|null */
17+
private $serverDoc;
18+
19+
/**
20+
* @param array $swaggerDoc
21+
* @param HttpServerDoc|null $serverDoc
22+
*/
23+
public function __construct(
24+
array $swaggerDoc,
25+
HttpServerDoc $serverDoc = null
26+
) {
27+
$this->swaggerDoc = $swaggerDoc;
28+
$this->serverDoc = $serverDoc;
29+
}
30+
31+
/**
32+
* @return HttpServerDoc
33+
*/
34+
public function getSwaggerDoc()
35+
{
36+
return $this->swaggerDoc;
37+
}
38+
39+
/**
40+
* @return HttpServerDoc|null
41+
*/
42+
public function getServerDoc()
43+
{
44+
return $this->serverDoc;
45+
}
46+
47+
/**
48+
* @param array $swaggerDoc
49+
*
50+
* @return SwaggerDocCreatedEvent
51+
*/
52+
public function setSwaggerDoc(array $swaggerDoc)
53+
{
54+
$this->swaggerDoc = $swaggerDoc;
55+
56+
return $this;
57+
}
58+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
namespace Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc;
3+
4+
use Symfony\Component\HttpKernel\Bundle\Bundle;
5+
6+
/**
7+
* Class JsonRpcHttpServerSwaggerDocBundle
8+
*/
9+
class JsonRpcHttpServerSwaggerDocBundle extends Bundle
10+
{
11+
}

src/Provider/DocProvider.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
namespace Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc\Provider;
3+
4+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
5+
use Yoanm\JsonRpcHttpServerSwaggerDoc\Infra\Normalizer\DocNormalizer;
6+
use Yoanm\SymfonyJsonRpcHttpServerDoc\Creator\HttpServerDocCreator;
7+
use Yoanm\SymfonyJsonRpcHttpServerDoc\Provider\DocProviderInterface;
8+
use Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc\Event\SwaggerDocCreatedEvent;
9+
10+
/**
11+
* Class DocProvider
12+
*/
13+
class DocProvider implements DocProviderInterface
14+
{
15+
/** @var EventDispatcherInterface */
16+
private $dispatcher;
17+
/** @var HttpServerDocCreator */
18+
private $serverDocCreator;
19+
/** @var DocNormalizer */
20+
private $docNormalizer;
21+
22+
/**
23+
* @param EventDispatcherInterface $dispatcher
24+
* @param HttpServerDocCreator $serverDocCreator
25+
* @param DocNormalizer $docNormalizer
26+
*/
27+
public function __construct(
28+
EventDispatcherInterface $dispatcher,
29+
HttpServerDocCreator $serverDocCreator,
30+
DocNormalizer $docNormalizer
31+
) {
32+
$this->dispatcher = $dispatcher;
33+
$this->serverDocCreator = $serverDocCreator;
34+
$this->docNormalizer = $docNormalizer;
35+
}
36+
37+
/**
38+
* @param string|null $host
39+
*
40+
* @return array
41+
*/
42+
public function getDoc($host = null)
43+
{
44+
$rawDoc = $this->serverDocCreator->create($host);
45+
$swaggerDoc = $this->docNormalizer->normalize($rawDoc);
46+
47+
$event = new SwaggerDocCreatedEvent($swaggerDoc, $rawDoc);
48+
$this->dispatcher->dispatch($event::EVENT_NAME, $event);
49+
50+
return $event->getSwaggerDoc();
51+
}
52+
53+
/**
54+
* {@inheritdoc}
55+
*/
56+
public function supports($filename, $host = null)
57+
{
58+
return 'swagger.json' === $filename;
59+
}
60+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
services:
2+
_defaults:
3+
public: true
4+
5+
json_rpc_http_server_swagger_doc.provider:
6+
class: Yoanm\SymfonyJsonRpcHttpServerSwaggerDoc\Provider\DocProvider
7+
arguments:
8+
- '@event_dispatcher'
9+
- '@json_rpc_http_server_doc.creator.http_server'
10+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.doc'
11+
tags: ['json_rpc_server_doc.doc_provider']
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
services:
2+
_defaults:
3+
public: true
4+
5+
6+
# Def resolver
7+
json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref:
8+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Resolver\DefinitionRefResolver
9+
10+
11+
# Normalizer
12+
json_rpc_http_server_swagger_doc_sdk.normalizer.doc:
13+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\Infra\Normalizer\DocNormalizer
14+
arguments:
15+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.external_schema_list'
16+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.operation'
17+
18+
## Components
19+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.shape:
20+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\ShapeNormalizer
21+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.schema_type:
22+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\SchemaTypeNormalizer
23+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.result_doc:
24+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\ResultDocNormalizer
25+
arguments:
26+
- '@json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref'
27+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.type:
28+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\TypeDocNormalizer
29+
arguments:
30+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.schema_type'
31+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.error:
32+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\ErrorDocNormalizer
33+
arguments:
34+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.type'
35+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.shape'
36+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.external_schema_list:
37+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\ExternalSchemaListDocNormalizer
38+
arguments:
39+
- '@json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref'
40+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.type'
41+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.error'
42+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.shape'
43+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.request:
44+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\RequestDocNormalizer
45+
arguments:
46+
- '@json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref'
47+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.shape'
48+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.response:
49+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\ResponseDocNormalizer
50+
arguments:
51+
- '@json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref'
52+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.shape'
53+
json_rpc_http_server_swagger_doc_sdk.normalizer.component.operation:
54+
class: Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component\OperationDocNormalizer
55+
arguments:
56+
- '@json_rpc_http_server_swagger_doc_sdk.resolver.definition_ref'
57+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.request'
58+
- '@json_rpc_http_server_swagger_doc_sdk.normalizer.component.response'

0 commit comments

Comments
 (0)