tonicforhealth/pagerduty-client

这是通过API创建事件并发送到PagerDuty的客户端

v0.1.0 2016-07-27 21:54 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:09:25 UTC


README

License Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

PagerDuty是一个客户端库,它为我们提供了使用PagerDuty events-api 的对象接口,并允许我们扩展这个库以使用PagerDuty rest-api v2

使用Composer简单尝试

安装

如果你想尝试

mkdir pagerduty-client-app && cd pagerduty-client-app && composer init --stability=dev -n &&  composer require tonicforhealth/pagerduty-client php-http/guzzle6-adapter guzzlehttp/guzzle:~6.1

使用示例

<?php

require __DIR__.'/vendor/autoload.php';

use TonicForHealth\PagerDutyClient\Client\EventClientFactory;
use TonicForHealth\PagerDutyClient\Client\Exception\EventClientTransportException;
use TonicForHealth\PagerDutyClient\Client\Exception\ResponseDataValidationException;
use TonicForHealth\PagerDutyClient\Entity\Event\Event;

$eventClient = EventClientFactory::createEventClient(
    'https://events.pagerduty.com/generic/2010-04-15'
);

$event = new Event();

$event->serviceKey = 'change it to your "Integration Key"';
$event->description = 'FAILURE for production/HTTP on machine srv01.acme.com';

try {
    $response = $eventClient->post($event);
} catch (EventClientTransportException $exception) {
    printf('HTTP Transport problem:%s'."\n", $exception->getMessage());
    exit(1);
} catch (ResponseDataValidationException $exception) {
    printf('Validation response problem:%s'."\n", $exception->getMessage());
    exit(2);
}

var_dump($response);

对于已有项目且使用Composer

安装

如果你已经有了一个包含composer.json的项目,请检查minimum-stability,如果它高于dev,请将其更改为dev

$ composer config minimum-stability dev

然后添加tonicforhealth/pagerduty-client

$ composer require tonicforhealth/pagerduty-client

此外,你还需要添加一个具有适配器的http-client,或者如果你已经有了,你需要为其找到一个php-http-padapter

$ composer require php-http/guzzle6-adapter guzzlehttp/guzzle:~6.1

高级使用示例

<?php

require __DIR__.'/vendor/autoload.php';

use Http\Client\Common\HttpMethodsClient;
use Http\Discovery\HttpClientDiscovery;
use Http\Discovery\MessageFactoryDiscovery;
use TonicForHealth\PagerDutyClient\Client\EventClient;
use TonicForHealth\PagerDutyClient\Client\Exception\EventClientTransportException;
use TonicForHealth\PagerDutyClient\Client\Exception\ResponseDataValidationException;
use TonicForHealth\PagerDutyClient\Entity\Event\Event;
use TonicForHealth\PagerDutyClient\Entity\Event\EventRepresentation;
use TonicForHealth\PagerDutyClient\RepresentProcessor\RepresentProcessor;
use TonicForHealth\PagerDutyClient\Validation\ValidationResponseFactory;

$representProcessor = new RepresentProcessor();

$eventRepresentation = new EventRepresentation();

$representProcessor->addRepresentation($eventRepresentation);

$validationResponse = ValidationResponseFactory::createValidation('Event');

$httpMethodsClient = new HttpMethodsClient(
    HttpClientDiscovery::find(),
    MessageFactoryDiscovery::find()
);

$eventClient = new EventClient(
    'https://events.pagerduty.com/generic/2010-04-15',
    $httpMethodsClient,
    $representProcessor,
    $validationResponse
);

$event = new Event();

$event->serviceKey = 'change it to your "Integration Key"';
$event->description = 'FAILURE for production/HTTP on machine srv01.acme.com';

try {
    $response = $eventClient->post($event);
} catch (EventClientTransportException $exception) {
    printf('HTTP Transport problem:%s'."\n", $exception->getMessage());
    exit(1);
} catch (ResponseDataValidationException $exception) {
    printf('Validation response problem:%s'."\n", $exception->getMessage());
    exit(2);
}

var_dump($response);