Skip to content

Commit

Permalink
Update OCP
Browse files Browse the repository at this point in the history
  • Loading branch information
nextcloud-command committed Sep 27, 2023
1 parent 54b06fd commit 6ab43b9
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 13 deletions.
57 changes: 57 additions & 0 deletions OCP/IPhoneNumberUtil.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php

declare(strict_types=1);
/**
*
* @copyright Copyright (c) 2023 Joas Schilling <[email protected]>
*
* @author Joas Schilling <[email protected]>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OCP;

/**
* @since 28.0.0
*/
interface IPhoneNumberUtil {
/**
* Returns the country code for a specific region
*
* For example, this would be `41` for Switzerland and `49` for Germany.
* Returns null when the region is invalid.
*
* @param string $regionCode Two-letter region code of ISO 3166-1
* @return int|null Null when invalid/unsupported, the phone country code otherwise
* @since 28.0.0
*/
public function getCountryCodeForRegion(string $regionCode): ?int;

/**
* Converts a given input into an E164 formatted phone number
*
* E164 is the international format without any formatting characters or spaces.
* E.g. +41446681800 where +41 is the region code.
*
* @param string $input Input phone number can contain formatting spaces, slashes and dashes
* @param string|null $defaultRegion Two-letter region code of ISO 3166-1
* @return string|null Null when the input is invalid for the given region or requires a region.
* @since 28.0.0
*/
public function convertToStandardFormat(string $input, ?string $defaultRegion = null): ?string;
}
72 changes: 72 additions & 0 deletions OCP/Security/RateLimiting/ILimiter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php

declare(strict_types=1);

/*
* @copyright 2023 Christoph Wurst <[email protected]>
*
* @author 2023 Christoph Wurst <[email protected]>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

namespace OCP\Security\RateLimiting;

use OCP\AppFramework\Http\Attribute\AnonRateLimit;
use OCP\AppFramework\Http\Attribute\UserRateLimit;
use OCP\IUser;

/**
* Programmatic rate limiter for web requests that are not handled by an app framework controller
*
* @see AnonRateLimit
* @see UserRateLimit
*
* @since 28.0.0
*/
interface ILimiter {
/**
* Registers attempt for an anonymous request
*
* @param string $identifier
* @param int $anonLimit
* @param int $anonPeriod in seconds
* @param string $ip
* @throws IRateLimitExceededException if limits are reached, which should cause a HTTP 429 response
* @since 28.0.0
*
*/
public function registerAnonRequest(string $identifier,
int $anonLimit,
int $anonPeriod,
string $ip): void;

/**
* Registers attempt for an authenticated request
*
* @param string $identifier
* @param int $userLimit
* @param int $userPeriod in seconds
* @param IUser $user the acting user
* @throws IRateLimitExceededException if limits are reached, which should cause a HTTP 429 response
* @since 28.0.0
*
*/
public function registerUserRequest(string $identifier,
int $userLimit,
int $userPeriod,
IUser $user): void;
}
36 changes: 36 additions & 0 deletions OCP/Security/RateLimiting/IRateLimitExceededException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

declare(strict_types=1);

/*
* @copyright 2023 Christoph Wurst <[email protected]>
*
* @author 2023 Christoph Wurst <[email protected]>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

namespace OCP\Security\RateLimiting;

use Throwable;

/**
* Thrown if the (anonymous) user has exceeded a rate limit
*
* @since 28.0.0
*/
interface IRateLimitExceededException extends Throwable {
}
13 changes: 0 additions & 13 deletions OCP/Util.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,19 +104,6 @@ public static function getChannel() {
return \OC_Util::getChannel();
}

/**
* write a message in the log
* @param string $app
* @param string $message
* @param int $level
* @since 4.0.0
* @deprecated 13.0.0 use log of \OCP\ILogger
*/
public static function writeLog($app, $message, $level) {
$context = ['app' => $app];
\OC::$server->getLogger()->log($level, $message, $context);
}

/**
* check if sharing is disabled for the current user
*
Expand Down

0 comments on commit 6ab43b9

Please sign in to comment.