lms/vendor/mollie/mollie-api-php/src/Idempotency/DefaultIdempotencyKeyGenerator.php
2025-12-15 12:26:23 +01:00

48 lines
1.2 KiB
PHP

<?php
namespace Mollie\Api\Idempotency;
use Mollie\Api\Exceptions\IncompatiblePlatform;
class DefaultIdempotencyKeyGenerator implements IdempotencyKeyGeneratorContract
{
const DEFAULT_LENGTH = 16;
/**
* @var int
*/
protected $length;
public function __construct($length = self::DEFAULT_LENGTH)
{
$this->length = $length;
}
/**
* @throws \Mollie\Api\Exceptions\IncompatiblePlatform
* @return string
*/
public function generate()
{
$length = $this->length;
$string = '';
while (($len = strlen($string)) < $length) {
$size = $length - $len;
try {
$bytes = random_bytes($size);
} catch (\Exception $e) {
throw new IncompatiblePlatform(
'PHP function random_bytes missing. Consider overriding the DefaultIdempotencyKeyGenerator with your own.',
IncompatiblePlatform::INCOMPATIBLE_RANDOM_BYTES_FUNCTION
);
}
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
}
return $string;
}
}