diff options
| author | Frédéric Guillot <fred@kanboard.net> | 2018-06-21 14:13:41 -0700 |
|---|---|---|
| committer | Frédéric Guillot <fred@kanboard.net> | 2018-06-21 14:13:41 -0700 |
| commit | a491348d442ab8e6cd2fa403d4365cdad78e52ce (patch) | |
| tree | a00f575d82afb2c9051bad95398b4250f4a3d44d /libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php | |
| parent | c73ac5f1f818b6b21083f6785b4b2f6d778a6496 (diff) | |
Vendoring deprecated composer libs
Diffstat (limited to 'libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php')
| -rw-r--r-- | libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php b/libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php new file mode 100644 index 00000000..145d21c1 --- /dev/null +++ b/libs/jsonrpc/src/JsonRPC/Request/RequestBuilder.php @@ -0,0 +1,129 @@ +<?php + +namespace JsonRPC\Request; + +/** + * Class RequestBuilder + * + * @package JsonRPC\Request + * @author Frederic Guillot + */ +class RequestBuilder +{ + /** + * Request ID + * + * @access private + * @var mixed + */ + private $id = null; + + /** + * Method name + * + * @access private + * @var string + */ + private $procedure = ''; + + /** + * Method arguments + * + * @access private + * @var array + */ + private $params = array(); + + /** + * Additional request attributes + * + * @access private + * @var array + */ + private $reqattrs = array(); + + /** + * Get new object instance + * + * @static + * @access public + * @return RequestBuilder + */ + public static function create() + { + return new static(); + } + + /** + * Set id + * + * @access public + * @param null $id + * @return RequestBuilder + */ + public function withId($id) + { + $this->id = $id; + return $this; + } + + /** + * Set method + * + * @access public + * @param string $procedure + * @return RequestBuilder + */ + public function withProcedure($procedure) + { + $this->procedure = $procedure; + return $this; + } + + /** + * Set parameters + * + * @access public + * @param array $params + * @return RequestBuilder + */ + public function withParams(array $params) + { + $this->params = $params; + return $this; + } + + /** + * Set additional request attributes + * + * @access public + * @param array $reqattrs + * @return RequestBuilder + */ + public function withRequestAttributes(array $reqattrs) + { + $this->reqattrs = $reqattrs; + return $this; + } + + /** + * Build the payload + * + * @access public + * @return string + */ + public function build() + { + $payload = array_merge_recursive($this->reqattrs, array( + 'jsonrpc' => '2.0', + 'method' => $this->procedure, + 'id' => $this->id ?: mt_rand(), + )); + + if (! empty($this->params)) { + $payload['params'] = $this->params; + } + + return json_encode($payload); + } +} |
