Files
ploi-core/app/Services/Ploi/Resources/App.php
Dennis ea0c4ed66d wip
2022-03-23 09:06:28 +01:00

81 lines
2.0 KiB
PHP

<?php
namespace App\Services\Ploi\Resources;
use stdClass;
use Illuminate\Support\Arr;
use App\Services\Ploi\Exceptions\Http\NotValid;
class App extends Resource
{
private $server;
private $site;
public function __construct(Server $server, Site $site, int $id = null)
{
parent::__construct($server->getPloi(), $id);
$this->setServer($server);
$this->setSite($site);
$this->buildEndpoint();
}
public function buildEndpoint(): self
{
$this->setEndpoint($this->getServer()->getEndpoint() . '/' . $this->getServer()->getId() . '/sites/' . $this->getSite()->getId());
if ($this->getId()) {
$this->setEndpoint($this->getEndpoint() . '/' . $this->getId());
}
return $this;
}
public function get(int $id = null)
{
if ($id) {
$this->setId($id);
}
// Make sure the endpoint is built
$this->buildEndpoint();
return $this->getPloi()->makeAPICall($this->getEndpoint());
}
public function install(string $type = 'wordpress', array $options = []): stdClass
{
// Remove the id
$this->setId(null);
// Set the options
$options = [
'body' => json_encode([
'create_database' => Arr::get($options, 'create_database', false)
]),
];
try {
$response = $this->getPloi()->makeAPICall($this->getEndpoint() . '/' . $type, 'post', $options);
} catch (NotValid $exception) {
return json_decode($exception->getMessage());
}
// Set the id of the site
$this->setId($response->getJson()->data->id);
// Return the data
return $response->getJson();
}
public function uninstall($type): bool
{
$this->buildEndpoint();
$response = $this->getPloi()->makeAPICall($this->getEndpoint() . '/' . $type, 'delete');
return $response->getResponse()->getStatusCode() === 200;
}
}