D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
psa
/
admin
/
plib
/
modules
/
rest-api
/
v2
/
externals
/
Handler
/
Filename :
Extensions.php
back
Copy
<?php // Copyright 1999-2024. WebPros International GmbH. All rights reserved. namespace PleskExt\RestApi\v2\Handler; use PleskExt\RestApi\v2\Helper\InvokableHandler; use PleskExt\RestApi\v2\SDK; use PleskExt\RestApi\v2\Annotation\Consumer; use PleskExt\RestApi\v2\Annotation\Producer; use PleskExt\RestApi\v2\Mapper\Extensions as ExtensionsMapper; use PleskExt\RestApi\v2\Mapper\Extension as ExtensionMapper; use PleskExt\RestApi\v2\Entity\ExtensionInstallRequest; use PleskExt\RestApi\v2\Entity\SuccessResponse; use PleskExt\RestApi\v2\Exception\InvalidDataException; use PleskRestApi\Slim\Psr7\Request; use PleskRestApi\Slim\Psr7\Response; class Extensions extends InvokableHandler { /** * @Producer(mapper=ExtensionsMapper::class) */ protected function get(Request $request, Response $response) { $extensions = SDK\pm_Extension::getExtensions(); $response->getBody()->write($this->produce($extensions)); return $response; } /** * @Consumer(type=ExtensionInstallRequest::class) * @Producer(mapper=ExtensionMapper::class) */ protected function post(Request $request, Response $response) { /** @var ExtensionInstallRequest $requestData */ $requestData = $this->consume(); if ($requestData->id) { SDK\pm_Extension::installById($requestData->id); } elseif ($requestData->url) { SDK\pm_Extension::installByUrl($requestData->url); } elseif ($requestData->file) { SDK\pm_Extension::installByFile($requestData->file); } else { throw new InvalidDataException("Unsupported installation type"); } $response->getBody()->write($this->serialize(new SuccessResponse())); return $response; } }