Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 77 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ $sites = $spinupwp->sites->list();
// Return a single site
$site = $spinupwp->sites->get($siteId);

// Create and return a new site
// Create and return a new site
$site = $spinupwp->sites->create($serverId, []);

// Delete a site
Expand All @@ -100,6 +100,51 @@ $eventId = $spinupwp->sites->purgeObjectCache($siteId);

// Reset a site's file permissions
$eventId = $spinupwp->sites->correctFilePermissions($siteId);

// Enable HTTPS
$eventId = $spinupwp->sites->enableHttps($siteId, ['type' => 'webroot']);

// Update HTTPS settings
$eventId = $spinupwp->sites->updateHttps($siteId, [
'type' => 'custom',
'certificate' => '-----BEGIN CERTIFICATE-----...',
'private_key' => '-----BEGIN PRIVATE KEY-----...',
]);

// Disable HTTPS
$eventId = $spinupwp->sites->disableHttps($siteId);

// Update PHP version
$eventId = $spinupwp->sites->updatePhpSettings($siteId, ['php_version' => '8.3']);

// Enable the SpinupWP subdomain
$eventId = $spinupwp->sites->enableSpinupwpSubdomain($siteId);

// Disable the SpinupWP subdomain
$eventId = $spinupwp->sites->disableSpinupwpSubdomain($siteId);

// List additional domains
$domains = $spinupwp->sites->listDomains($siteId);

// Add an additional domain
$domain = $spinupwp->sites->addDomain($siteId, [
'domain' => 'www.turnipjuice.media',
'redirect' => [
'enabled' => true,
],
]);

// Update an additional domain
$domain = $spinupwp->sites->updateDomain($siteId, $domainId, [
'redirect' => [
'enabled' => true,
'type' => 301,
'destination' => 'turnipjuice.media',
],
]);

// Delete an additional domain
$eventId = $spinupwp->sites->deleteDomain($siteId, $domainId);
```
On a `Site` instance you may also call:
```php
Expand All @@ -117,7 +162,37 @@ $site->purgeObjectCache();

// Reset a site's file permissions
$site->correctFilePermissions();
````

// Enable HTTPS
$site->enableHttps(['type' => 'webroot']);

// Update HTTPS settings
$site->updateHttps(['type' => 'custom', 'certificate' => '...', 'private_key' => '...']);

// Disable HTTPS
$site->disableHttps();

// Update PHP version
$site->updatePhpSettings(['php_version' => '8.3']);

// Enable the SpinupWP subdomain
$site->enableSpinupwpSubdomain();

// Disable the SpinupWP subdomain
$site->disableSpinupwpSubdomain();

// List additional domains
$site->listDomains();

// Add an additional domain
$site->addDomain(['domain' => 'www.turnipjuice.media']);

// Update an additional domain
$site->updateDomain($domainId, ['redirect' => ['enabled' => true]]);

// Delete an additional domain
$site->deleteDomain($domainId);
```

### Events
```php
Expand Down
12 changes: 12 additions & 0 deletions src/Endpoints/Endpoint.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Exception;
use Psr\Http\Message\ResponseInterface;
use SpinupWp\Exceptions\AccessDeniedException;
use SpinupWp\Exceptions\BadRequestException;
use SpinupWp\Exceptions\NotFoundException;
use SpinupWp\Exceptions\RateLimitException;
use SpinupWp\Exceptions\TimeoutException;
Expand Down Expand Up @@ -44,6 +45,12 @@ protected function request(string $verb, string $uri, array $payload = []): arra

protected function handleRequestError(ResponseInterface $response): void
{
if ($response->getStatusCode() === 400) {
$responseBody = (string) $response->getBody();

throw new BadRequestException(json_decode($responseBody, true, 512, JSON_THROW_ON_ERROR));
}

if ($response->getStatusCode() === 401) {
throw new UnauthorizedException();
}
Expand Down Expand Up @@ -83,6 +90,11 @@ public function postRequest(string $uri, array $payload = []): array
return $this->request('POST', $uri, $payload);
}

public function putRequest(string $uri, array $payload = []): array
{
return $this->request('PUT', $uri, $payload);
}

public function deleteRequest(string $uri, array $payload = []): array
{
return $this->request('DELETE', $uri, $payload);
Expand Down
70 changes: 70 additions & 0 deletions src/Endpoints/Site.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,74 @@ public function correctFilePermissions(int $id): int

return $request['event_id'];
}

public function enableHttps(int $id, array $data): int
{
$request = $this->postRequest("sites/{$id}/https", $data);

return $request['event_id'];
}

public function updateHttps(int $id, array $data): int
{
$request = $this->putRequest("sites/{$id}/https", $data);

return $request['event_id'];
}

public function disableHttps(int $id): int
{
$request = $this->deleteRequest("sites/{$id}/https");

return $request['event_id'];
}

public function updatePhpSettings(int $id, array $data): int
{
$request = $this->putRequest("sites/{$id}/php", $data);

return $request['event_id'];
}

public function enableSpinupwpSubdomain(int $id): int
{
$request = $this->postRequest("sites/{$id}/spinupwp-subdomain");

return $request['event_id'];
}

public function disableSpinupwpSubdomain(int $id): int
{
$request = $this->deleteRequest("sites/{$id}/spinupwp-subdomain");

return $request['event_id'];
}

public function listDomains(int $id): array
{
$domains = $this->getRequest("sites/{$id}/domains");

return $domains['data'];
}

public function addDomain(int $id, array $data): array
{
$domain = $this->postRequest("sites/{$id}/domains", $data);

return $domain;
}

public function updateDomain(int $siteId, int $domainId, array $data): array
{
$domain = $this->putRequest("sites/{$siteId}/domains/{$domainId}", $data);

return $domain;
}

public function deleteDomain(int $siteId, int $domainId): int
{
$request = $this->deleteRequest("sites/{$siteId}/domains/{$domainId}");

return $request['event_id'];
}
}
13 changes: 13 additions & 0 deletions src/Exceptions/BadRequestException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace SpinupWp\Exceptions;

use Exception;

class BadRequestException extends Exception
{
public function __construct(array $response)
{
parent::__construct($response['message'] ?? 'Bad request.', 400);
}
}
50 changes: 50 additions & 0 deletions src/Resources/Site.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,54 @@ public function correctFilePermissions(): int
{
return $this->spinupwp->sites->correctFilePermissions($this->id);
}

public function enableHttps(array $data): int
{
return $this->spinupwp->sites->enableHttps($this->id, $data);
}

public function updateHttps(array $data): int
{
return $this->spinupwp->sites->updateHttps($this->id, $data);
}

public function disableHttps(): int
{
return $this->spinupwp->sites->disableHttps($this->id);
}

public function updatePhpSettings(array $data): int
{
return $this->spinupwp->sites->updatePhpSettings($this->id, $data);
}

public function enableSpinupwpSubdomain(): int
{
return $this->spinupwp->sites->enableSpinupwpSubdomain($this->id);
}

public function disableSpinupwpSubdomain(): int
{
return $this->spinupwp->sites->disableSpinupwpSubdomain($this->id);
}

public function listDomains(): array
{
return $this->spinupwp->sites->listDomains($this->id);
}

public function addDomain(array $data): array
{
return $this->spinupwp->sites->addDomain($this->id, $data);
}

public function updateDomain(int $domainId, array $data): array
{
return $this->spinupwp->sites->updateDomain($this->id, $domainId, $data);
}

public function deleteDomain(int $domainId): int
{
return $this->spinupwp->sites->deleteDomain($this->id, $domainId);
}
}
Loading