diff --git a/src/DataFormatter/MultiplexDataFormatter.php b/src/DataFormatter/MultiplexDataFormatter.php new file mode 100644 index 0000000..aca343c --- /dev/null +++ b/src/DataFormatter/MultiplexDataFormatter.php @@ -0,0 +1,67 @@ + $id, + 'path' => $path, + 'data' => $params, + 'extra' => [], + 'context' => [], + ]; + } + + /** + * @param array $data + * @return array + */ + public function formatResponse($data) + { + list($id, $result) = $data; + + return [ + 'id' => $id, + 'result' => $result, + 'context' => [], + ]; + } + + /** + * @param array $data + * @return array + */ + public function formatErrorResponse($data) + { + list($id, $code, $message, $data) = $data; + + if (isset($data) && $data instanceof \Throwable) { + $data = array( + 'class' => get_class($data), + 'code' => $data->getCode(), + 'message' => $data->getMessage(), + ); + } + + return [ + 'id' => $id, + 'error' => [ + 'code' => $code, + 'message' => $message, + 'data' => $data, + ], + 'context' => [], + ]; + } +} diff --git a/src/Packer/JsonMultiplexPacker.php b/src/Packer/JsonMultiplexPacker.php new file mode 100644 index 0000000..538cdd2 --- /dev/null +++ b/src/Packer/JsonMultiplexPacker.php @@ -0,0 +1,35 @@ +