diff --git a/src/Client/Client.php b/src/Client/Client.php index 2d58972..dd7ec07 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -116,6 +116,21 @@ public function post(string $uri, array|object $body): ResponseInterface return $this->request($request); } + public function put(string $uri, array|object $body): ResponseInterface + { + $url = sprintf('%s/%s', $this->getBaseUri(), ltrim($uri, '/')); + + $request = $this->getRequestFactory() + ->createRequest('PUT', $url) + ->withBody( + $this->getStreamFactory() + ->createStream(json_encode($body, \JSON_THROW_ON_ERROR)), + ) + ; + + return $this->request($request); + } + public function delete(string $uri, int $id): ResponseInterface { $url = sprintf('%s/%s/%d', $this->getBaseUri(), ltrim($uri, '/'), $id); diff --git a/src/Client/ClientInterface.php b/src/Client/ClientInterface.php index 6fc8abc..6ced175 100644 --- a/src/Client/ClientInterface.php +++ b/src/Client/ClientInterface.php @@ -47,6 +47,8 @@ public function get(string $uri, Query|array $query = []): ResponseInterface; public function post(string $uri, array|object $body): ResponseInterface; + public function put(string $uri, array|object $body): ResponseInterface; + public function delete(string $uri, int $id): ResponseInterface; /** diff --git a/src/Client/Endpoint/SalesOrderEndpoint.php b/src/Client/Endpoint/SalesOrderEndpoint.php index 4021efc..bdd742f 100644 --- a/src/Client/Endpoint/SalesOrderEndpoint.php +++ b/src/Client/Endpoint/SalesOrderEndpoint.php @@ -18,6 +18,11 @@ final class SalesOrderEndpoint extends Endpoint implements SalesOrderEndpointInt use DeletableEndpointTrait; + /** + * @use UpdatableEndpointTrait + */ + use UpdatableEndpointTrait; + protected static function getDataClass(): string { return SalesOrder::class; diff --git a/src/Client/Endpoint/SalesOrderEndpointInterface.php b/src/Client/Endpoint/SalesOrderEndpointInterface.php index 8b0e842..c8f16d4 100644 --- a/src/Client/Endpoint/SalesOrderEndpointInterface.php +++ b/src/Client/Endpoint/SalesOrderEndpointInterface.php @@ -9,7 +9,8 @@ /** * @extends EndpointInterface * @extends CreatableEndpointInterface + * @extends UpdatableEndpointInterface */ -interface SalesOrderEndpointInterface extends EndpointInterface, CreatableEndpointInterface, DeletableEndpointInterface +interface SalesOrderEndpointInterface extends EndpointInterface, CreatableEndpointInterface, DeletableEndpointInterface, UpdatableEndpointInterface { } diff --git a/src/Client/Endpoint/UpdatableEndpointInterface.php b/src/Client/Endpoint/UpdatableEndpointInterface.php new file mode 100644 index 0000000..ab2ed1d --- /dev/null +++ b/src/Client/Endpoint/UpdatableEndpointInterface.php @@ -0,0 +1,18 @@ +client->put(sprintf('%s/%s', $this->endpoint, (string) $id), $data); + } +}