12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace App\Libraries\BIM\Glendale;
- use App\Libraries\BIM\Exceptions\FailedException;
- use Illuminate\Support\Facades\Log;
- use Psr\Http\Message\ResponseInterface;
- class Client
- {
- protected static ?Client $instance = null;
- protected \GuzzleHttp\Client $client;
- protected function __construct()
- {
- $intranetHost = config('bim.glendale.intranet_host', '');
- $baseUri = !empty($intranetHost) ? $intranetHost : config("bim.glendale.host");
- $this->client = new \GuzzleHttp\Client([
- 'base_uri' => $baseUri,
- '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 = [])
- {
- Log::debug('send to glendale engine url: ' . $uri);
- Log::debug('send to glendale engine input: ', $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;
- }
- }
|