Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/sdk-php. php sdk for openstatus www.openstatus.dev
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384<?php
declare(strict_types=1);
namespace Openstatus\Sdk;
use GuzzleHttp\Client as GuzzleClient;use GuzzleHttp\Psr7\HttpFactory;use Openstatus\Sdk\Namespaces\Health;use Openstatus\Sdk\Namespaces\HealthV1;use Openstatus\Sdk\Namespaces\Maintenance;use Openstatus\Sdk\Namespaces\MaintenanceV1;use Openstatus\Sdk\Namespaces\Monitor;use Openstatus\Sdk\Namespaces\MonitorV1;use Openstatus\Sdk\Namespaces\Notification;use Openstatus\Sdk\Namespaces\NotificationV1;use Openstatus\Sdk\Namespaces\StatusPage;use Openstatus\Sdk\Namespaces\StatusPageV1;use Openstatus\Sdk\Namespaces\StatusReport;use Openstatus\Sdk\Namespaces\StatusReportV1;use Openstatus\Sdk\Services\HealthServiceClient;use Openstatus\Sdk\Services\MaintenanceServiceClient;use Openstatus\Sdk\Services\MonitorServiceClient;use Openstatus\Sdk\Services\NotificationServiceClient;use Openstatus\Sdk\Services\StatusPageServiceClient;use Openstatus\Sdk\Services\StatusReportServiceClient;use Openstatus\Sdk\Transport\JsonTransport;
final class OpenstatusClient{ public const VERSION = '0.1.0';
public const DEFAULT_BASE_URL = 'https://api.openstatus.dev';
public readonly Health $health; public readonly Monitor $monitor; public readonly StatusReport $statusReport; public readonly StatusPage $statusPage; public readonly Maintenance $maintenance; public readonly Notification $notification;
public function __construct(ClientOptions $options = new ClientOptions()) { $apiKey = $options->apiKey ?? self::envOrNull('OPENSTATUS_API_KEY'); $baseUrl = $options->baseUrl ?? self::envOrNull('OPENSTATUS_API_URL') ?? self::DEFAULT_BASE_URL;
$defaultFactory = new HttpFactory(); $requestFactory = $options->requestFactory ?? $defaultFactory; $streamFactory = $options->streamFactory ?? $defaultFactory; $http = $options->httpClient ?? new GuzzleClient(['timeout' => $options->timeout]);
$defaultHeaders = [ 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'User-Agent' => sprintf('openstatus-php/%s php/%s', self::VERSION, PHP_VERSION), ]; if ($apiKey !== null) { $defaultHeaders['x-openstatus-key'] = $apiKey; }
$transport = new JsonTransport( http: $http, requestFactory: $requestFactory, streamFactory: $streamFactory, baseUrl: $baseUrl, defaultHeaders: $defaultHeaders, logger: $options->logger, );
$this->health = new Health(new HealthV1(new HealthServiceClient($transport))); $this->monitor = new Monitor(new MonitorV1(new MonitorServiceClient($transport))); $this->statusReport = new StatusReport(new StatusReportV1(new StatusReportServiceClient($transport))); $this->statusPage = new StatusPage(new StatusPageV1(new StatusPageServiceClient($transport))); $this->maintenance = new Maintenance(new MaintenanceV1(new MaintenanceServiceClient($transport))); $this->notification = new Notification(new NotificationV1(new NotificationServiceClient($transport))); }
private static function envOrNull(string $name): ?string { $value = getenv($name); return $value === false || $value === '' ? null : $value; }}