1. Go to this page and download the library: Download instasent/ratelimit-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
instasent / ratelimit-bundle example snippets
use Instasent\RateLimitBundle\Annotation\RateLimit;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/**
* @Route(...)
*
* @RateLimit(limit=1000, period=3600)
*/
public function someApiAction()
{
}
use Instasent\RateLimitBundle\Annotation\RateLimit;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/**
* @Route(...)
*
* @RateLimit(methods={"PUT", "POST"}, limit=1000, period=3600)
* @RateLimit(methods={"GET"}, limit=1000, period=3600)
* @RateLimit(limit=5000, period=3600)
*/
public function someApiAction()
{
}
use Instasent\RateLimitBundle\Annotation\RateLimit;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/**
* @Ratelimit(methods={"POST"}, limit=100, period=10); // 100 POST requests per 10 seconds
*/
class DefaultController extends Controller
{
/**
* @ratelimit(method="POST", limit=200, period=10); // 200 POST requests to indexAction allowed.
*/
public function indexAction()
{
}
}
namespace MyBundle\Listener;
use Instasent\RateLimitBundle\Events\GenerateKeyEvent;
class RateLimitGenerateKeyListener
{
public function onGenerateKey(GenerateKeyEvent $event)
{
$key = $this->generateKey();
$event->addToKey($key);
// $event->setKey($key); // to overwrite key completely
}
}
namespace MyBundle\Listener;
use Instasent\RateLimitBundle\Events\RateLimit;
class RateLimitFromDatabaseListener
{
public function findUserLimit(RateLimit $event)
{
//TODO search value in database
$event->setLimit($value);
}
}