Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
CRAP | |
100.00% |
33 / 33 |
| ResponseDeserializer | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
9 | |
100.00% |
33 / 33 |
| __construct(SerializerInterface $serializer) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| addResponse(ResponseInterface $response) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setResponses(array $responses) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| deserializeResponse( MessageInterface $curlResponse, PayURequestInterface $payURequest ) | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
| getResponseClass( PayURequestInterface $payURequest ) | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| deserialize( MessageInterface $curlResponse, $responseClass ) | |
100.00% |
1 / 1 |
2 | |
100.00% |
13 / 13 |
|||
| <?php | |
| /** | |
| * @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl> | |
| */ | |
| namespace Team3\PayU\Communication\Process\ResponseDeserializer; | |
| use Buzz\Message\MessageInterface; | |
| use Team3\PayU\Communication\Process\RequestProcessException; | |
| use Team3\PayU\Communication\Request\PayURequestInterface; | |
| use Team3\PayU\Communication\Response\ResponseInterface; | |
| use Team3\PayU\Serializer\SerializerException; | |
| use Team3\PayU\Serializer\SerializerInterface; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| class ResponseDeserializer implements ResponseDeserializerInterface | |
| { | |
| /** | |
| * @var ResponseInterface[] | |
| */ | |
| private $responses; | |
| /** | |
| * @var SerializerInterface | |
| */ | |
| private $serializer; | |
| /** | |
| * @param SerializerInterface $serializer | |
| */ | |
| public function __construct(SerializerInterface $serializer) | |
| { | |
| $this->responses = []; | |
| $this->serializer = $serializer; | |
| } | |
| /** | |
| * @param ResponseInterface $response | |
| * | |
| * @return $this | |
| */ | |
| public function addResponse(ResponseInterface $response) | |
| { | |
| $this->responses[] = $response; | |
| return $this; | |
| } | |
| /** | |
| * @param ResponseInterface[] $responses | |
| * | |
| * @return $this | |
| */ | |
| public function setResponses(array $responses) | |
| { | |
| $this->responses = $responses; | |
| return $this; | |
| } | |
| /** | |
| * @param MessageInterface $curlResponse | |
| * @param PayURequestInterface $payURequest | |
| * | |
| * @return ResponseInterface | |
| * @throws NoResponseFoundException | |
| */ | |
| public function deserializeResponse( | |
| MessageInterface $curlResponse, | |
| PayURequestInterface $payURequest | |
| ) { | |
| return $this | |
| ->deserialize( | |
| $curlResponse, | |
| $this->getResponseClass($payURequest) | |
| ); | |
| } | |
| /** | |
| * @param PayURequestInterface $payURequest | |
| * | |
| * @return string | |
| * @throws NoResponseFoundException | |
| */ | |
| private function getResponseClass( | |
| PayURequestInterface $payURequest | |
| ) { | |
| foreach ($this->responses as $response) { | |
| if ($response->supports($payURequest)) { | |
| return get_class($response); | |
| } | |
| } | |
| throw new NoResponseFoundException(sprintf( | |
| 'No response class that supports %s was found', | |
| get_class($payURequest) | |
| )); | |
| } | |
| /** | |
| * @param MessageInterface $curlResponse | |
| * @param string $responseClass | |
| * | |
| * @return object | |
| * @throws RequestProcessException | |
| */ | |
| private function deserialize( | |
| MessageInterface $curlResponse, | |
| $responseClass | |
| ) { | |
| try { | |
| return $this | |
| ->serializer | |
| ->fromJson( | |
| $curlResponse->getContent(), | |
| $responseClass | |
| ); | |
| } catch (SerializerException $exception) { | |
| throw new RequestProcessException( | |
| sprintf( | |
| 'Exception %s was thrown during deserialization. Message: "%s"', | |
| get_class($exception), | |
| $exception->getMessage() | |
| ), | |
| $exception->getCode(), | |
| $exception | |
| ); | |
| } | |
| } | |
| } |