Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/v5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
darkdarin committed Feb 9, 2023
2 parents 10c266f + dc9b9b0 commit d9822e1
Show file tree
Hide file tree
Showing 162 changed files with 5,012 additions and 3,287 deletions.
6 changes: 3 additions & 3 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ ij_editorconfig_space_before_comma = false
ij_editorconfig_spaces_around_assignment_operators = true

[{*.yml,*.yaml}]
tab_width = 2
indent_size = 2
tab_width = 2

[{*.ctp,*.hphp,*.inc,*.module,*.php,*.php4,*.php5,*.phtml}]
ij_continuation_indent_size = 4
Expand Down Expand Up @@ -112,7 +112,7 @@ ij_php_keep_blank_lines_in_code = 2
ij_php_keep_blank_lines_in_declarations = 2
ij_php_keep_control_statement_in_one_line = true
ij_php_keep_first_column_comment = true
ij_php_keep_indents_on_empty_lines = true
ij_php_keep_indents_on_empty_lines = false
ij_php_keep_line_breaks = true
ij_php_keep_rparen_and_lbrace_on_one_line = true
ij_php_keep_simple_classes_in_one_line = false
Expand Down Expand Up @@ -191,7 +191,7 @@ ij_php_space_before_method_call_parentheses = false
ij_php_space_before_method_left_brace = true
ij_php_space_before_method_parentheses = false
ij_php_space_before_quest = true
ij_php_space_before_short_closure_left_parenthesis = false
ij_php_space_before_short_closure_left_parenthesis = true
ij_php_space_before_switch_left_brace = true
ij_php_space_before_switch_parentheses = true
ij_php_space_before_try_left_brace = true
Expand Down
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/.github export-ignore
/vendor export-ignore
/.gitignore export-ignore
/composer.lock export-ignore
/composer-require-checker.json export-ignore
/phpunit.xml export-ignore
/pint.json export-ignore
/psalm.xml export-ignore
/psalm-8.1.xml export-ignore
72 changes: 72 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: build

on:
push:
branches:
- master
pull_request:
types:
- opened
- reopened
- edited
- synchronize

env:
COVERAGE: '1'
default_php_version: '8.1'
php_extensions: 'pcov, json'

jobs:
vars:
runs-on: 'ubuntu-latest'
outputs:
default_php_version: ${{ env.default_php_version }}
php_extensions: ${{ env.php_extensions }}
steps:
- run: echo "Exposing env vars"

lint:
name: 'Lint code'
needs: vars
uses: 'tochka-developers/actions/.github/workflows/lint.yml@v1'
with:
php-version: ${{ needs.vars.outputs.default_php_version }}
php-extensions: ${{ needs.vars.outputs.php_extensions }}

analyze:
name: 'Analyze code'
needs: vars
strategy:
fail-fast: false
matrix:
php-versions: [ '8.0', '8.1', '8.2' ]
uses: 'tochka-developers/actions/.github/workflows/analyze.yml@v1'
with:
php-version: ${{ matrix.php-versions }}
php-extensions: ${{ needs.vars.outputs.php_extensions }}
psalm-config: psalm-${{ matrix.php-versions }}.xml

composer-audit:
name: 'Composer Audit'
needs: vars
uses: 'tochka-developers/actions/.github/workflows/composer-audit.yml@v1'
with:
php-version: ${{ needs.vars.outputs.default_php_version }}
php-extensions: ${{ needs.vars.outputs.php_extensions }}

tests:
name: 'Tests'
needs: vars
strategy:
fail-fast: false
matrix:
php-versions: [ '8.0', '8.1', '8.2' ]
uses: 'tochka-developers/actions/.github/workflows/tests.yml@v1'
with:
php-version: ${{ matrix.php-versions }}
php-extensions: ${{ needs.vars.outputs.php_extensions }}
phpunit-config: phpunit-${{ matrix.php-versions }}.xml

coverage:
needs: tests
uses: 'tochka-developers/actions/.github/workflows/coveralls.yml@v1'
54 changes: 0 additions & 54 deletions .travis.yml

This file was deleted.

