Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
14 / 14 |
SignatureCalculator | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
5 | |
100.00% |
14 / 14 |
__construct(EncoderInterface $encoder) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
calculate( array $data, CredentialsInterface $credentials, AlgorithmInterface $algorithm ) | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
anonymous function ($value) use (&$concatenated) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
encode($data, AlgorithmInterface $algorithm) | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
<?php | |
/** | |
* @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl> | |
*/ | |
namespace Team3\PayU\SignatureCalculator; | |
use Team3\PayU\Configuration\Credentials\CredentialsInterface; | |
use Team3\PayU\SignatureCalculator\Encoder\Algorithms\AlgorithmInterface; | |
use Team3\PayU\SignatureCalculator\Encoder\EncoderException; | |
use Team3\PayU\SignatureCalculator\Encoder\EncoderInterface; | |
/** | |
* {@inheritdoc} | |
* | |
* Class SignatureCalculator | |
* @package Team3\PayU\SignatureCalculator | |
*/ | |
class SignatureCalculator implements SignatureCalculatorInterface | |
{ | |
/** | |
* @var EncoderInterface | |
*/ | |
private $encoder; | |
/** | |
* @param EncoderInterface $encoder | |
*/ | |
public function __construct(EncoderInterface $encoder) | |
{ | |
$this->encoder = $encoder; | |
} | |
/** | |
* Calculates signature for any data given as an array of strings. | |
* | |
* @param string[] $data | |
* @param CredentialsInterface $credentials private key is needed to calculate signature | |
* @param AlgorithmInterface $algorithm calculator uses encoder which can use multiple algorithms | |
* | |
* @return string | |
* @throws SignatureCalculatorException | |
*/ | |
public function calculate( | |
array $data, | |
CredentialsInterface $credentials, | |
AlgorithmInterface $algorithm | |
) { | |
$concatenated = ''; | |
array_walk_recursive($data, function ($value) use (&$concatenated) { | |
$concatenated .= $value; | |
}); | |
$concatenated .= $credentials->getPrivateKey(); | |
return $this->encode($concatenated, $algorithm); | |
} | |
/** | |
* Encode single string with given algorithm. | |
* | |
* @param string $data | |
* @param AlgorithmInterface $algorithm | |
* | |
* @return string | |
* @throws SignatureCalculatorException | |
*/ | |
private function encode($data, AlgorithmInterface $algorithm) | |
{ | |
try { | |
$encodedData = $this->encoder->encode($data, $algorithm); | |
} catch (EncoderException $exception) { | |
throw new SignatureCalculatorException( | |
$exception->getMessage(), | |
$exception->getCode(), | |
$exception | |
); | |
} | |
return $encodedData; | |
} | |
} |