cachet.php — это клиентская библиотека PHP для страницы состояния Cachet (https://cachethq.io/).
Эта библиотека может быть полезна для отображения сведений со страницы состояния Cachet в других системах, таких как панель мониторинга, система заявок клиентов или любые другие веб-приложения.
Если вы хотите получить cachet.php с помощью Composer, посмотрите Packagist: https://packagist.org/packages/divineomega/cachetphp.
Прежде чем начать, установите библиотеку cachet.php через Composer.
Теперь вам нужно создать объект CachetInstance, который представляет вашу установку Cachet. Вы можете сделать это так:
require_once ' vendor/autoload.php ' ;
use DivineOmega CachetPHP Factories CachetInstanceFactory ;
// The API token for the demo instance is 9yMHsdioQosnyVK4iCVR.
$ cachetInstance = CachetInstanceFactory:: create ( ' https://demo.cachethq.io/api/v1/ ' , ' 9yMHsdioQosnyVK4iCVR ' );
Получить данные из различных элементов вашего экземпляра Cachet очень просто. Просто вызовите соответствующий метод получения для вашего объекта $cachetInstance
. Будет установлен контакт с установкой Cachet, и будет возвращен массив соответствующих запросу объектов.
$ components = $ cachetInstance -> getAllComponents (); // Components
$ incidents = $ cachetInstance -> getAllIncidents (); // Incidents
$ incidentUpdates = $ incidents [ 0 ]-> getAllIncidentUpdates (); // Incident Updates (Cachet 2.4.0 or above required)
$ metrics = $ cachetInstance -> getAllMetrics (); // Metrics
$ metricPoints = $ metrics [ 0 ]-> getAllMetricPoints (); // Metric Points
$ subscribers = $ cachetInstance -> getAllSubscribers (); // Subscribers
Чтобы получить один элемент Cachet по его идентификатору, вы можете использовать код, аналогичный следующему методу.
// Get incident by id
$ incident = $ cachetInstance -> getIncidentById ( $ incidentId );
Если вы хотите отсортировать результаты, вы можете использовать следующий синтаксис. Это работает для компонентов, инцидентов, метрик, точек метрик и подписчиков.
// Get components sorted by name ascending
$ components = $ cachetInstance -> getAllComponents ( ' name ' , ' asc ' );
Чтение данных из полученных объектов элементов Cachet легко. Просто получите доступ к их открытым переменным-членам.
Ниже приведен пример вывода идентификатора, имени, описания и статуса компонента Cachet.
// Get components
$ components = $ cachetInstance -> getAllComponents ();
// Display components
foreach ( $ components as $ component ) {
echo $ component -> id . ' - ' . $ component -> name . ' - ' . $ component -> description . ' - ' . $ component -> status ;
echo " <br/> " ;
}
См. официальную документацию Cachet для получения информации о переменных, доступных для каждого типа элемента Cachet.
Вы можете очень легко создать элемент Cachet, например компонент или инцидент, используя библиотеку cachet.php . Это включает в себя создание ассоциативного массива сведений для элементов Cachet и последующую передачу его соответствующему методу создания.
В следующем примере показано, как создать простой тестовый компонент.
$ componentDetails = [ ' name ' => ' Test Component ' . rand ( 1 , 99999 ), ' status ' => 1 ];
$ component = $ cachetInstance -> createComponent ( $ componentDetails );
echo $ component -> id . ' - ' . $ component -> name . ' - ' . $ component -> description . ' - ' . $ component -> status ;
В более подробном примере ниже показано, как создать инцидент и добавить к нему обновление инцидента. Обратите внимание, что для использования обновлений об инцидентах требуется Cachet 2.4.0 или выше.
$ incidentDetails = [ ' name ' => ' Test Incident ' . rand ( 1 , 99999 ), ' message ' => ' Incident message ' . rand ( 1 , 99999 ), ' status ' => 1 , ' visible ' => 1 ];
$ incident = $ cachetInstance -> createIncident ( $ incidentDetails );
$ incidentUpdateDetails = [ ' status ' => 2 , ' message ' => ' Test incident update ' . rand ( 1 , 99999 )];
$ incidentUpdate = $ incident -> createIncidentUpdate ( $ incidentUpdateDetails );
echo $ incidentUpdate -> id . ' - ' . $ incidentUpdate -> incident_id . ' - ' . $ incidentUpdate -> status . ' - ' . $ incidentUpdate -> message ;
cachet.php позволяет вам вносить изменения в элемент Cachet и сохранять эти изменения обратно в вашу установку Cachet. Это делается путем непосредственного изменения общедоступных переменных-членов элемента Cachet и последующего вызова метода save()
объекта.
В следующем примере показано, как изменить имя и состояние компонента, а затем сохранить изменения.
// Get components
$ components = $ cachetInstance -> getAllComponents ();
// Change component details
$ component [ 0 ]-> name = ' My awesome component ' ;
$ component [ 0 ]-> status = 1 ;
$ component [ 0 ]-> save ();
Если вы создаете инцидент с component_id
, вы также можете включить component_status
, чтобы изменить статус компонента одновременно с созданием инцидента. См. пример ниже.
$ incidentDetails = [ ' name ' => ' Test Incident ' . rand ( 1 , 99999 ), ' message ' => ' Incident message ' . rand ( 1 , 99999 ), ' status ' => 1 , ' visible ' => 1 ,
' component_id ' => 1 , ' component_status ' => 1 ];
$ incident = $ cachetInstance -> createIncident ( $ incidentDetails );
При создании обновлений инцидентов вы также можете указать component_status
, чтобы изменить статус компонента при создании обновления инцидента. См. пример ниже.
$ incidentUpdateDetails = [ ' status ' => 2 , ' message ' => ' Test incident update ' . rand ( 1 , 99999 ), ' component_status ' => 2 ];
$ incidentUpdate = $ incident -> createIncidentUpdate ( $ incidentUpdateDetails );
Вы также можете изменить статус компонента посредством инцидента или обновления инцидента, изменив component_status
связанного объекта и сохранив его, как показано ниже в примерах ниже. Обратите внимание, что это будет работать только в том случае, если инцидент был создан с соответствующим component_id
.
$ incident -> component_status = 2 ;
$ incident -> save ();
$ incidentUpdate -> component_status = 3 ;
$ incidentUpdate -> save ();
Чтобы удалить элемент Cachet из вашей установки Cachet, вам просто нужно вызвать метод delete()
для соответствующего объекта элемента Cachet.
Например, чтобы удалить инцидент, вы можете сделать следующее.
// Get incidents
$ incidents = $ cachetInstance -> getAllIncidents ();
// Delete the first one
$ incidents [ 0 ]-> delete ();
Если вы обнаружили ошибку или новую функцию, сообщите об этом как о проблеме GitHub.
По другим вопросам я доступен в Твиттере (Джордан Холл).