for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace NV\RequestLimitBundle\Utils;
use NV\RequestLimitBundle\Exception\RequestLimitReachedException;
use NV\RequestLimitBundle\Storage\StorageManager;
class RequestRestrictor
{
/**
* @var StorageManager
*/
private $storageManager;
* @param StorageManager $storageManager
public function __construct(StorageManager $storageManager)
$this->storageManager = $storageManager;
}
* @param $userIp
* @return mixed
public function restrictRequestByIp($userIp)
return $this->restrictByKey($userIp);
* @param $userId
public function restrictRequestByUserId($userId)
return $this->restrictByKey($userId);
* @param $key
* @throws RequestLimitReachedException
private function restrictByKey($key) {
if ($this->storageManager->hasItem($key)) {
throw new RequestLimitReachedException();
$this->storageManager->setItem($key);
return $this->storageManager->getItem($key);