Skip to content
Draft
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
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ $site = $spinupwp->sites->get($siteId);
$site = $spinupwp->sites->create($serverId, []);

// Delete a site
$eventId = $spinupwp->sites->delete($siteId);
$eventId = $spinupwp->sites->delete($siteId, $deleteDatabase, $deleteBackups, $deleteDnsRecords);

// Run a git deployment
$eventId = $spinupwp->sites->gitDeploy($siteId);
Expand Down Expand Up @@ -155,7 +155,7 @@ $eventId = $spinupwp->sites->deleteDomain($siteId, $domainId);
On a `Site` instance you may also call:
```php
// Delete the current site
$site->delete();
$site->delete($deleteDatabase, $deleteBackups, $deleteDnsRecords);

// Run a git deployment
$site->gitDeploy();
Expand Down Expand Up @@ -221,6 +221,12 @@ $event = $spinupwp->events->get($eventId);
$key = $spinupwp->sshKeys->get();
```

### DNS Providers
```php
// Return a collection of the DNS providers configured on your team
$dnsProviders = $spinupwp->dnsProviders->list();
```

### Resource Collections
When retrieving a list of resources, an instance of `ResourceCollection` is returned. This class handles fetching large lists of resources without having to paginate results and perform subsequent requests manually.
```php
Expand Down
22 changes: 22 additions & 0 deletions src/Endpoints/DnsProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace SpinupWp\Endpoints;

use SpinupWp\Resources\DnsProvider as DnsProviderResource;
use SpinupWp\Resources\ResourceCollection;

class DnsProvider extends Endpoint
{
public function list(int $page = 1, array $parameters = []): ResourceCollection
{
$dnsProviders = $this->getRequest('dns-providers', array_merge([
'page' => $page,
], $parameters));

return $this->transformCollection(
$dnsProviders['data'],
DnsProviderResource::class,
$this->getPaginator($dnsProviders['pagination'], $parameters),
);
}
}
7 changes: 4 additions & 3 deletions src/Endpoints/Site.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,12 @@ public function create(int $serverId, array $data, bool $wait = false): SiteReso
return new SiteResource($site, $this->spinupwp);
}

public function delete(int $id, bool $deleteDatabase = false, bool $deleteBackups = false): int
public function delete(int $id, bool $deleteDatabase = false, bool $deleteBackups = false, bool $deleteDnsRecords = false): int
{
$request = $this->deleteRequest("sites/{$id}", [
'delete_database' => $deleteDatabase,
'delete_backups' => $deleteBackups,
'delete_database' => $deleteDatabase,
'delete_backups' => $deleteBackups,
'delete_dns_records' => $deleteDnsRecords,
]);

return $request['event_id'];
Expand Down
7 changes: 7 additions & 0 deletions src/Resources/DnsProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace SpinupWp\Resources;

class DnsProvider extends Resource
{
}
3 changes: 2 additions & 1 deletion src/Resources/Site.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@

class Site extends Resource
{
public function delete(bool $deleteDatabase = false, bool $deleteBackups = false): int
public function delete(bool $deleteDatabase = false, bool $deleteBackups = false, bool $deleteDnsRecords = false): int
{
return $this->spinupwp->sites->delete(
$this->id,
$deleteDatabase,
$deleteBackups,
$deleteDnsRecords,
);
}

Expand Down
2 changes: 2 additions & 0 deletions src/SpinupWp.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
namespace SpinupWp;

use GuzzleHttp\Client as HttpClient;
use SpinupWp\Endpoints\DnsProvider;
use SpinupWp\Endpoints\Event;
use SpinupWp\Endpoints\Server;
use SpinupWp\Endpoints\Site;
use SpinupWp\Endpoints\SshKey;

/**
* @property DnsProvider $dnsProviders
* @property Event $events
* @property Server $servers
* @property Site $sites
Expand Down
51 changes: 51 additions & 0 deletions tests/Endpoints/DnsProviderTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace Endpoints;

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Response;
use Mockery;
use PHPUnit\Framework\TestCase;
use SpinupWp\Endpoints\DnsProvider;
use SpinupWp\Resources\DnsProvider as DnsProviderResource;
use SpinupWp\Resources\ResourceCollection;
use SpinupWp\SpinupWp;

class DnsProviderTest extends TestCase
{
public SpinupWp $spinupwp;

public DnsProvider $endpoint;

public Client $client;

public function setUp(): void
{
$this->client = Mockery::mock(Client::class);
$this->spinupwp = new SpinupWp('123', $this->client);
$this->endpoint = new DnsProvider($this->spinupwp);
}

public function test_list_request(): void
{
$this->client->shouldReceive('request')->once()->with('GET', 'dns-providers?page=1', [])->andReturn(
new Response(200, [], '{"data": [{"id": 12, "service": "cloudflare", "name": "Cloudflare"}], "pagination": {"previous": null, "next": null, "count": 1}}')
);

$dnsProviders = $this->endpoint->list();
$this->assertInstanceOf(ResourceCollection::class, $dnsProviders);
$this->assertCount(1, $dnsProviders);
$this->assertInstanceOf(DnsProviderResource::class, $dnsProviders->toArray()[0]);
$this->assertEquals('cloudflare', $dnsProviders->toArray()[0]->service);
}

public function test_list_request_with_pagination_parameters(): void
{
$this->client->shouldReceive('request')->once()->with('GET', 'dns-providers?page=2&limit=100', [])->andReturn(
new Response(200, [], '{"data": [{"id": 12, "service": "cloudflare"}], "pagination": {"previous": null, "next": null, "count": 1}}')
);

$dnsProviders = $this->endpoint->list(2, ['limit' => 100]);
$this->assertCount(1, $dnsProviders);
}
}
20 changes: 18 additions & 2 deletions tests/Endpoints/SiteTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,9 @@ public function test_delete_request(): void
{
$this->client->shouldReceive('request')->once()->with('DELETE', 'sites/1', [
'form_params' => [
'delete_database' => false,
'delete_backups' => false,
'delete_database' => false,
'delete_backups' => false,
'delete_dns_records' => false,
],
])->andReturn(
new Response(200, [], '{"event_id": 100}')
Expand All @@ -98,6 +99,21 @@ public function test_delete_request(): void
$this->assertEquals(100, $this->siteEndpoint->delete(1));
}

public function test_delete_request_with_dns_records(): void
{
$this->client->shouldReceive('request')->once()->with('DELETE', 'sites/1', [
'form_params' => [
'delete_database' => false,
'delete_backups' => false,
'delete_dns_records' => true,
],
])->andReturn(
new Response(200, [], '{"event_id": 100}')
);

$this->assertEquals(100, $this->siteEndpoint->delete(1, false, false, true));
}

public function test_git_deploy_request(): void
{
$this->client->shouldReceive('request')->once()->with('POST', 'sites/1/git/deploy', [])->andReturn(
Expand Down
Loading