parserUrl = $parserUrl; } public function parse(string $path): ?array { try { $client = new Client(); $response = $client->post($this->parserUrl, [ 'body' => fopen($path, 'r'), ]); $result = json_decode($response->getBody()->getContents(), true); if (null === $result) { throw new \Exception('Failed to parse demo, unexpected result from parser'); } else { return $result; } } catch (RequestException $e) { if (strpos($e->getMessage(), 'cURL error 52') !== false) { throw new \Exception('Failed to parse demo, can\'t reach demo parser'); } throw new \Exception('Failed to parse demo, ' . $e->getMessage()); } } }