49 changes: 13 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# JSON-RPC Server (Laravel/Lumen)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=tochka-developers_jsonrpc&metric=alert_status)](https://sonarcloud.io/dashboard?id=tochka-developers_jsonrpc)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=tochka-developers_jsonrpc&metric=bugs)](https://sonarcloud.io/dashboard?id=tochka-developers_jsonrpc)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=tochka-developers_jsonrpc&metric=code_smells)](https://sonarcloud.io/dashboard?id=tochka-developers_jsonrpc)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=tochka-developers_jsonrpc&metric=coverage)](https://sonarcloud.io/dashboard?id=tochka-developers_jsonrpc)
# JsonRpc 2.0 Server for Laravel (^9.0)
[![Packagist](https://img.shields.io/packagist/v/tochka-developers/jsonrpc.svg)](https://packagist.org/packages/tochka-developers/jsonrpc)
[![Packagist](https://img.shields.io/packagist/dt/tochka-developers/jsonrpc.svg)](https://packagist.org/packages/tochka-developers/jsonrpc)
[![build](https://github.com/tochka-developers/jsonrpc/actions/workflows/main.yml/badge.svg)](https://github.com/tochka-developers/jsonrpc/actions/workflows/main.yml)
[![Psalm coverage](https://shepherd.dev/github/tochka-developers/jsonrpc/coverage.svg)](https://shepherd.dev/github/tochka-developers/jsonrpc)
[![Psalm level](https://shepherd.dev/github/tochka-developers/jsonrpc/level.svg)](https://psalm.dev)
[![Coverage Status](https://coveralls.io/repos/github/tochka-developers/jsonrpc/badge.svg)](https://coveralls.io/github/tochka-developers/jsonrpc)

# Описание
JsonRpc сервер - реализация сервера по спецификации JsonRpc 2.0.

Поддерживаемые версии:
* Lumen >= 6.0
* Laravel >= 6.0
* PHP 7.4 | 8.0
* Laravel >= 9.0
* PHP 8.0 | 8.1 | 8.2

Поддерживает:
* вызов удаленных методов по нотификации имяКонтроллера_имяМетода, либо с разделением логики на несколько ресурсных
Expand All @@ -36,37 +37,11 @@ composer require tochka-developers/jsonrpc
php artisan vendor:publish
```

Для того, чтобы опубликовать только конфигурацию данного пакета, можно воспользоваться опцией tag
Для того чтобы опубликовать только конфигурацию данного пакета, можно воспользоваться опцией tag
```shell script
php artisan vendor:publish --tag="jsonrpc-config"
```

### Lumen
В Lumen отсутствует команда _vendor:publish_, поэтому делается это вручную.
Если в проекте еще нет директории для конфигураций - создайте ее:
```shell script
mkdir config
```
Скопируйте в нее конфигрурацию jsonrpc:
```shell script
cp vendor/tochka-developers/jsonrpc/config/jsonrpc.php config/jsonrpc.php
```
Вместо _config/jsonrpc.php_ нужно указать любую другую директорию, где хранятся ваши конфиги и название будущего конфига.
Далее необходимо прописать скопированный конфиг в _bootstrap/app.php_
```php
$app->configure('jsonrpc');
```
Так же прописать провайдер:
```php
$app->register(\Tochka\JsonRpc\JsonRpcServiceProvider::class);
```
Где _jsonrpc_ - имя файла конфига

Для корректной работы так же необходимы фасады:
```php
$app->withFacades();
```

# Настройка точек входа
Пропишите в вашем route.php:
```php
Expand All @@ -82,6 +57,7 @@ Route::post('/api/v1/jsonrpc/{group}[/{action}]', function (Illuminate\Http\Requ
```

# Конфигурация

```php
return [
// можно настроить несколько разных конфигурация для разных точек входа
Expand Down Expand Up @@ -277,8 +253,9 @@ Laravel `config:cache`).
раз при входящем запросе.

Также вы можете динамически добавлять новые маршруты в список:

```php
$route = new \Tochka\JsonRpc\Route\JsonRpcRoute('default', 'my_dynamic_method');
$route = new \Tochka\JsonRpc\DTO\JsonRpcRoute('default', 'my_dynamic_method');
$route->controllerClass = MyController::class;
$route->controllerMethod = 'methodName';

Expand Down
8 changes: 8 additions & 0 deletions composer-require-checker.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"symbol-whitelist" : [
"BenSampo\\Enum\\Enum",
"BenSampo\\Enum\\Exceptions\\InvalidEnumMemberException",
"Carbon\\Carbon",
"enum_exists"
]
}
49 changes: 32 additions & 17 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tochka-developers/jsonrpc",
"description": "JsonRpc extension for Laravel",
"description": "JsonRpc server package for Laravel",
"license": "MIT",
"authors": [
{
Expand All @@ -13,37 +13,47 @@
"laravel"
],
"require": {
"php": ">=7.4",
"php": ">=8.0",
"ext-json": "*",
"bensampo/laravel-enum": "^1.0|^2.0|^3.0|^4.0|^5.0,<5.2.0",
"illuminate/support": "^6.0|^7.0|^8.0|^9.0",
"illuminate/http": "^6.0|^7.0|^8.0|^9.0",
"illuminate/container": "^6.0|^7.0|^8.0|^9.0",
"illuminate/pipeline": "^6.0|^7.0|^8.0|^9.0",
"illuminate/console": "^6.0|^7.0|^8.0|^9.0",
"doctrine/annotations": "^1.11",
"illuminate/contracts": "^9.0",
"illuminate/support": "^9.0",
"illuminate/http": "^9.0",
"illuminate/container": "^9.0",
"illuminate/pipeline": "^9.0",
"illuminate/console": "^9.0",
"illuminate/validation": "^9.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"phpdocumentor/type-resolver": "^1.5",
"psr/http-message": "^1.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
"spiral/attributes": "^2.8",
"tochka-developers/jsonrpc-annotations": "^1.1",
"psr/simple-cache": "^1.0|^2.0"
"symfony/http-foundation": "^6.0",
"symfony/http-kernel": "^6.0",
"tochka-developers/array-file-cache": "^1.0|^2.0|^3.0",
"tochka-developers/jsonrpc-annotations": "^1.3",
"tochka-developers/jsonrpc-standard": "^1.0"
},
"require-dev": {
"bensampo/laravel-enum": "^5.0",
"laravel/pint": "^1.4",
"mockery/mockery": "^1.0",
"orchestra/testbench": "^7.1",
"phpunit/phpunit": "^9.6",
"roave/security-advisories": "dev-latest",
"phpunit/phpunit": "^9.5",
"mockery/mockery": "^1.0"
"timacdonald/log-fake": "^2.0",
"vimeo/psalm": "^5.6"
},
"minimum-stability": "dev",
"prefer-stable": true,
"autoload": {
"psr-4": {
"Tochka\\JsonRpc\\": "src/"
},
"files": [
"src/helpers.php"
]
}
},
"autoload-dev": {
"psr-4": {
"Tochka\\JsonRpc\\Tests\\": "tests/"
"Tochka\\JsonRpc\\Tests\\": "tests"
}
},
"extra": {
Expand All @@ -52,5 +62,10 @@
"Tochka\\JsonRpc\\JsonRpcServiceProvider"
]
}
},
"scripts": {
"lint": "php8.1 vendor/bin/pint --test",
"lint-fix": "php8.1 vendor/bin/pint",
"analyze": "php8.1 vendor/bin/psalm --php-version=8.1 --no-cache"
}
}
16 changes: 8 additions & 8 deletions config/jsonrpc.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
'default' => [
// Точка входа в указанный сервер
'endpoint' => '/api/v1/public/jsonrpc',

/**
* Тип формирования точки входа (получать или нет из конечного URI группу методов и метод
*
Expand All @@ -39,15 +39,15 @@
* controller@method: \Default\Controller\Namespace\Foo\BarController@test_ping
*/
'dynamicEndpoint' => ServerConfig::DYNAMIC_ENDPOINT_NONE,

// Краткое описание сервера
'summary' => 'Основная точка входа',

// Полное описание сервера
'description' => 'JsonRpc Server',

// Пространство имен, в котором находятся контроллеры
'namespace' => 'App\Http\Controllers',
'namespace' => 'App\Http\Controllers',

// Suffix для контроллеров
'controllerSuffix' => 'Controller',
Expand All @@ -56,8 +56,8 @@
'methodDelimiter' => '_',

// Обработчики запросов
'middleware' => [
LogMiddleware::class => [
'middleware' => [
LogMiddleware::class => [
// Канал лога, в который будут записываться все логи
'channel' => 'default',

Expand All @@ -69,10 +69,10 @@
// 'App\\Http\\TestController2' => ['password', 'data.phone_number']
//]
],
TokenAuthMiddleware::class => [
TokenAuthMiddleware::class => [
'headerName' => 'X-Tochka-Access-Key',
// Ключи доступа к API
'tokens' => [
'tokens' => [
'all' => 'TOKEN',
],
],
Expand Down
Loading

0 comments on commit d9822e1

Please sign in to comment.