Completed
Push — master ( 284ba8...3dd586 )
by Timur
02:08
created

Site::repositoryProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Laravel\Forge\Sites;
4
5
use Laravel\Forge\Contracts\ApplicationContract;
6
use Laravel\Forge\ApiResource;
7
8
class Site extends ApiResource
9
{
10
    /**
11
     * Resource type.
12
     *
13
     * @return string
14
     */
15
    public static function resourceType()
16
    {
17
        return 'site';
18
    }
19
20
    /**
21
     * Resource path (relative to Server URL).
22
     *
23
     * @return string
24
     */
25
    public function resourcePath()
26
    {
27
        return 'sites';
28
    }
29
30
    /**
31
     * Site domain.
32
     *
33
     * @return string
34
     */
35
    public function domain()
36
    {
37
        return $this->getData('name');
38
    }
39
40
    /**
41
     * Project type.
42
     *
43
     * @return string
44
     */
45
    public function projectType()
46
    {
47
        return $this->getData('project_type');
48
    }
49
50
    /**
51
     * Site directory.
52
     *
53
     * @return string
54
     */
55
    public function directory()
56
    {
57
        return $this->getData('directory');
58
    }
59
60
    /**
61
     * Site repository.
62
     *
63
     * @return string
64
     */
65
    public function repository()
66
    {
67
        return $this->getData('repository');
68
    }
69
70
    /**
71
     * Site repository provider.
72
     *
73
     * @return string
74
     */
75
    public function repositoryProvider()
76
    {
77
        return $this->getData('repository_provider');
78
    }
79
80
    /**
81
     * Site repository branch.
82
     *
83
     * @return string
84
     */
85
    public function repositoryBranch()
86
    {
87
        return $this->getData('repository_branch');
88
    }
89
90
    /**
91
     * Site repository status.
92
     *
93
     * @return string
94
     */
95
    public function repositoryStatus()
96
    {
97
        return $this->getData('repository_status');
98
    }
99
100
    /**
101
     * Site deployment status.
102
     *
103
     * @return string | null
104
     */
105
    public function deploymentStatus()
106
    {
107
        return $this->getData('deployment_status');
108
    }
109
110
    /**
111
     * Site allows wildcard URIs.
112
     *
113
     * @return boolean
114
     */
115
    public function wildcards()
116
    {
117
        return $this->getData('wildcards');
118
    }
119
120
    /**
121
     * Site quick deploy enabled.
122
     *
123
     * @return boolean
124
     */
125
    public function quickDeploy()
126
    {
127
        return $this->getData('quick_deploy');
128
    }
129
130
    /**
131
     * Site hipchat room.
132
     *
133
     * @return string
134
     */
135
    public function hipchatRoom()
136
    {
137
        return $this->getData('hipchat_room');
138
    }
139
140
    /**
141
     * Site slack channel.
142
     *
143
     * @return string
144
     */
145
    public function slackChannel()
146
    {
147
        return $this->getData('slack_channel');
148
    }
149
150
    /**
151
     * Site app.
152
     *
153
     * @return string | null
154
     */
155
    public function app()
156
    {
157
        return $this->getData('app');
158
    }
159
160
    /**
161
     * Site app status.
162
     *
163
     * @return string | null
164
     */
165
    public function appStatus()
166
    {
167
        return $this->getData('app_status');
168
    }
169
170
    /**
171
     * Install new application on site.
172
     *
173
     * @param \Laravel\Forge\Contracts\ApplicationContract $application
174
     *
175
     * @return bool
176
     */
177
    public function install(ApplicationContract $application)
178
    {
179
        $this->getHttpClient()->request('POST', $this->apiUrl($application->type()), [
180
            'json' => $application->payload(),
181
        ]);
182
183
        return true;
184
    }
185
186
    /**
187
     * Uninstall application from site.
188
     *
189
     * @param \Laravel\Forge\Contracts\ApplicationContract $application
190
     *
191
     * @return bool
192
     */
193
    public function uninstall(ApplicationContract $application)
194
    {
195
        $this->getHttpClient()->request('DELETE', $this->apiUrl($application->type()));
196
197
        return true;
198
    }
199
200
    /**
201
     * Connect load balancer.
202
     *
203
     * @return bool
204
     */
205
    public function balance(array $serverIds)
206
    {
207
        $this->getHttpClient()->request('PUT', $this->apiUrl('/balancing'), [
208
            'json' => ['servers' => $serverIds]
209
        ]);
210
211
        return true;
212
    }
213
}
214