diff options
author | Morris Jobke <hey@morrisjobke.de> | 2019-05-10 14:21:41 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2019-05-13 11:04:47 +0200 |
commit | 83b00a99fa7fed776ceadfbfbb653832c6076688 (patch) | |
tree | 6ee01776415b96967d11048e7db2bd046b0d6f76 /lib/public | |
parent | 855486d7c14ac41c3b952591cc4acbaed996c45a (diff) | |
download | nextcloud-server-83b00a99fa7fed776ceadfbfbb653832c6076688.tar.gz nextcloud-server-83b00a99fa7fed776ceadfbfbb653832c6076688.zip |
Add interfaces to interact with subscription from support app
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'lib/public')
4 files changed, 161 insertions, 0 deletions
diff --git a/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php b/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php new file mode 100644 index 00000000000..18701102241 --- /dev/null +++ b/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php @@ -0,0 +1,30 @@ +<?php +declare(strict_types=1); + +/** + * @author Morris Jobke <hey@morrisjobke.de> + * + * @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\Support\Subscription\Exception; + +/** + * @since 17.0.0 + */ +class AlreadyRegisteredException extends \Exception { +} diff --git a/lib/public/Support/Subscription/IRegistry.php b/lib/public/Support/Subscription/IRegistry.php new file mode 100644 index 00000000000..7782f201f28 --- /dev/null +++ b/lib/public/Support/Subscription/IRegistry.php @@ -0,0 +1,57 @@ +<?php +declare(strict_types=1); + +/** + * @author Morris Jobke <hey@morrisjobke.de> + * + * @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\Support\Subscription; + +use OCP\Support\Subscription\Exception\AlreadyRegisteredException; + +/** + * @since 17.0.0 + */ +interface IRegistry { + + /** + * Register a subscription instance. In case it is called multiple times the + * first one is used. + * + * @param ISubscription $subscription + * @throws AlreadyRegisteredException + * + * @since 17.0.0 + */ + public function register(ISubscription $subscription): void; + + /** + * Fetches the list of app IDs that are supported by the subscription + * + * @since 17.0.0 + */ + public function delegateGetSupportedApps(): array; + + /** + * Indicates if a valid subscription is available + * + * @since 17.0.0 + */ + public function delegateHasValidSubscription(): bool; +} diff --git a/lib/public/Support/Subscription/ISubscription.php b/lib/public/Support/Subscription/ISubscription.php new file mode 100644 index 00000000000..fc53fe08da3 --- /dev/null +++ b/lib/public/Support/Subscription/ISubscription.php @@ -0,0 +1,37 @@ +<?php +declare(strict_types=1); + +/** + * @author Morris Jobke <hey@morrisjobke.de> + * + * @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\Support\Subscription; + +/** + * @since 17.0.0 + */ +interface ISubscription { + + /** + * Indicates if a valid subscription is available + * + * @since 17.0.0 + */ + public function hasValidSubscription(): bool; +} diff --git a/lib/public/Support/Subscription/ISupportedApps.php b/lib/public/Support/Subscription/ISupportedApps.php new file mode 100644 index 00000000000..82357499c5b --- /dev/null +++ b/lib/public/Support/Subscription/ISupportedApps.php @@ -0,0 +1,37 @@ +<?php +declare(strict_types=1); + +/** + * @author Morris Jobke <hey@morrisjobke.de> + * + * @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\Support\Subscription; + +/** + * @since 17.0.0 + */ +interface ISupportedApps extends ISubscription { + + /** + * Fetches the list of app IDs that are supported by the subscription + * + * @since 17.0.0 + */ + public function getSupportedApps(): array; +} |