Added component groups API. Closes #801

This commit is contained in:
James Brooks
2015-08-08 15:36:48 +01:00
parent 0a682a00f7
commit 4b3ec45b03
5 changed files with 220 additions and 3 deletions

View File

@@ -0,0 +1,100 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Http\Controllers\Api;
use CachetHQ\Cachet\Models\ComponentGroup;
use Exception;
use GrahamCampbell\Binput\Facades\Binput;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
class ComponentGroupController extends AbstractApiController
{
/**
* Get all groups.
*
* @param \Symfony\Component\HttpFoundation\Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function getGroups(Request $request)
{
$groups = ComponentGroup::paginate(Binput::get('per_page', 20));
return $this->paginator($groups, $request);
}
/**
* Get a single group.
*
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
*
* @return \Illuminate\Http\JsonResponse
*/
public function getGroup(ComponentGroup $group)
{
return $this->item($group);
}
/**
* Create a new component group.
*
* @return \Illuminate\Http\JsonResponse
*/
public function postGroups()
{
$groupData = array_filter(Binput::only(['name', 'order']));
try {
$group = ComponentGroup::create($groupData);
} catch (Exception $e) {
throw new BadRequestHttpException();
}
return $this->item($group);
}
/**
* Update an existing group.
*
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
*
* @return \Illuminate\Http\JsonResponse
*/
public function putGroup(ComponentGroup $group)
{
$groupData = array_filter(Binput::only(['name', 'order']));
try {
$group->update($groupData);
} catch (Exception $e) {
dd($e->getMessage());
throw new BadRequestHttpException();
}
return $this->item($group);
}
/**
* Delete an existing group.
*
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
*
* @return \Illuminate\Http\JsonResponse
*/
public function deleteGroup(ComponentGroup $group)
{
$group->delete();
return $this->noContent();
}
}

View File

@@ -32,6 +32,8 @@ class ApiRoutes
// Components
$router->get('components', 'ComponentController@getComponents');
$router->get('components/groups', 'ComponentGroupController@getGroups');
$router->get('components/groups/{component_group}', 'ComponentGroupController@getGroup');
$router->get('components/{component}', 'ComponentController@getComponent');
// Incidents
@@ -48,16 +50,19 @@ class ApiRoutes
$router->get('subscribers', 'SubscriberController@getSubscribers');
$router->post('components', 'ComponentController@postComponents');
$router->post('components/groups', 'ComponentGroupController@postGroups');
$router->post('incidents', 'IncidentController@postIncidents');
$router->post('metrics', 'MetricController@postMetrics');
$router->post('metrics/{metric}/points', 'MetricPointController@postMetricPoints');
$router->post('subscribers', 'SubscriberController@postSubscribers');
$router->put('components/groups/{component_group}', 'ComponentGroupController@putGroup');
$router->put('components/{component}', 'ComponentController@putComponent');
$router->put('incidents/{incident}', 'IncidentController@putIncident');
$router->put('metrics/{metric}', 'MetricController@putMetric');
$router->put('metrics/{metric}/points/{metric_point}', 'MetricPointController@putMetricPoint');
$router->delete('components/groups/{component_group}', 'ComponentGroupController@deleteGroup');
$router->delete('components/{component}', 'ComponentController@deleteComponent');
$router->delete('incidents/{incident}', 'IncidentController@deleteIncident');
$router->delete('metrics/{metric}', 'MetricController@deleteMetric');