SiteInstances::getDomains()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 6
rs 10
1
<?php
2
3
namespace AcquiaCloudApi\Endpoints;
4
5
use AcquiaCloudApi\Response\DomainResponse;
6
use AcquiaCloudApi\Response\DomainsResponse;
7
use AcquiaCloudApi\Response\OperationResponse;
8
use AcquiaCloudApi\Response\SiteInstanceDatabaseBackupResponse;
9
use AcquiaCloudApi\Response\SiteInstanceDatabaseBackupsResponse;
10
use AcquiaCloudApi\Response\SiteInstanceResponse;
11
use AcquiaCloudApi\Response\SiteInstanceDatabaseResponse;
12
13
/**
14
 * Class SiteInstances
15
 *
16
 * @package AcquiaCloudApi\CloudApi
17
 */
18
class SiteInstances extends CloudApiBase
19
{
20
    /**
21
     * Returns details about a specific site instance.
22
     */
23
    public function get(string $siteId, string $environmentId): SiteInstanceResponse
24
    {
25
        return new SiteInstanceResponse(
26
            $this->client->request(
27
                'get',
28
                "/site-instances/$siteId.$environmentId"
29
            )
30
        );
31
    }
32
33
    /**
34
     * Returns database details for a site instance.
35
     */
36
    public function getDatabase(string $siteId, string $environmentId): SiteInstanceDatabaseResponse
37
    {
38
        return new SiteInstanceDatabaseResponse(
39
            $this->client->request(
40
                'get',
41
                "/site-instances/$siteId.$environmentId/database"
42
            )
43
        );
44
    }
45
46
    /**
47
     * Copies database from source environment to target environment.
48
     */
49
    public function copyDatabase(string $siteId, string $environmentId, string $sourceEnvironmentId): OperationResponse
50
    {
51
        $options = [
52
            'json' => [
53
                'source' => $sourceEnvironmentId,
54
            ],
55
        ];
56
57
        return new OperationResponse(
58
            $this->client->request(
59
                'post',
60
                "/site-instances/$siteId.$environmentId/database",
61
                $options
62
            )
63
        );
64
    }
65
66
    /**
67
     * Returns a list of database backups for a site instance.
68
     *
69
     * @return SiteInstanceDatabaseBackupsResponse<SiteInstanceDatabaseBackupResponse>
70
     */
71
    public function getDatabaseBackups(string $siteId, string $environmentId): SiteInstanceDatabaseBackupsResponse
72
    {
73
        return new SiteInstanceDatabaseBackupsResponse(
74
            $this->client->request(
75
                'get',
76
                "/site-instances/$siteId.$environmentId/database/backups"
77
            )
78
        );
79
    }
80
81
    /**
82
     * Creates a database backup for a site instance.
83
     */
84
    public function createDatabaseBackup(string $siteId, string $environmentId): OperationResponse
85
    {
86
        return new OperationResponse(
87
            $this->client->request(
88
                'post',
89
                "/site-instances/$siteId.$environmentId/database/backups"
90
            )
91
        );
92
    }
93
94
    /**
95
     * Returns details about a specific database backup.
96
     */
97
    public function getDatabaseBackup(
98
        string $siteId,
99
        string $environmentId,
100
        string $backupId
101
    ): SiteInstanceDatabaseBackupResponse {
102
        return new SiteInstanceDatabaseBackupResponse(
103
            $this->client->request(
104
                'get',
105
                "/site-instances/$siteId.$environmentId/database/backups/$backupId"
106
            )
107
        );
108
    }
109
110
    /**
111
     * Downloads a database backup.
112
     */
113
    public function downloadDatabaseBackup(string $siteId, string $environmentId, string $backupId): OperationResponse
114
    {
115
        return new OperationResponse(
116
            $this->client->request(
117
                'get',
118
                "/site-instances/$siteId.$environmentId/database/backups/$backupId/actions/download"
119
            )
120
        );
121
    }
122
123
    /**
124
     * Restores a database backup.
125
     */
126
    public function restoreDatabaseBackup(string $siteId, string $environmentId, string $backupId): OperationResponse
127
    {
128
        return new OperationResponse(
129
            $this->client->request(
130
                'post',
131
                "/site-instances/$siteId.$environmentId/database/backups/$backupId/actions/restore"
132
            )
133
        );
134
    }
135
136
    /**
137
     * Returns a list of domains for a site instance.
138
     *
139
     * @return DomainsResponse<DomainResponse>
140
     */
141
    public function getDomains(string $siteId, string $environmentId): DomainsResponse
142
    {
143
        return new DomainsResponse(
144
            $this->client->request(
145
                'get',
146
                "/site-instances/$siteId.$environmentId/domains"
147
            )
148
        );
149
    }
150
151
    /**
152
     * Returns details about a specific domain for a site instance.
153
     */
154
    public function getDomain(string $siteId, string $environmentId, string $domainName): DomainResponse
155
    {
156
        return new DomainResponse(
157
            $this->client->request(
158
                'get',
159
                "/site-instances/$siteId.$environmentId/domains/$domainName"
160
            )
161
        );
162
    }
163
164
    /**
165
     * Returns the status of a specific domain for a site instance.
166
     */
167
    public function getDomainStatus(string $siteId, string $environmentId, string $domainName): DomainResponse
168
    {
169
        return new DomainResponse(
170
            $this->client->request(
171
                'get',
172
                "/site-instances/$siteId.$environmentId/domains/$domainName/status"
173
            )
174
        );
175
    }
176
177
    /**
178
     * Copies files from source environment to target environment.
179
     */
180
    public function copyFiles(string $siteId, string $environmentId, string $sourceEnvironmentId): OperationResponse
181
    {
182
        $options = [
183
            'json' => [
184
                'source' => $sourceEnvironmentId,
185
            ],
186
        ];
187
188
        return new OperationResponse(
189
            $this->client->request(
190
                'post',
191
                "/site-instances/$siteId.$environmentId/files",
192
                $options
193
            )
194
        );
195
    }
196
}
197