@@ -40,16 +40,43 @@ public function __construct()
4040 */
4141 public function getServers (Request $ request )
4242 {
43- $ servers = Models \Server::paginate (15 );
43+ $ servers = Models \Server::paginate (50 );
4444 return $ this ->response ->paginator ($ servers , new ServerTransformer );
4545 }
4646
47+ /**
48+ * Create Server
49+ *
50+ * @Post("/servers")
51+ * @Versions({"v1"})
52+ * @Parameters({
53+ * @Parameter("page", type="integer", description="The page of results to view.", default=1)
54+ * })
55+ * @Response(201)
56+ */
57+ public function postServer (Request $ request )
58+ {
59+ try {
60+ $ server = new ServerRepository ;
61+ $ new = $ server ->create ($ request ->all ());
62+ return $ this ->response ->created (route ('api.servers.view ' , [
63+ 'id ' => $ new
64+ ]));
65+ } catch (DisplayValidationException $ ex ) {
66+ throw new ResourceException ('A validation error occured. ' , json_decode ($ ex ->getMessage (), true ));
67+ } catch (DisplayException $ ex ) {
68+ throw new ResourceException ($ ex ->getMessage ());
69+ } catch (\Exception $ e ) {
70+ throw new BadRequestHttpException ('There was an error while attempting to add this server to the system. ' );
71+ }
72+ }
73+
4774 /**
4875 * List Specific Server
4976 *
5077 * Lists specific fields about a server or all fields pertaining to that server.
5178 *
52- * @Get("/servers/{id}/{ fields}")
79+ * @Get("/servers/{id}{? fields}")
5380 * @Versions({"v1"})
5481 * @Parameters({
5582 * @Parameter("id", type="integer", required=true, description="The ID of the server to get information on."),
@@ -81,4 +108,72 @@ public function getServer(Request $request, $id)
81108 }
82109 }
83110
111+ /**
112+ * Suspend Server
113+ *
114+ * @Post("/servers/{id}/suspend")
115+ * @Versions({"v1"})
116+ * @Parameters({
117+ * @Parameter("id", type="integer", required=true, description="The ID of the server."),
118+ * })
119+ * @Response(204)
120+ */
121+ public function postServerSuspend (Request $ request , $ id )
122+ {
123+ try {
124+ $ server = new ServerRepository ;
125+ $ server ->suspend ($ id );
126+ } catch (DisplayException $ ex ) {
127+ throw new ResourceException ($ ex ->getMessage ());
128+ } catch (\Exception $ ex ) {
129+ throw new ServiceUnavailableHttpException ('An error occured while attempting to suspend this server instance. ' );
130+ }
131+ }
132+
133+ /**
134+ * Unsuspend Server
135+ *
136+ * @Post("/servers/{id}/unsuspend")
137+ * @Versions({"v1"})
138+ * @Parameters({
139+ * @Parameter("id", type="integer", required=true, description="The ID of the server."),
140+ * })
141+ * @Response(204)
142+ */
143+ public function postServerUnsuspend (Request $ request , $ id )
144+ {
145+ try {
146+ $ server = new ServerRepository ;
147+ $ server ->unsuspend ($ id );
148+ } catch (DisplayException $ ex ) {
149+ throw new ResourceException ($ ex ->getMessage ());
150+ } catch (\Exception $ ex ) {
151+ throw new ServiceUnavailableHttpException ('An error occured while attempting to unsuspend this server instance. ' );
152+ }
153+ }
154+
155+ /**
156+ * Delete Server
157+ *
158+ * @Delete("/servers/{id}/{force}")
159+ * @Versions({"v1"})
160+ * @Parameters({
161+ * @Parameter("id", type="integer", required=true, description="The ID of the server."),
162+ * @Parameter("force", type="string", required=false, description="Use 'force' if the server should be removed regardless of daemon response."),
163+ * })
164+ * @Response(204)
165+ */
166+ public function deleteServer (Request $ request , $ id , $ force = null )
167+ {
168+ try {
169+ $ server = new ServerRepository ;
170+ $ server ->deleteServer ($ id , $ force );
171+ return $ this ->response ->noContent ();
172+ } catch (DisplayException $ ex ) {
173+ throw new ResourceException ($ ex ->getMessage ());
174+ } catch (\Exception $ e ) {
175+ throw new ServiceUnavailableHttpException ('An error occured while attempting to delete this server. ' );
176+ }
177+ }
178+
84179}
0 commit comments