1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace App\Services\File\BIM\Glendale;
- use App\Services\File\BIM\Exceptions\FailedException;
- use Psr\Http\Message\ResponseInterface;
- class Client {
- protected static ?Client $instance = null;
- protected \GuzzleHttp\Client $client;
- protected function __construct()
- {
- $this->client = new \GuzzleHttp\Client([
- 'base_uri' => config("bim.glendale.host"),
- 'http_errors' => false,
- 'debug' => false,
- 'headers' => [
- 'Accept' => "application/json",
- 'Token' => config("bim.glendale.token"),
- ]
- ]);
- }
- public static function getInstance(): Client
- {
- if (! self::$instance) {
- self::$instance = new self();
- }
- return self::$instance;
- }
- public function request(string $method, string $uri, array $options = []): ?array
- {
- return $this->parseResponse($this->client->request($method, $uri, $options));
- }
- public function post(string $uri, array $options = []) {
- return $this->request("POST", $uri, $options);
- }
- public function get(string $uri, array $params = []) {
- return $this->request("GET", $uri, [
- 'query' => $params
- ]);
- }
- protected function parseResponse(ResponseInterface $response): ?array
- {
- $body = json_decode((string)$response->getBody(), true);
- return match ($response->getStatusCode()) {
- 200, 201, 204 => $this->parseStatusSuccessResponse($body),
- default => throw new FailedException($body['message'] ?? $response->getReasonPhrase()),
- };
- }
- protected function parseStatusSuccessResponse(array $body)
- {
- $isJson = json_last_error() == JSON_ERROR_NONE;
- if (! $isJson) {
- return [];
- }
- if ($body['code'] != 1) {
- throw new FailedException($body['codeMsg']);
- }
- return $body;
- }
- }
|