Skip to content

Commit c2b5aed

Browse files
authored
v0.1.0
2 parents c3d608c + 832453b commit c2b5aed

File tree

68 files changed

+6052
-69
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+6052
-69
lines changed

.scrutinizer.yml

Lines changed: 3 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,7 @@ 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'
38+
PHPCS_DISABLE_WARNING: "true"
4439
php:
4540
version: "7.1"
4641
timezone: UTC

.travis.yml

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

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

88
env:
99
global:
@@ -19,7 +19,7 @@ matrix:
1919

2020
before_install:
2121
# remove xdebug to speed up build
22-
- phpenv config-rm xdebug.ini
22+
- phpenv config-rm xdebug.ini || true
2323

2424
install:
2525
- make build
@@ -31,3 +31,7 @@ cache:
3131
directories:
3232
- $HOME/.composer
3333
- vendor
34+
35+
branches:
36+
except:
37+
- /.*\-dev$/

Makefile

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ COVERAGE_OUTPUT_STYLE ?= html
66
BUILD_DIRECTORY ?= build
77
REPORTS_DIRECTORY ?= ${BUILD_DIRECTORY}/reports
88
COVERAGE_DIRECTORY ?= ${BUILD_DIRECTORY}/coverage
9+
BEHAT_COVERAGE_DIRECTORY ?= ${BUILD_DIRECTORY}/behat-coverage
910
COVERAGE_CLOVER_FILE_PATH ?= ${COVERAGE_DIRECTORY}/clover.xml
1011

1112
## Commands options
1213
### Composer
1314
#COMPOSER_OPTIONS=
1415
### Phpcs
1516
PHPCS_REPORT_STYLE ?= full
17+
PHPCS_DISABLE_WARNING ?= "false"
1618
#PHPCS_REPORT_FILE=
1719
#PHPCS_REPORT_FILE_OPTION=
1820

@@ -51,6 +53,12 @@ ifneq ("${PHPCS_REPORT_FILE}","")
5153
PHPCS_REPORT_FILE_OPTION ?= --report-file=${PHPCS_REPORT_FILE}
5254
endif
5355

56+
ifneq ("${PHPCS_DISABLE_WARNING}","true")
57+
PHPCS_DISABLE_WARNING_OPTION=
58+
else
59+
PHPCS_DISABLE_WARNING_OPTION=-n
60+
endif
61+
5462

5563
## Project build (install and configure)
5664
build: install configure
@@ -76,20 +84,26 @@ test-functional:
7684
./vendor/bin/behat ${BEHAT_COLOR_OPTION} ${BEHAT_OUTPUT_STYLE_OPTION} --no-snippets
7785

7886
codestyle: create-reports-directory
79-
./vendor/bin/phpcs --standard=phpcs.xml.dist ${PHPCS_COLOR_OPTION} ${PHPCS_REPORT_FILE_OPTION} --report=${PHPCS_REPORT_STYLE}
87+
./vendor/bin/phpcs ${PHPCS_DISABLE_WARNING_OPTION} --standard=phpcs.xml.dist ${PHPCS_COLOR_OPTION} ${PHPCS_REPORT_FILE_OPTION} --report=${PHPCS_REPORT_STYLE}
8088

8189
coverage: create-coverage-directory
8290
./vendor/bin/phpunit ${PHPUNIT_COLOR_OPTION} ${PHPUNIT_OUTPUT_STYLE_OPTION} ${PHPUNIT_COVERAGE_OPTION}
8391

92+
behat-coverage: create-behat-coverage-directory
93+
composer required leanphp/behat-code-coverage
94+
./vendor/bin/behat ${BEHAT_COLOR_OPTION} ${BEHAT_OUTPUT_STYLE_OPTION} --no-snippets --profile coverage
8495

8596

8697
# Internal commands
8798
create-coverage-directory:
8899
mkdir -p ${COVERAGE_DIRECTORY}
89100

101+
create-behat-coverage-directory:
102+
mkdir -p ${BEHAT_COVERAGE_DIRECTORY}
103+
90104
create-reports-directory:
91105
mkdir -p ${REPORTS_DIRECTORY}
92106

93107

