Пример #1
0
 public function processResponse(CommandTransaction $transaction)
 {
     $payload = $transaction->response->json();
     if ($payload['error']) {
         throw APIErrorException::createFromTransaction($transaction);
     }
     // replace string datetime with objects
     if (is_array($payload['result'])) {
         array_walk_recursive($payload['result'], function (&$value, $key) {
             //01 31 2010 13:09:05 +0600
             $pattern = '/^\\d{2}\\s\\d{2}\\s\\d{4}\\s\\d{2}:\\d{2}:\\d{2}\\s.?\\d{4}$/';
             $format = 'd m Y H:i:s O';
             if (preg_match($pattern, $value)) {
                 $value = \DateTime::createFromFormat($format, $value);
             }
         });
     }
     return ['id' => $payload['id'], 'code' => $transaction->response->getStatusCode(), 'result' => $payload['result'] ?: []];
 }
 protected function verifyExceptionObject($code, $class)
 {
     $client = $this->getMock('GuzzleHttp\\Command\\ServiceClientInterface');
     $command = $this->getMock('LacunaPHP\\APIClient\\Command\\APICommandInterface');
     $transaction = new CommandTransaction($client, $command);
     $transaction->request = $this->getMock('GuzzleHttp\\Message\\RequestInterface');
     $transaction->request->method('getUrl')->willReturn('https://api.example.com/module');
     $transaction->response = $this->getMock('GuzzleHttp\\Message\\ResponseInterface');
     $transaction->response->method('getStatusCode')->willReturn(500);
     $transaction->response->method('getReasonPhrase')->willReturn('Unknown Exception');
     $transaction->response->method('json')->willReturn(['jsonrpc' => '2.0', 'id' => 1, 'error' => ['code' => $code, 'message' => 'API Error', 'data' => ['class' => $class]]]);
     $exception = APIErrorException::createFromTransaction($transaction);
     $this->assertInstanceOf($class, $exception);
     $this->assertEquals($code, $exception->getCode());
     $this->assertEquals('API Error', $exception->getMessage());
     $this->assertEquals(['class' => $class], $exception->getData());
     $this->assertEquals(1, $exception->getID());
 }