rpc exception
This commit is contained in:
parent
4418e004ad
commit
86fbc11fd9
|
@ -46,7 +46,6 @@ class Client
|
||||||
];
|
];
|
||||||
$this->config = array_merge($default, $config);
|
$this->config = array_merge($default, $config);
|
||||||
$stream = new StreamHandler(app()->storagePath() . $this->config['log_path']);
|
$stream = new StreamHandler(app()->storagePath() . $this->config['log_path']);
|
||||||
app('log')->info('test json-rpc config', $this->config);
|
|
||||||
$stream->setFormatter(new $this->config['log_formatter']());
|
$stream->setFormatter(new $this->config['log_formatter']());
|
||||||
$logger = new Logger('RPC.LOGGER');
|
$logger = new Logger('RPC.LOGGER');
|
||||||
$logger->pushHandler($stream);
|
$logger->pushHandler($stream);
|
||||||
|
@ -112,6 +111,8 @@ class Client
|
||||||
|
|
||||||
$headers = [
|
$headers = [
|
||||||
'client_app' => $this->config['app'],
|
'client_app' => $this->config['app'],
|
||||||
|
'client_host' => gethostname(),
|
||||||
|
'client_addr' => $_SERVER['SERVER_ADDR'],
|
||||||
];
|
];
|
||||||
$resp = $this->http->request('POST', 'rpc/json-rpc-v2.json', [
|
$resp = $this->http->request('POST', 'rpc/json-rpc-v2.json', [
|
||||||
'headers' => $headers,
|
'headers' => $headers,
|
||||||
|
@ -126,7 +127,6 @@ class Client
|
||||||
if (isset($body['error']) && isset($body['error']['code']) && isset($body['error']['message'])) {
|
if (isset($body['error']) && isset($body['error']['code']) && isset($body['error']['message'])) {
|
||||||
throw new RpcServerException($body['error']['message'], $body['error']['code']);
|
throw new RpcServerException($body['error']['message'], $body['error']['code']);
|
||||||
}
|
}
|
||||||
$this->logger->info('MONITOR',compact("payload", "body", "headers"));
|
|
||||||
return $body['result'];
|
return $body['result'];
|
||||||
|
|
||||||
} catch (\InvalidArgumentException $e) {
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace JsonRpc\Providers;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use JsonRpc\Client;
|
use JsonRpc\Client;
|
||||||
|
use JsonRpc\Exception\RpcServerException;
|
||||||
|
|
||||||
|
|
||||||
class ClientServiceProvider extends ServiceProvider
|
class ClientServiceProvider extends ServiceProvider
|
||||||
|
@ -19,7 +20,9 @@ class ClientServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
$this->app->configure('rpc');
|
$this->app->configure('rpc');
|
||||||
$config = config('rpc');
|
$config = config('rpc');
|
||||||
|
if (!is_array($config)) {
|
||||||
|
throw new RpcServerException("Application's Rpc Config Undefind", 500);
|
||||||
|
}
|
||||||
$this->app->singleton('rpc', function () use ($config) {
|
$this->app->singleton('rpc', function () use ($config) {
|
||||||
return new Client($config);
|
return new Client($config);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,13 +24,19 @@ class JsonRpcMethod
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param $code
|
||||||
|
* @param $msg
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
public function error($code, $msg)
|
public function error($code, $msg)
|
||||||
{
|
{
|
||||||
return JsonResponse::create([
|
return JsonResponse::create([
|
||||||
'jsonrpc' => '2.0',
|
'jsonrpc' => '2.0',
|
||||||
'error' => [
|
'error' => [
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'message' => $msg,
|
'message' => is_array($msg) ? json_encode($msg) : $msg,
|
||||||
],
|
],
|
||||||
'id' => $this->id
|
'id' => $this->id
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -13,6 +13,7 @@ class JsonRpcServer
|
||||||
const Rpc_Error_NOT_FOUND = -32601;
|
const Rpc_Error_NOT_FOUND = -32601;
|
||||||
const Rpc_Error_Invalid_Params = -32602;
|
const Rpc_Error_Invalid_Params = -32602;
|
||||||
const Rpc_Error_Internal_Error = -32603;
|
const Rpc_Error_Internal_Error = -32603;
|
||||||
|
const Rpc_Success = 0;
|
||||||
|
|
||||||
|
|
||||||
const ErrorMsg = [
|
const ErrorMsg = [
|
||||||
|
@ -20,6 +21,7 @@ class JsonRpcServer
|
||||||
self::Rpc_Error_Parse_Error => 'Json parse error',
|
self::Rpc_Error_Parse_Error => 'Json parse error',
|
||||||
self::Rpc_Error_Invalid_Request => 'Invalid request',
|
self::Rpc_Error_Invalid_Request => 'Invalid request',
|
||||||
self::Rpc_Error_Invalid_Params => 'Invalid params',
|
self::Rpc_Error_Invalid_Params => 'Invalid params',
|
||||||
|
self::Rpc_Success => 'Success'
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,9 +39,9 @@ class JsonRpcServer
|
||||||
|
|
||||||
public function handler()
|
public function handler()
|
||||||
{
|
{
|
||||||
// if ($this->request->getContentType() != 'json') {
|
if ($this->request->getContentType() != 'json') {
|
||||||
// return $this->error(self::Rpc_Error_Invalid_Request);
|
return $this->error(self::Rpc_Error_Invalid_Request);
|
||||||
// }
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -50,9 +52,8 @@ class JsonRpcServer
|
||||||
} else {
|
} else {
|
||||||
list($method, $params, $id) = $this->parseJson($this->request->getContent());
|
list($method, $params, $id) = $this->parseJson($this->request->getContent());
|
||||||
}
|
}
|
||||||
app('log')->info('rpc ser', [$method, $params, $id, $this->request->header('client_app')]);
|
|
||||||
list($class, $function) = $this->parseMethodWithMap($method);
|
list($class, $function) = $this->parseMethodWithMap($method);
|
||||||
// dump($class,$function);exit;
|
|
||||||
|
|
||||||
if (!class_exists($class) || !method_exists($class, $function)) {
|
if (!class_exists($class) || !method_exists($class, $function)) {
|
||||||
return $this->error(self::Rpc_Error_NOT_FOUND);
|
return $this->error(self::Rpc_Error_NOT_FOUND);
|
||||||
|
@ -62,7 +63,7 @@ class JsonRpcServer
|
||||||
return $this->error(self::Rpc_Error_Invalid_Params);
|
return $this->error(self::Rpc_Error_Invalid_Params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app('log')->info('rpc ser', [$method, $params, $id, $class, $this->request->header('client_app')]);
|
||||||
$ret = call_user_func_array([(new $class($id, $this->request)), $function], $params);
|
$ret = call_user_func_array([(new $class($id, $this->request)), $function], $params);
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
|
@ -139,6 +140,4 @@ class JsonRpcServer
|
||||||
'id' => $id
|
'id' => $id
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -29,9 +29,6 @@ class JsonRpcDoc
|
||||||
|
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var $view Factory
|
|
||||||
*/
|
|
||||||
$config = [
|
$config = [
|
||||||
'class' => $this->methods(),
|
'class' => $this->methods(),
|
||||||
'filter_method' => [],
|
'filter_method' => [],
|
||||||
|
@ -39,9 +36,6 @@ class JsonRpcDoc
|
||||||
$api = new BootstrapApiDoc($config);
|
$api = new BootstrapApiDoc($config);
|
||||||
$doc = $api->getHtml();
|
$doc = $api->getHtml();
|
||||||
exit($doc);
|
exit($doc);
|
||||||
// \View::addExtension('html','php');
|
|
||||||
// app('view')->addExtension('html', 'php');
|
|
||||||
// echo app('view')->file(__DIR__."/../Sami/document/index.html");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function desc($class, $method)
|
protected function desc($class, $method)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user