94-
.PHONY: build install configure test test-technical test-functional codestyle coverage create-coverage-directory create-reports-directory
108+
.PHONY: build install configure test test-technical test-functional codestyle coverage behat-coverage create-coverage-directory create-behat-coverage-directory create-reports-directory
95109
.DEFAULT: build

README.md

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,89 @@
1-
# JSON-RPC server symfony plugin
2-
[![License](https://img.shields.io/github/license/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://github.com/yoanm/php-jsonrpc-server-doc-sdk) [![Code size](https://img.shields.io/github/languages/code-size/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://github.com/yoanm/php-jsonrpc-server-doc-sdk) [![PHP Versions](https://img.shields.io/badge/php-7.0%20%2F%207.1%20%2F%207.2-8892BF.svg)](https://php.net/)
1+
# JSON-RPC server documentation
2+
[![License](https://img.shields.io/github/license/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://github.com/yoanm/php-jsonrpc-server-doc-sdk) [![Code size](https://img.shields.io/github/languages/code-size/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://github.com/yoanm/php-jsonrpc-server-doc-sdk) [![Dependencies](https://img.shields.io/librariesio/github/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://libraries.io/packagist/yoanm%jsonrpc-server-doc-sdk)
33

4-
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/?branch=master) [![Build Status](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/badges/build.png?b=master)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/build-status/master) [![Code Coverage](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/?branch=master)
4+
[![Scrutinizer Build Status](https://img.shields.io/scrutinizer/build/g/yoanm/php-jsonrpc-server-doc-sdk.svg?label=Scrutinizer&logo=scrutinizer)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/build-status/master) [![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/yoanm/php-jsonrpc-server-doc-sdk/master.svg?logo=scrutinizer)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/?branch=master) [![Code Coverage](https://img.shields.io/scrutinizer/coverage/g/yoanm/php-jsonrpc-server-doc-sdk/master.svg?logo=scrutinizer)](https://scrutinizer-ci.com/g/yoanm/php-jsonrpc-server-doc-sdk/?branch=master)
55

6-
[![Travis Build Status](https://img.shields.io/travis/yoanm/php-jsonrpc-server-doc-sdk/master.svg?label=travis)](https://travis-ci.org/yoanm/php-jsonrpc-server-doc-sdk) [![Travis PHP versions](https://img.shields.io/travis/php-v/yoanm/php-jsonrpc-server-doc-sdk.svg)](https://travis-ci.org/yoanm/php-jsonrpc-server-doc-sdk)
6+
[![Travis Build Status](https://img.shields.io/travis/yoanm/php-jsonrpc-server-doc-sdk/master.svg?label=Travis&logo=travis)](https://travis-ci.org/yoanm/php-jsonrpc-server-doc-sdk) [![Travis PHP versions](https://img.shields.io/travis/php-v/yoanm/php-jsonrpc-server-doc-sdk.svg?logo=travis)](https://travis-ci.org/yoanm/php-jsonrpc-server-doc-sdk)
77

88
[![Latest Stable Version](https://img.shields.io/packagist/v/yoanm/jsonrpc-server-doc-sdk.svg)](https://packagist.org/packages/yoanm/jsonrpc-server-doc-sdk) [![Packagist PHP version](https://img.shields.io/packagist/php-v/yoanm/jsonrpc-server-doc-sdk.svg)](https://packagist.org/packages/yoanm/jsonrpc-server-doc-sdk)
99

10-
Php SDK to generate Http JSON-RPC server documentation
10+
Php SDK to generate (Http) JSON-RPC server documentation
11+
12+
See [yoanm/symfony-jsonrpc-http-server-doc](https://github.com/yoanm/symfony-jsonrpc-http-server-doc) for automatic dependency injection.
13+
14+
See [yoanm/jsonrpc-params-symfony-constraint-doc-sdk](https://github.com/yoanm/php-jsonrpc-params-symfony-constraint-doc-sdk) for params documentation generation.
15+
16+
## Availble formats
17+
18+
- Raw : Built-in `json` format
19+
- Swagger : [yoanm/jsonrpc-http-server-swagger-doc-sdk](https://github.com/yoanm/php-jsonrpc-http-server-swagger-doc-sdk)
20+
- OpenApi : [yoanm/jsonrpc-http-server-openapi-doc-sdk](https://github.com/yoanm/php-jsonrpc-http-server-openapi-doc-sdk)
1121

1222
## How to use
1323

24+
### Php objects
25+
Available documentation objects:
26+
- [`ServerDoc`](./src/Domain/Model/ServerDoc.php) and [`HttpServerDoc`](./src/Domain/Model/HttpServerDoc.php) for HTTP server
27+
- [`MethodDoc`](./src/Domain/Model/MethodDoc.php)
28+
- [`ErrorDoc`](./src/Domain/Model/ErrorDoc.php)
29+
- [`TagDoc`](./src/Domain/Model/TagDoc.php) : Allow to tag methods
30+
- Types :
31+
- [`TypeDoc`](./src/Domain/Model/Type/TypeDoc.php) : Basic type
32+
- [`BooleanDoc`](./src/Domain/Model/Type/BooleanDoc.php)
33+
- [`ScalarDoc`](./src/Domain/Model/Type/ScalarDoc.php)
34+
- [`StringDoc`](./src/Domain/Model/Type/StringDoc.php)
35+
- [`NumberDoc`](./src/Domain/Model/Type/NumberDoc.php)
36+
- [`IntegerDoc`](./src/Domain/Model/Type/IntegerDoc.php)
37+
- [`FloatDoc`](./src/Domain/Model/Type/FloatDoc.php)
38+
- [`CollectionDoc`](./src/Domain/Model/Type/CollectionDoc.php)
39+
- [`ArrayDoc`](./src/Domain/Model/Type/ArrayDoc.php)
40+
- [`ObjectDoc`](./src/Domain/Model/Type/ObjectDoc.php)
41+
42+
### Normalizers
43+
Available normalizers :
44+
- [`TypeDocNormalizer`](./src/Infra/Normalizer/TypeDocNormalizer.php)
45+
```php
46+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\TypeDocNormalizer;
47+
48+
$typeDocNormalizer = new TypeDocNormalizer();
49+
```
50+
- [`TagDocNormalizer`](./src/Infra/Normalizer/TagDocNormalizer.php)
51+
```php
52+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\TagDocNormalizer;
53+
54+
$tagDocNormalizer = new TagDocNormalizer();
55+
```
56+
- [`ErrorDocNormalizer`](./src/Infra/Normalizer/ErrorDocNormalizer.php)
57+
```php
58+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\MethodDocNormalizer;
59+
60+
$errorDocNormalizer = new ErrorDocNormalizer($typeDocNormalizer);
61+
```
62+
- [`MethodDocNormalizer`](./src/Infra/Normalizer/MethodDocNormalizer.php)
63+
```php
64+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\MethodDocNormalizer;
65+
66+
$tagDocNormalizer = new MethodDocNormalizer(
67+
$typeDocNormalizer,
68+
$errorDocNormalizer
69+
);
70+
```
71+
- [`ServerDocNormalizer`](./src/Infra/Normalizer/ServerDocNormalizer.php) and [`HttpServerDocNormalizer`](./src/Infra/Normalizer/HttpServerDocNormalizer.php) for HTTP server
72+
```php
73+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\ServerDocNormalizer;
74+
use Yoanm\JsonRpcServerDoc\Infra\Normalizer\HttpServerDocNormalizer;
75+
76+
$normalizer = new ServerDocNormalizer(
77+
$methodDocNormalizer,
78+
$tagDocNormalizer,
79+
$errorDocNormalizer
80+
);
81+
82+
$httpNormalizer = new HttpServerDocNormalizer($normalizer);
83+
```
84+
85+
86+
87+
1488
## Contributing
1589
See [contributing note](./CONTRIBUTING.md)

behat.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,18 @@ default:
22
suites:
33
default:
44
contexts:
5-
- Tests\Functional\BehatContext\FeatureContext: ~
5+
- Tests\Functional\BehatContext\DocNormalizerContext: ~
6+
coverage:
7+
extensions:
8+
LeanPHP\Behat\CodeCoverage\Extension:
9+
drivers:
10+
- local
11+
filter:
12+
whitelist:
13+
include:
14+
directories:
15+
'src': ~
16+
report:
17+
format: html
18+
options:
19+
target: build/behat-coverage

composer.json

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,45 @@
11
{
2-
"name": "yoanm/jsonrpc-server-doc-sdk",
3-
"description": "SDK to generate Http JSON-RPC server documentation",
4-
"license": "MIT",
5-
"type": "library",
6-
"support": {
7-
"issues": "https://github.com/yoanm/php-jsonrpc-server-doc-sdk/issues"
8-
},
9-
"authors": [
10-
{
11-
"name": "Yoanm",
12-
"email": "yoanm@users.noreply.github.com",
13-
"role": "Developer"
14-
}
15-
],
16-
"autoload": {
17-
"psr-4": {
18-
"Yoanm\\JsonRpcServerDoc\\": "src"
19-
}
20-
},
21-
"autoload-dev": {
22-
"psr-4": {
23-
"Tests\\": "tests",
24-
"Tests\\Functional\\BehatContext\\": "features/bootstrap"
25-
}
26-
},
27-
"require": {
28-
"php": ">=7.0"
29-
},
30-
"require-dev": {
31-
"behat/behat": "~3.0",
32-
"squizlabs/php_codesniffer": "3.*",
33-
"phpunit/phpunit": "^6.0 || ^7.0",
34-
"yoanm/php-unit-extended": "~1.0"
2+
"name": "yoanm/jsonrpc-server-doc-sdk",
3+
"description": "SDK to generate (Http) JSON-RPC server documentation",
4+
"license": "MIT",
5+
"type": "library",
6+
"support": {
7+
"issues": "https://github.com/yoanm/php-jsonrpc-server-doc-sdk/issues"
8+
},
9+
"authors": [
10+
{
11+
"name": "Yoanm",
12+
"email": "yoanm@users.noreply.github.com",
13+
"role": "Developer"
3514
}
15+
],
16+
"autoload": {
17+
"psr-4": {
18+
"Yoanm\\JsonRpcServerDoc\\": "src"
19+
}
20+
},
21+
"autoload-dev": {
22+
"psr-4": {
23+
"Tests\\": "tests",
24+
"Tests\\Functional\\BehatContext\\": "features/bootstrap"
25+
}
26+
},
27+
"suggest": {
28+
"yoanm/jsonrpc-params-symfony-constraint-doc-sdk": "SDK to generate JSON-RPC documentation from symfony constraint",
29+
"yoanm/jsonrpc-http-server-swagger-doc-sdk": "SDK to generate Http JSON-RPC server documentation for Swagger v2.0",
30+
"yoanm/jsonrpc-http-server-openapi-doc-sdk": "SDK to generate Http JSON-RPC server documentation for OpenAPI v3.0.0",
31+
"yoanm/jsonrpc-server-sdk": "Server SDK to convert a json-rpc request string into json-rpc response string",
32+
"yoanm/symfony-jsonrpc-http-server-doc": "Symfony bundle for easy JSON-RPC server documentation",
33+
"yoanm/symfony-jsonrpc-http-server": "Symfony Bundle to convert an HTTP json-rpc request into HTTP json-rpc response"
34+
},
35+
"require": {
36+
"php": ">=7.1"
37+
},
38+
"require-dev": {
39+
"ext-json": "*",
40+
"behat/behat": "~3.0",
41+
"squizlabs/php_codesniffer": "3.*",
42+
"phpunit/phpunit": "^6.0 || ^7.0",
43+
"yoanm/php-unit-extended": "~1.0"
44+
}
3645
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
namespace Tests\Functional\BehatContext;
3+
4+
use Behat\Behat\Context\Context;
5+
6+
class AbstractContext implements Context
7+
{
8+
public function jsonDecode($encodedData)
9+
{
10+
$decoded = json_decode($encodedData, true);
11+
12+
if (JSON_ERROR_NONE != json_last_error()) {
13+
throw new \Exception(
14+
json_last_error_msg(),
15+
json_last_error()
16+
);
17+
}
18+
19+
return $decoded;
20+
}
21+
22+
/**
23+
* @param object $object
24+
* @param array $decodedMethodCalls
25+
*/
26+
protected function callMethods($object, array $decodedMethodCalls)
27+
{
28+
foreach ($decodedMethodCalls as $decodedMethodCall) {
29+
call_user_func_array(
30+
[$object, $decodedMethodCall['method']],
31+
$decodedMethodCall['arguments'] ?? []
32+
);
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)