Fix report of phpstan in Limiter

* unneeded arguments to constructor
* added return types
* let automatic DI do its work

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2019-08-19 19:35:47 +02:00
parent 1521da14ff
commit 7927aebdeb
No known key found for this signature in database
GPG Key ID: F941078878347C0C
3 changed files with 4 additions and 26 deletions

View File

@ -28,9 +28,7 @@ use OC\Security\Normalizer\IpAddress;
use OC\Security\RateLimiting\Backend\IBackend;
use OC\Security\RateLimiting\Exception\RateLimitExceededException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
class Limiter {
/** @var IBackend */
@ -39,14 +37,10 @@ class Limiter {
private $timeFactory;
/**
* @param IUserSession $userSession
* @param IRequest $request
* @param ITimeFactory $timeFactory
* @param IBackend $backend
*/
public function __construct(IUserSession $userSession,
IRequest $request,
ITimeFactory $timeFactory,
public function __construct(ITimeFactory $timeFactory,
IBackend $backend) {
$this->backend = $backend;
$this->timeFactory = $timeFactory;
@ -62,7 +56,7 @@ class Limiter {
private function register(string $methodIdentifier,
string $userIdentifier,
int $period,
int $limit) {
int $limit): void {
$existingAttempts = $this->backend->getAttempts($methodIdentifier, $userIdentifier, $period);
if ($existingAttempts >= $limit) {
throw new RateLimitExceededException();
@ -83,7 +77,7 @@ class Limiter {
public function registerAnonRequest(string $identifier,
int $anonLimit,
int $anonPeriod,
string $ip) {
string $ip): void {
$ipSubnet = (new IpAddress($ip))->getSubnet();
$anonHashIdentifier = hash('sha512', 'anon::' . $identifier . $ipSubnet);
@ -102,7 +96,7 @@ class Limiter {
public function registerUserRequest(string $identifier,
int $userLimit,
int $userPeriod,
IUser $user) {
IUser $user): void {
$userHashIdentifier = hash('sha512', 'user::' . $identifier . $user->getUID());
$this->register($identifier, $userHashIdentifier, $userPeriod, $userLimit);
}

View File

@ -597,14 +597,6 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias('Search', \OCP\ISearch::class);
$this->registerService(\OC\Security\RateLimiting\Limiter::class, function (Server $c) {
return new \OC\Security\RateLimiting\Limiter(
$this->getUserSession(),
$this->getRequest(),
new \OC\AppFramework\Utility\TimeFactory(),
$c->query(\OC\Security\RateLimiting\Backend\IBackend::class)
);
});
$this->registerService(\OC\Security\RateLimiting\Backend\IBackend::class, function ($c) {
return new \OC\Security\RateLimiting\Backend\MemoryCache(
$this->getMemCacheFactory(),

View File

@ -31,10 +31,6 @@ use OCP\IUserSession;
use Test\TestCase;
class LimiterTest extends TestCase {
/** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */
private $userSession;
/** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */
private $request;
/** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
private $timeFactory;
/** @var IBackend|\PHPUnit_Framework_MockObject_MockObject */
@ -45,14 +41,10 @@ class LimiterTest extends TestCase {
public function setUp() {
parent::setUp();
$this->userSession = $this->createMock(IUserSession::class);
$this->request = $this->createMock(IRequest::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->backend = $this->createMock(IBackend::class);
$this->limiter = new Limiter(
$this->userSession,
$this->request,
$this->timeFactory,
$this->backend
);