Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit babc80e

Browse files
authored
v0.1.0
2 parents a8f0cec + 5f93658 commit babc80e

20 files changed

+781
-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: 10 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/validator:$SYMFONY_VERSION
2529
- make build
2630
script:
2731
- make test-technical
@@ -31,3 +35,7 @@ cache:
3135
directories:
3236
- $HOME/.composer
3337
- vendor
38+
39+
branches:
40+
except:
41+
- /.*\-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 & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,92 @@
11
# JSON-RPC params symfony validator
2-
[![License](https://img.shields.io/github/license/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://github.com/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![Code size](https://img.shields.io/github/languages/code-size/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://github.com/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![PHP Versions](https://img.shields.io/badge/php-7.0%20%2F%207.1%20%2F%207.2-8892BF.svg)](https://php.net/)
2+
[![License](https://img.shields.io/github/license/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://github.com/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![Code size](https://img.shields.io/github/languages/code-size/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://github.com/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![Dependencies](https://img.shields.io/librariesio/github/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://libraries.io/packagist/yoanm%2Fjsonrpc-params-symfony-validator-sdk)
33

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

6-
[![Travis Build Status](https://img.shields.io/travis/yoanm/php-jsonrpc-params-symfony-validator-sdk/master.svg?label=travis)](https://travis-ci.org/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![Travis PHP versions](https://img.shields.io/travis/php-v/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg)](https://travis-ci.org/yoanm/php-jsonrpc-params-symfony-validator-sdk)
6+
[![Travis Build Status](https://img.shields.io/travis/com/yoanm/php-jsonrpc-params-symfony-validator-sdk/master.svg?label=Travis&logo=travis)](https://travis-ci.com/yoanm/php-jsonrpc-params-symfony-validator-sdk) [![Travis PHP versions](https://img.shields.io/travis/php-v/yoanm/php-jsonrpc-params-symfony-validator-sdk.svg?logo=travis)](https://travis-ci.com/yoanm/php-jsonrpc-params-symfony-validator-sdk)[![Travis Symfony Versions](https://img.shields.io/badge/Symfony-v3%20%2F%20v4-8892BF.svg?logo=travis)](https://php.net/)
77

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

1010
Simple JSON-RPC params validator that use Symfony validator component
1111

12+
See [yoanm/symfony-jsonrpc-params-validator](https://github.com/yoanm/symfony-jsonrpc-params-validator) 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 documentation generation.
15+
1216
## How to use
1317

18+
In order to be validated, a JSON-RPC method must :
19+
- Implements `JsonRpcMethodInterface` from [`yoanm/jsonrpc-server-sdk`](https://github.com/yoanm/php-jsonrpc-server-sdk)
20+
- Implements [`MethodWithValidatedParamsInterface`](./src/Infra/JsonRpcParamsValidator.php)
21+
22+
### With [`yoanm/jsonrpc-server-sdk`](https://github.com/yoanm/php-jsonrpc-server-sdk)
23+
Create the validator and inject it into request handler :
24+
```php
25+
$requestHandler->setMethodParamsValidator(
26+
new JsonRpcParamsValidator(
27+
(new ValidatorBuilder())->getValidator()
28+
)
29+
);
30+
```
31+
32+
Then you can send JSON-RPC request string to the server and any method wich implements `MethodWithValidatedParamsInterface` will be validated.
33+
34+
### Standalone
35+
```php
36+
use Symfony\Component\Validator\ValidatorBuilder;
37+
use Yoanm\JsonRpcParamsSymfonyValidator\Infra\JsonRpcParamsValidator;
38+
39+
// Create the validator
40+
$paramsValidator = new JsonRpcParamsValidator(
41+
(new ValidatorBuilder())->getValidator()
42+
);
43+
44+
// Validate a given JSON-RPC method instance against a JSON-RPC request
45+
$violationList = $paramsValidator->validate($jsonRpcRequest, $jsonRpcMethod);
46+
```
47+
48+
### Params validation example
49+
```php
50+
use Symfony\Component\Validator\Constraint;
51+
use Symfony\Component\Validator\Constraints\Collection;
52+
use Symfony\Component\Validator\Constraints\NotBlank;
53+
use Symfony\Component\Validator\Constraints\NotNull;
54+
use Yoanm\JsonRpcParamsSymfonyValidator\Domain\MethodWithValidatedParamsInterface;
55+
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodInterface;
56+
57+
class MethodExample implements JsonRpcMethodInterface, MethodWithValidatedParamsInterface
58+
{
59+
/**
60+
* {@inheritdoc}
61+
*/
62+
public function apply(array $paramList = null)
63+
{
64+
return 'result';
65+
}
66+
67+
public function getParamsConstraint(): Constraint
68+
{
69+
return new Collection(
70+
[
71+
'fields' => [
72+
'fieldA' => new NotNull(),
73+
'fieldB' => new NotBlank(),
74+
],
75+
]
76+
);
77+
}
78+
}
79+
```
80+
81+
### Violations format
82+
Each violations will have the following format :
83+
```php
84+
[
85+
'path' => 'property_path',
86+
'message' => 'violation message',
87+
'code' => 'violation_code'
88+
]
89+
```
1490

1591
## Contributing
1692
See [contributing note](./CONTRIBUTING.md)

‎behat.yml‎

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

‎composer.json‎

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,44 @@
11
{
2-
"name": "yoanm/jsonrpc-params-symfony-validator-sdk",
3-
"description": "Symfony Server SDK to convert an HTTP json-rpc request into HTTP json-rpc response",
4-
"license": "GPL-3.0-only",
5-
"type": "library",
6-
"support": {
7-
"issues": "https://github.com/yoanm/php-jsonrpc-params-symfony-validator-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\\JsonRpcParamsSymfonyValidator\\": "src"
19-
}
20-
},
21-
"autoload-dev": {
22-
"psr-4": {
23-
"Tests\\": "tests",
24-
"Tests\\Functional\\BehatContext\\": "features/bootstrap"
25-
}
26-
},
27-
"require": {
28-
"php": ">5.5",
29-
"yoanm/jsonrpc-server-sdk": "~2.0",
30-
"symfony/validator": "^3.0 || ^4.0"
31-
},
32-
"suggest": {
33-
"yoanm/jsonrpc-server-doc-sdk": "To generate payload documentation from validation constraints",
34-
"yoanm/symfony-jsonrpc-server-doc": "For automatic payload documentation"
35-
},
36-
"require-dev": {
37-
"behat/behat": "~3.0",
38-
"squizlabs/php_codesniffer": "3.*",
39-
"phpunit/phpunit": "^6.0 || ^7.0",
40-
"matthiasnoback/symfony-dependency-injection-test": "^2.0 || ^3.0",
41-
"matthiasnoback/symfony-config-test": "^3.0 || ^4.0",
42-
"symfony/framework-bundle": "^3.4",
43-
"symfony/http-kernel": "^3.4",
44-
"symfony/routing": "^3.4",
45-
"yoanm/php-unit-extended": "~1.0",
46-
"yoanm/jsonrpc-server-doc-sdk": "dev-master"
2+
"name": "yoanm/jsonrpc-params-symfony-validator-sdk",
3+
"description": "Simple JSON-RPC params validator that use Symfony validator component",
4+
"license": "MIT",
5+
"type": "library",
6+
"support": {
7+
"issues": "https://github.com/yoanm/php-jsonrpc-params-symfony-validator-sdk/issues"
8+
},
9+
"authors": [
10+
{
11+
"name": "Yoanm",
12+
"email": "yoanm@users.noreply.github.com",
13+
"role": "Developer"
4714
}
15+
],
16+
"autoload": {
17+
"psr-4": {
18+
"Yoanm\\JsonRpcParamsSymfonyValidator\\": "src"
19+
}
20+
},
21+
"autoload-dev": {
22+
"psr-4": {
23+
"Tests\\": "tests",
24+
"Tests\\Functional\\BehatContext\\": "features/bootstrap",
25+
"DemoApp\\": "features/demo_app/src"
26+
}
27+
},
28+
"suggest": {
29+
"yoanm/symfony-jsonrpc-params-validator": "Symfony bundle for easy JSON-RPC params validation",
30+
"yoanm/symfony-jsonrpc-http-server": "Symfony Bundle to convert an HTTP json-rpc request into HTTP json-rpc response",
31+
"yoanm/jsonrpc-params-symfony-constraint-doc-sdk": "To generate payload documentation from validation constraints"
32+
},
33+
"require": {
34+
"php": ">=7.1",
35+
"yoanm/jsonrpc-server-sdk": "v3.0.0",
36+
"symfony/validator": "^3.0 || ^4.0"
37+
},
38+
"require-dev": {
39+
"behat/behat": "~3.0",
40+
"squizlabs/php_codesniffer": "3.*",
41+
"phpunit/phpunit": "^6.0 || ^7.0",
42+
"yoanm/php-unit-extended": "^1.0"
43+
}
4844
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /