diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a6ac9a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+vendor
+build
+#A library must not provide a composer.lock file
+composer.lock
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
new file mode 100644
index 0000000..5a1a311
--- /dev/null
+++ b/.scrutinizer.yml
@@ -0,0 +1,92 @@
+build_failure_conditions:
+ - 'project.metric_change("scrutinizer.quality", < -0.30)'
+ - 'elements.rating(<= D).exists' # No classes/methods with a rating of D or worse
+ - 'issues.severity(>= MAJOR).exists' # New major or higher severity issues
+ - 'project.metric("scrutinizer.quality", < 9)' # Code Quality Rating drops below 9
+ - 'project.metric("scrutinizer.test_coverage", < 1)' # Code Coverage must alway be 100%
+ - 'patches.label("Doc Comments").exists' # No doc comments patches allowed
+ - 'patches.label("Spacing").exists' # No spacing patches allowed
+ - 'patches.label("Bug").exists' # No bug patches allowed
+ - 'issues.label("coding-style").exists' # No coding style issues allowed
+build:
+ dependencies:
+ override:
+ - make build
+ tests:
+ stop_on_failure: true
+ override:
+ - php-scrutinizer-run --enable-security-analysis
+ -
+ command: make codestyle
+ analysis:
+ file: 'build/reports/cs-data'
+ format: 'php-cs-checkstyle'
+ -
+ command: make coverage
+ idle_timeout: 1200
+ coverage:
+ file: 'build/coverage/clover.xml'
+ format: 'php-clover'
+ cache:
+ directories:
+ - ~/.composer
+ - vendor
+
+ environment:
+ variables:
+ CI: 'true'
+ TEST_OUTPUT_STYLE: 'pretty'
+ COMPOSER_OPTIONS: '--optimize-autoloader'
+ COVERAGE_OUTPUT_STYLE: 'clover'
+ COVERAGE_CLOVER_FILE_PATH: 'build/coverage/clover.xml'
+ PHPCS_REPORT_STYLE: 'checkstyle'
+ PHPCS_REPORT_FILE: 'build/reports/cs-data'
+ php:
+ version: "7.1"
+ timezone: UTC
+ postgresql: false
+ redis: false
+filter:
+ paths:
+ - src/*
+checks:
+ php:
+ code_rating: true
+ duplication: true
+ no_debug_code: true
+ check_method_contracts:
+ verify_interface_like_constraints: true
+ verify_documented_constraints: true
+ verify_parent_constraints: true
+ simplify_boolean_return: true
+ return_doc_comments: true
+ return_doc_comment_if_not_inferrable: true
+ remove_extra_empty_lines: true
+ properties_in_camelcaps: true
+ phpunit_assertions: true
+ parameters_in_camelcaps: true
+ parameter_doc_comments: true
+ param_doc_comment_if_not_inferrable: true
+ overriding_parameter: true
+ no_trailing_whitespace: true
+ no_short_variable_names:
+ minimum: '3'
+ no_short_method_names:
+ minimum: '3'
+ no_long_variable_names:
+ maximum: '20'
+ no_goto: true
+ naming_conventions:
+ local_variable: '^[a-z][a-zA-Z0-9]*$'
+ abstract_class_name: ^Abstract|Factory$
+ utility_class_name: 'Utils?$'
+ constant_name: '^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$'
+ property_name: '^[a-z][a-zA-Z0-9]*$'
+ method_name: '^(?:[a-z]|__)[a-zA-Z0-9]*$'
+ parameter_name: '^[a-z][a-zA-Z0-9]*$'
+ interface_name: '^[A-Z][a-zA-Z0-9]*Interface$'
+ type_name: '^[A-Z][a-zA-Z0-9]*$'
+ exception_name: '^[A-Z][a-zA-Z0-9]*Exception$'
+ isser_method_name: '^(?:is|has|should|may|supports)'
+ more_specific_types_in_doc_comments: true
+ fix_doc_comments: false
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b9cd43f
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,33 @@
+language: php
+
+php:
+ - '7.0'
+ - '7.1'
+ - '7.2'
+
+env:
+ global:
+ CI: 'true'
+ TEST_OUTPUT_STYLE: 'pretty'
+ PHPCS_REPORT_STYLE: 'full'
+ COMPOSER_OPTIONS: '--optimize-autoloader'
+
+sudo: false
+
+matrix:
+ fast_finish: true
+
+before_install:
+ # remove xdebug to speed up build
+ - phpenv config-rm xdebug.ini
+
+install:
+ - make build
+script:
+ - make test-technical
+ - make test-functional
+
+cache:
+ directories:
+ - $HOME/.composer
+ - vendor
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5741f51
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,33 @@
+# Contributing
+
+## Getting Started
+ * Fork, then clone the repo:
+```bash
+git clone git@github.com:your-username/symfony-jsonrpc-http-server-openapi-doc.git
+````
+
+ * Make sure everything goes well:
+```bash
+make build
+make test
+```
+
+ * Make your changes (Add/Update tests according to your changes).
+ * Make sure tests are still green:
+```bash
+make test
+```
+
+ * To check code coverage, launch
+```bash
+make coverage
+```
+
+ * Push to your fork and [submit a pull request](https://github.com/yoanm/symfony-jsonrpc-http-server-openapi-doc/compare/).
+ * Wait for feedback or merge.
+
+ Some stuff that will increase your pull request's acceptance:
+ * Write tests.
+ * Follow PSR-2 coding style.
+ * Write good commit messages.
+ * Do not rebase or squash your commits when a review has been made.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..61a3638
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,95 @@
+COLOR_ENABLED ?= true
+TEST_OUTPUT_STYLE ?= dot
+COVERAGE_OUTPUT_STYLE ?= html
+
+## DIRECTORY AND FILE
+BUILD_DIRECTORY ?= build
+REPORTS_DIRECTORY ?= ${BUILD_DIRECTORY}/reports
+COVERAGE_DIRECTORY ?= ${BUILD_DIRECTORY}/coverage
+COVERAGE_CLOVER_FILE_PATH ?= ${COVERAGE_DIRECTORY}/clover.xml
+
+## Commands options
+### Composer
+#COMPOSER_OPTIONS=
+### Phpcs
+PHPCS_REPORT_STYLE ?= full
+#PHPCS_REPORT_FILE=
+#PHPCS_REPORT_FILE_OPTION=
+
+# Enable/Disable color ouput
+ifeq ("${COLOR_ENABLED}","true")
+ PHPUNIT_COLOR_OPTION ?= --colors=always
+ BEHAT_COLOR_OPTION ?= --colors
+ PHPCS_COLOR_OPTION ?= --colors
+ COMPOSER_COLOR_OPTION ?= --ansi
+else
+ PHPUNIT_COLOR_OPTION ?= --colors=never
+ PHPCS_COLOR_OPTION ?= --no-colors
+ BEHAT_COLOR_OPTION ?= --no-colors
+ COMPOSER_COLOR_OPTION ?= --no-ansi
+endif
+
+ifeq ("${TEST_OUTPUT_STYLE}","pretty")
+ PHPUNIT_OUTPUT_STYLE_OPTION ?= --testdox
+ BEHAT_OUTPUT_STYLE_OPTION ?= --format pretty
+else
+ PHPUNIT_OUTPUT_STYLE_OPTION ?=
+ BEHAT_OUTPUT_STYLE_OPTION ?= --format progress
+endif
+
+ifeq ("${COVERAGE_OUTPUT_STYLE}","clover")
+ PHPUNIT_COVERAGE_OPTION ?= --coverage-clover ${COVERAGE_CLOVER_FILE_PATH}
+else
+ ifeq ("${COVERAGE_OUTPUT_STYLE}","html")
+ PHPUNIT_COVERAGE_OPTION ?= --coverage-html ${COVERAGE_DIRECTORY}
+ else
+ PHPUNIT_COVERAGE_OPTION ?= --coverage-text
+ endif
+endif
+
+ifneq ("${PHPCS_REPORT_FILE}","")
+ PHPCS_REPORT_FILE_OPTION ?= --report-file=${PHPCS_REPORT_FILE}
+endif
+
+
+## Project build (install and configure)
+build: install configure
+
+## Project installation
+install:
+ composer install ${COMPOSER_COLOR_OPTION} ${COMPOSER_OPTIONS} --prefer-dist --no-suggest --no-interaction
+
+## project Configuration
+configure:
+
+# Project tests
+test:
+ make test-functional
+ make test-technical
+ make codestyle
+
+test-technical:
+ ./vendor/bin/phpunit ${PHPUNIT_COLOR_OPTION} ${PHPUNIT_OUTPUT_STYLE_OPTION} --testsuite technical
+
+test-functional:
+ ./vendor/bin/phpunit ${PHPUNIT_COLOR_OPTION} ${PHPUNIT_OUTPUT_STYLE_OPTION} --testsuite functional
+ ./vendor/bin/behat ${BEHAT_COLOR_OPTION} ${BEHAT_OUTPUT_STYLE_OPTION} --no-snippets
+
+codestyle: create-reports-directory
+ ./vendor/bin/phpcs --standard=phpcs.xml.dist ${PHPCS_COLOR_OPTION} ${PHPCS_REPORT_FILE_OPTION} --report=${PHPCS_REPORT_STYLE}
+
+coverage: create-coverage-directory
+ ./vendor/bin/phpunit ${PHPUNIT_COLOR_OPTION} ${PHPUNIT_OUTPUT_STYLE_OPTION} ${PHPUNIT_COVERAGE_OPTION}
+
+
+
+# Internal commands
+create-coverage-directory:
+ mkdir -p ${COVERAGE_DIRECTORY}
+
+create-reports-directory:
+ mkdir -p ${REPORTS_DIRECTORY}
+
+
+.PHONY: build install configure test test-technical test-functional codestyle coverage create-coverage-directory create-reports-directory
+.DEFAULT: build
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..482af6d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# Symfony JSON-RPC Http server OpenAPI documentation
+
+[](https://github.com/yoanm/symfony-jsonrpc-http-server-openapi-doc) [](https://github.com/yoanm/symfony-jsonrpc-http-server-openapi-doc) [](https://php.net/)
+
+[](https://scrutinizer-ci.com/g/yoanm/symfony-jsonrpc-http-server-openapi-doc/?branch=master) [](https://scrutinizer-ci.com/g/yoanm/symfony-jsonrpc-http-server-openapi-doc/build-status/master) [](https://scrutinizer-ci.com/g/yoanm/symfony-jsonrpc-http-server-openapi-doc/?branch=master)
+
+[](https://travis-ci.org/yoanm/symfony-jsonrpc-http-server-openapi-doc) [](https://travis-ci.org/yoanm/symfony-jsonrpc-http-server-openapi-doc)
+
+[](https://packagist.org/packages/yoanm/symfony-jsonrpc-http-server-openapi-doc) [](https://packagist.org/packages/yoanm/symfony-jsonrpc-http-server-openapi-doc)
+
+Symfony bundle for easy JSON-RPC server OpenAPI 3.0.0 documentation
+
+## How to use
+
+
+## Contributing
+See [contributing note](./CONTRIBUTING.md)
diff --git a/behat.yml b/behat.yml
new file mode 100644
index 0000000..a5ce152
--- /dev/null
+++ b/behat.yml
@@ -0,0 +1,5 @@
+default:
+ suites:
+ default:
+ contexts:
+ - Tests\Functional\BehatContext\FeatureContext: ~
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..69beefd
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,46 @@
+{
+ "name": "yoanm/symfony-jsonrpc-http-server-openapi-doc",
+ "description": "Symfony bundle for easy JSON-RPC server OpenAPI 3.0.0 documentation",
+ "license": "MIT",
+ "type": "library",
+ "support": {
+ "issues": "https://github.com/yoanm/symfony-jsonrpc-http-server-openapi-doc/issues"
+ },
+ "authors": [
+ {
+ "name": "Yoanm",
+ "email": "yoanm@users.noreply.github.com",
+ "role": "Developer"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "Yoanm\\SymfonyJsonRpcHttpServerOpenAPIDoc\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests",
+ "Tests\\Functional\\BehatContext\\": "features/bootstrap"
+ }
+ },
+ "require": {
+ "php": ">=5.5",
+ "yoanm/jsonrpc-server-doc-sdk": "dev-feature/improve",
+ "yoanm/jsonrpc-http-server-openapi-doc-sdk": "dev-feature/improve",
+ "yoanm/symfony-jsonrpc-http-server-doc": "dev-feature/improve",
+ "symfony/http-foundation": "^3.0 || ^4.0",
+ "symfony/http-kernel": "^3.0 || ^4.0",
+ "symfony/config": "^3.0 || ^4.0",
+ "symfony/dependency-injection": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "behat/behat": "~3.0",
+ "squizlabs/php_codesniffer": "3.*",
+ "phpunit/phpunit": "^6.0 || ^7.0",
+ "matthiasnoback/symfony-dependency-injection-test": "^2.0 || ^3.0",
+ "matthiasnoback/symfony-config-test": "^3.0 || ^4.0",
+ "symfony/framework-bundle": "^3.4",
+ "yoanm/php-unit-extended": "~1.0"
+ }
+}
diff --git a/features/bootstrap/FeatureContext.php b/features/bootstrap/FeatureContext.php
new file mode 100644
index 0000000..f562608
--- /dev/null
+++ b/features/bootstrap/FeatureContext.php
@@ -0,0 +1,21 @@
+
+
+ src
+ tests
+ features/bootstrap
+
+
+
+
+
+
+
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..cb7c344
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+ tests/Functional
+
+
+ tests/Technical
+
+
+
+
+
+ src
+
+
+
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/tests/Functional/.gitkeep b/tests/Functional/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/tests/Technical/.gitkeep b/tests/Technical/.gitkeep
new file mode 100644
index 0000000..e69de29