From d6f0047632e754aa3025bbe953928b57f5950d85 Mon Sep 17 00:00:00 2001 From: dongwei <838456736@qq.com> Date: Wed, 23 Jan 2019 14:34:18 +0800 Subject: [PATCH] rpc tunnel & delete rpc.server.map --- src/Client.php | 4 ++ src/Middleware/TunnelMiddleware.php | 44 ++++++++++++++++++++ src/Providers/ClientServiceProvider.php | 3 +- src/Providers/LumenServerServiceProvider.php | 12 ++---- src/Server/JsonRpcServer.php | 2 +- src/Server/JsonRpcTool.php | 2 +- 6 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 src/Middleware/TunnelMiddleware.php diff --git a/src/Client.php b/src/Client.php index f34ba43..4a9d21d 100644 --- a/src/Client.php +++ b/src/Client.php @@ -109,10 +109,14 @@ class Client try { $body = \GuzzleHttp\json_decode($resp->getBody(), true); app('rpc.logger')->info("client_response",$body); + if (empty($body)) { + throw new RpcServerException('http response empty', 500); + } if (isset($body['error']) && isset($body['error']['code']) && isset($body['error']['message'])) { $message = is_array($body['error']['message']) ? json_encode($body['error']['message']) : $body['error']['message']; throw new RpcServerException($message, $body['error']['code']); } + return $body['result']; } catch (\InvalidArgumentException $e) { diff --git a/src/Middleware/TunnelMiddleware.php b/src/Middleware/TunnelMiddleware.php new file mode 100644 index 0000000..1d1c9be --- /dev/null +++ b/src/Middleware/TunnelMiddleware.php @@ -0,0 +1,44 @@ +getOriginalContent(); + if (isset($content['error'])){ + app('rpc.logger')->info('rpc tunnel', [$content['error']['code']]); + } else { + app('rpc.logger')->info('rpc tunnel', [200]); + } + } + } + +} \ No newline at end of file diff --git a/src/Providers/ClientServiceProvider.php b/src/Providers/ClientServiceProvider.php index 8d87519..bd645d5 100644 --- a/src/Providers/ClientServiceProvider.php +++ b/src/Providers/ClientServiceProvider.php @@ -8,7 +8,7 @@ use JsonRpc\Exception\RpcServerException; use JsonRpc\Server\JsonRpcServer; -class ClientServiceProvider extends ServiceProvider +class ClientServiceProvider extends LoggerServiceProvider { @@ -17,6 +17,7 @@ class ClientServiceProvider extends ServiceProvider */ public function register() { + parent::register(); $this->app->configure('rpc'); $config = config('rpc'); if (!is_array($config)) { diff --git a/src/Providers/LumenServerServiceProvider.php b/src/Providers/LumenServerServiceProvider.php index a464dfd..575d31e 100644 --- a/src/Providers/LumenServerServiceProvider.php +++ b/src/Providers/LumenServerServiceProvider.php @@ -2,8 +2,6 @@ namespace JsonRpc\Providers; -use App\Http\Middleware\JsonRpc; -use Illuminate\Support\ServiceProvider; use JsonRpc\Exception\RpcServerException; use JsonRpc\Middleware\Security; use JsonRpc\Server\JsonRpcDoc; @@ -11,7 +9,7 @@ use JsonRpc\Server\JsonRpcServer; use JsonRpc\Server\JsonRpcTool; use Laravel\Lumen\Application; -class LumenServerServiceProvider extends ServiceProvider +class LumenServerServiceProvider extends LoggerServiceProvider { /** @@ -34,6 +32,8 @@ class LumenServerServiceProvider extends ServiceProvider $this->app->configure('rpc'); $config = config('rpc.server'); + $map = require_once $config['map']; + $config['map'] = $map; if (!is_array($config)) { throw new RpcServerException("Application's Rpc Server Config Undefind", 500); } @@ -71,10 +71,6 @@ class LumenServerServiceProvider extends ServiceProvider */ public function register() { - $this->app->configure('rpc'); - $config = config('rpc.server'); - $this->app->singleton('rpc.server.map', function() use($config){ - return include_once $config['map']; - }); + parent::register(); } } \ No newline at end of file diff --git a/src/Server/JsonRpcServer.php b/src/Server/JsonRpcServer.php index 4b80809..017fa7c 100644 --- a/src/Server/JsonRpcServer.php +++ b/src/Server/JsonRpcServer.php @@ -26,7 +26,7 @@ class JsonRpcServer extends JsonRpcBase { $this->config = $config; $this->request = function_exists('app') ? app('request') : Request::capture(); - $this->map = app('rpc.server.map'); + $this->map = $config['map']; } public function handler() diff --git a/src/Server/JsonRpcTool.php b/src/Server/JsonRpcTool.php index 4876870..afbbadb 100644 --- a/src/Server/JsonRpcTool.php +++ b/src/Server/JsonRpcTool.php @@ -74,7 +74,7 @@ class JsonRpcTool public function getMethods() { - return app('rpc.server.map'); + return $this->config['map']; } protected function desc($class, $method)