Skip to content

Commit 34a1c88

Browse files
authored
Merge pull request #2351 from nextcloud/chore/modernize2
chore(Controllers): Modernize controller code
2 parents a41aa33 + 2e2b3c7 commit 34a1c88

21 files changed

Lines changed: 719 additions & 1163 deletions

appinfo/info.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Requirements:
2323
- mbstring: *
2424
- when using MySQL, use at least v8.0
2525
]]></description>
26-
<version>16.1.0-dev.0</version>
26+
<version>16.1.0-dev.1</version>
2727
<licence>agpl</licence>
2828
<author mail="mklehr@gmx.net" homepage="https://marcelklehr.de">Marcel Klehr</author>
2929
<author mail="blizzz@arthur-schiwon.de" homepage="https://www.arthur-schiwon.de">Arthur Schiwon</author>
@@ -68,7 +68,7 @@ Requirements:
6868
<navigations>
6969
<navigation>
7070
<name>Bookmarks</name>
71-
<route>bookmarks.web_view.index</route>
71+
<route>bookmarks.webview.index</route>
7272
<icon>bookmarks.svg</icon>
7373
<order>10</order>
7474
</navigation>

appinfo/routes.php

Lines changed: 2 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
namespace OCA\Bookmarks\AppInfo;
1212

1313
/**
14-
* Create your routes in here. The name is the lowercase name of the controller
14+
* This is the legacy routes index.
15+
* You would create your routes in here. The name is the lowercase name of the controller
1516
* without the controller part, the stuff after the hash is the method.
1617
* e.g. page#index -> PageController->index()
1718
*
@@ -20,131 +21,8 @@
2021
*/
2122
return [
2223
'routes' => [
23-
//Web Template Route
24-
['name' => 'web_view#index', 'url' => '/', 'verb' => 'GET'],
25-
['name' => 'web_view#index', 'url' => '/recent', 'verb' => 'GET', 'postfix' => 'recent'],
26-
['name' => 'web_view#index', 'url' => '/folders/{folder}/search/{search}', 'verb' => 'GET', 'postfix' => 'search'],
27-
['name' => 'web_view#index', 'url' => '/folders/{folder}', 'verb' => 'GET', 'postfix' => 'folder'],
28-
['name' => 'web_view#index', 'url' => '/bookmarks/{bookmark}', 'verb' => 'GET', 'postfix' => 'bookmark'],
29-
['name' => 'web_view#index', 'url' => '/tags/{tags}', 'verb' => 'GET', 'postfix' => 'tags'],
30-
['name' => 'web_view#index', 'url' => '/untagged', 'verb' => 'GET', 'postfix' => 'untagged'],
31-
['name' => 'web_view#index', 'url' => '/unavailable', 'verb' => 'GET', 'postfix' => 'unavailable'],
32-
['name' => 'web_view#index', 'url' => '/archived', 'verb' => 'GET', 'postfix' => 'archived'],
33-
['name' => 'web_view#index', 'url' => '/duplicated', 'verb' => 'GET', 'postfix' => 'duplicated'],
34-
['name' => 'web_view#index', 'url' => '/shared', 'verb' => 'GET', 'postfix' => 'shared'],
35-
['name' => 'web_view#index', 'url' => '/bookmarklet', 'verb' => 'GET', 'postfix' => 'bookmarklet'],
36-
['name' => 'web_view#index', 'url' => '/trashbin', 'verb' => 'GET', 'postfix' => 'trashbin'],
37-
['name' => 'web_view#service_worker', 'url' => '/service-worker.js', 'verb' => 'GET'],
38-
['name' => 'web_view#manifest', 'url' => '/manifest.webmanifest', 'verb' => 'GET'],
39-
40-
//internal REST API
41-
['name' => 'internal_bookmark#get_bookmarks', 'url' => '/bookmark', 'verb' => 'GET'],
42-
['name' => 'internal_bookmark#new_bookmark', 'url' => '/bookmark', 'verb' => 'POST'],
43-
['name' => 'internal_bookmark#click_bookmark', 'url' => '/bookmark/click', 'verb' => 'POST'],
44-
['name' => 'internal_bookmark#export_bookmark', 'url' => '/bookmark/export', 'verb' => 'GET'],
45-
['name' => 'internal_bookmark#import_bookmark', 'url' => '/bookmark/import', 'verb' => 'POST'],
46-
['name' => 'internal_bookmark#count_unavailable', 'url' => '/bookmark/unavailable', 'verb' => 'GET'],
47-
['name' => 'internal_bookmark#count_archived', 'url' => '/bookmark/archived', 'verb' => 'GET'],
48-
['name' => 'internal_bookmark#count_deleted', 'url' => '/bookmark/deletedCount', 'verb' => 'GET'],
49-
['name' => 'internal_bookmark#count_duplicated', 'url' => '/bookmark/duplicated', 'verb' => 'GET'],
50-
['name' => 'internal_bookmark#get_deleted_bookmarks', 'url' => '/bookmark/deleted', 'verb' => 'GET'],
51-
['name' => 'internal_bookmark#edit_bookmark', 'url' => '/bookmark/{id}', 'verb' => 'PUT'],
52-
['name' => 'internal_bookmark#get_single_bookmark', 'url' => '/bookmark/{id}', 'verb' => 'GET'],
53-
['name' => 'internal_bookmark#delete_bookmark', 'url' => '/bookmark/{id}', 'verb' => 'DELETE'],
54-
['name' => 'internal_bookmark#delete_all_bookmarks', 'url' => '/bookmark', 'verb' => 'DELETE'],
55-
['name' => 'internal_bookmark#get_bookmark_image', 'url' => '/bookmark/{id}/image', 'verb' => 'GET'],
56-
['name' => 'internal_bookmark#get_bookmark_favicon', 'url' => '/bookmark/{id}/favicon', 'verb' => 'GET'],
57-
['name' => 'internal_bookmark#count_bookmarks', 'url' => '/folder/{folder}/count', 'verb' => 'GET'],
58-
['name' => 'internal_bookmark#acquire_lock', 'url' => '/lock', 'verb' => 'POST'],
59-
['name' => 'internal_bookmark#release_lock', 'url' => '/lock', 'verb' => 'DELETE'],
60-
['name' => 'internal_tags#full_tags', 'url' => '/tag', 'verb' => 'GET'],
61-
['name' => 'internal_tags#rename_tag', 'url' => '/tag', 'verb' => 'POST'],
62-
['name' => 'internal_tags#delete_tag', 'url' => '/tag', 'verb' => 'DELETE'],
63-
['name' => 'internal_tags#rename_tag', 'url' => '/tag/{old_name}', 'verb' => 'POST'],
64-
['name' => 'internal_tags#rename_tag', 'url' => '/tag/{old_name}', 'verb' => 'PUT'],
65-
['name' => 'internal_tags#delete_tag', 'url' => '/tag/{old_name}', 'verb' => 'DELETE'],
66-
['name' => 'internal_folders#get_folders', 'url' => '/folder', 'verb' => 'GET'],
67-
['name' => 'internal_folders#find_shared_folders', 'url' => '/folder/shared', 'verb' => 'GET'],
68-
['name' => 'internal_folders#get_deleted_folders', 'url' => '/folder/deleted', 'verb' => 'GET'],
69-
['name' => 'internal_folders#get_folder', 'url' => '/folder/{folderId}', 'verb' => 'GET'],
70-
['name' => 'internal_folders#add_folder', 'url' => '/folder', 'verb' => 'POST'],
71-
['name' => 'internal_folders#edit_folder', 'url' => '/folder/{folderId}', 'verb' => 'PUT'],
72-
['name' => 'internal_folders#delete_folder', 'url' => '/folder/{folderId}', 'verb' => 'DELETE'],
73-
['name' => 'internal_folders#hash_folder', 'url' => '/folder/{folderId}/hash', 'verb' => 'GET'],
74-
['name' => 'internal_bookmark#import_bookmark', 'url' => '/folder/{folder}/import', 'verb' => 'POST'],
75-
['name' => 'internal_folders#undelete_folder', 'url' => '/folder/{folderId}/undelete', 'verb' => 'POST'],
76-
['name' => 'internal_folders#get_folder_children', 'url' => '/folder/{folderId}/children', 'verb' => 'GET'],
77-
['name' => 'internal_folders#get_folder_children_order', 'url' => '/folder/{folderId}/childorder', 'verb' => 'GET'],
78-
['name' => 'internal_folders#set_folder_children_order', 'url' => '/folder/{folderId}/childorder', 'verb' => 'PATCH'],
79-
['name' => 'internal_folders#add_to_folder', 'url' => '/folder/{folderId}/bookmarks/{bookmarkId}', 'verb' => 'POST'],
80-
['name' => 'internal_folders#remove_from_folder', 'url' => '/folder/{folderId}/bookmarks/{bookmarkId}', 'verb' => 'DELETE'],
81-
['name' => 'internal_folders#undelete_from_folder', 'url' => '/folder/{folderId}/bookmarks/{bookmarkId}/undelete', 'verb' => 'POST'],
82-
['name' => 'internal_folders#get_folder_public_token', 'url' => '/folder/{folderId}/publictoken', 'verb' => 'GET'],
83-
['name' => 'internal_folders#create_folder_public_token', 'url' => '/folder/{folderId}/publictoken', 'verb' => 'POST'],
84-
['name' => 'internal_folders#delete_folder_public_token', 'url' => '/folder/{folderId}/publictoken', 'verb' => 'DELETE'],
85-
['name' => 'internal_folders#get_shares', 'url' => '/folder/{folderId}/shares', 'verb' => 'GET'],
86-
['name' => 'internal_folders#create_share', 'url' => '/folder/{folderId}/shares', 'verb' => 'POST'],
87-
['name' => 'internal_folders#get_share', 'url' => '/share/{shareId}', 'verb' => 'GET'],
88-
['name' => 'internal_folders#find_shares', 'url' => '/share', 'verb' => 'GET'],
89-
['name' => 'internal_folders#edit_share', 'url' => '/share/{shareId}', 'verb' => 'PUT'],
90-
['name' => 'internal_folders#delete_share', 'url' => '/share/{shareId}', 'verb' => 'DELETE'],
91-
92-
// Public REST API
93-
['name' => 'bookmark#get_bookmarks', 'url' => '/public/rest/v2/bookmark', 'verb' => 'GET'],
94-
['name' => 'bookmark#new_bookmark', 'url' => '/public/rest/v2/bookmark', 'verb' => 'POST'],
95-
['name' => 'bookmark#click_bookmark', 'url' => '/public/rest/v2/bookmark/click', 'verb' => 'POST'],
96-
['name' => 'bookmark#export_bookmark', 'url' => '/public/rest/v2/bookmark/export', 'verb' => 'GET'],
97-
['name' => 'bookmark#import_bookmark', 'url' => '/public/rest/v2/bookmark/import', 'verb' => 'POST'],
98-
['name' => 'bookmark#count_unavailable', 'url' => '/public/rest/v2/bookmark/unavailable', 'verb' => 'GET'],
99-
['name' => 'bookmark#get_single_bookmark', 'url' => '/public/rest/v2/bookmark/{id}', 'verb' => 'GET'],
100-
['name' => 'bookmark#edit_bookmark', 'url' => '/public/rest/v2/bookmark/{id}', 'verb' => 'PUT'],
101-
['name' => 'bookmark#delete_bookmark', 'url' => '/public/rest/v2/bookmark/{id}', 'verb' => 'DELETE'],
102-
['name' => 'bookmark#get_bookmark_image', 'url' => '/public/rest/v2/bookmark/{id}/image', 'verb' => 'GET'],
103-
['name' => 'bookmark#get_bookmark_favicon', 'url' => '/public/rest/v2/bookmark/{id}/favicon', 'verb' => 'GET'],
104-
['name' => 'bookmark#count_bookmarks', 'url' => '/public/rest/v2/folder/{folder}/count', 'verb' => 'GET'],
105-
['name' => 'bookmark#acquire_lock', 'url' => '/public/rest/v2/lock', 'verb' => 'POST'],
106-
['name' => 'bookmark#release_lock', 'url' => '/public/rest/v2/lock', 'verb' => 'DELETE'],
107-
['name' => 'tags#full_tags', 'url' => '/public/rest/v2/tag', 'verb' => 'GET'],
108-
['name' => 'tags#rename_tag', 'url' => '/public/rest/v2/tag', 'verb' => 'POST'],
109-
['name' => 'tags#delete_tag', 'url' => '/public/rest/v2/tag', 'verb' => 'DELETE'],
110-
['name' => 'tags#rename_tag', 'url' => '/public/rest/v2/tag/{old_name}', 'verb' => 'POST'],
111-
['name' => 'tags#rename_tag', 'url' => '/public/rest/v2/tag/{old_name}', 'verb' => 'PUT'],
112-
['name' => 'tags#delete_tag', 'url' => '/public/rest/v2/tag/{old_name}', 'verb' => 'DELETE'],
113-
['name' => 'folders#get_folders', 'url' => '/public/rest/v2/folder', 'verb' => 'GET'],
114-
['name' => 'folders#get_folder', 'url' => '/public/rest/v2/folder/{folderId}', 'verb' => 'GET'],
115-
['name' => 'folders#add_folder', 'url' => '/public/rest/v2/folder', 'verb' => 'POST'],
116-
['name' => 'folders#edit_folder', 'url' => '/public/rest/v2/folder/{folderId}', 'verb' => 'PUT'],
117-
['name' => 'folders#delete_folder', 'url' => '/public/rest/v2/folder/{folderId}', 'verb' => 'DELETE'],
118-
['name' => 'folders#hash_folder', 'url' => '/public/rest/v2/folder/{folderId}/hash', 'verb' => 'GET'],
119-
['name' => 'folders#undelete_folder', 'url' => '/public/rest/v2/folder/{folderId}/undelete', 'verb' => 'POST'],
120-
['name' => 'bookmark#import_bookmark', 'url' => '/public/rest/v2/folder/{folder}/import', 'verb' => 'POST'],
121-
['name' => 'folders#get_folder_children', 'url' => '/public/rest/v2/folder/{folderId}/children', 'verb' => 'GET'],
122-
['name' => 'folders#get_folder_children_order', 'url' => '/public/rest/v2/folder/{folderId}/childorder', 'verb' => 'GET'],
123-
['name' => 'folders#set_folder_children_order', 'url' => '/public/rest/v2/folder/{folderId}/childorder', 'verb' => 'PATCH'],
124-
['name' => 'folders#add_to_folder', 'url' => '/public/rest/v2/folder/{folderId}/bookmarks/{bookmarkId}', 'verb' => 'POST'],
125-
['name' => 'folders#remove_from_folder', 'url' => '/public/rest/v2/folder/{folderId}/bookmarks/{bookmarkId}', 'verb' => 'DELETE'],
126-
['name' => 'folders#undelete_from_folder', 'url' => '/public/rest/v2/folder/{folderId}/bookmarks/{bookmarkId}/undelete', 'verb' => 'POST'],
12724
['name' => 'bookmark#preflighted_cors', 'url' => '/public/rest/v2/{path}',
12825
'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']],
129-
['name' => 'folders#get_folder_public_token', 'url' => '/public/rest/v2/folder/{folderId}/publictoken', 'verb' => 'GET'],
130-
['name' => 'folders#create_folder_public_token', 'url' => '/public/rest/v2/folder/{folderId}/publictoken', 'verb' => 'POST'],
131-
['name' => 'folders#delete_folder_public_token', 'url' => '/public/rest/v2/folder/{folderId}/publictoken', 'verb' => 'DELETE'],
132-
['name' => 'folders#get_shares', 'url' => '/public/rest/v2/folder/{folderId}/shares', 'verb' => 'GET'],
133-
['name' => 'folders#create_share', 'url' => '/public/rest/v2/folder/{folderId}/shares', 'verb' => 'POST'],
134-
['name' => 'folders#get_share', 'url' => '/public/rest/v2/share/{shareId}', 'verb' => 'GET'],
135-
['name' => 'folders#edit_share', 'url' => '/public/rest/v2/share/{shareId}', 'verb' => 'PUT'],
136-
['name' => 'folders#delete_share', 'url' => '/public/rest/v2/share/{shareId}', 'verb' => 'DELETE'],
137-
138-
//Settings
139-
['name' => 'settings#set_setting', 'url' => '/settings/{key}', 'verb' => 'POST'],
140-
['name' => 'settings#get_setting', 'url' => '/settings/{key}', 'verb' => 'GET'],
141-
142-
// admin
143-
['name' => 'admin#check_previewer', 'url' => '/admin/previewers/{previewer}', 'verb' => 'GET'],
144-
['name' => 'admin#set_setting', 'url' => '/admin/settings/{setting}', 'verb' => 'PUT'],
145-
['name' => 'admin#get_setting', 'url' => '/admin/settings/{setting}', 'verb' => 'GET'],
14626

147-
# public link web view
148-
['name' => 'web_view#link', 'url' => '/public/{token}', 'verb' => 'GET'],
14927
],
15028
];

lib/Activity/Provider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,10 @@ public function parse($language, IEvent $event, ?IEvent $previousEvent = null) {
210210
}
211211

212212
if ($event->getObjectType() === TreeMapper::TYPE_FOLDER && !str_contains($event->getSubject(), 'deleted')) {
213-
$event->setLink($this->url->linkToRouteAbsolute('bookmarks.web_view.indexfolder', ['folder' => $event->getObjectId()]));
213+
$event->setLink($this->url->linkToRouteAbsolute('bookmarks.webview.indexfolder', ['folder' => $event->getObjectId()]));
214214
}
215215
if ($event->getObjectType() === TreeMapper::TYPE_BOOKMARK && !str_contains($event->getSubject(), 'deleted')) {
216-
$event->setLink($this->url->linkToRouteAbsolute('bookmarks.web_view.indexbookmark', ['bookmark' => $event->getObjectId()]));
216+
$event->setLink($this->url->linkToRouteAbsolute('bookmarks.webview.indexbookmark', ['bookmark' => $event->getObjectId()]));
217217
}
218218

219219
return $event;

lib/AppInfo/Application.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@
4040
use OCP\Group\Events\BeforeGroupDeletedEvent;
4141
use OCP\Group\Events\UserAddedEvent;
4242
use OCP\Group\Events\UserRemovedEvent;
43-
use OCP\IRequest;
44-
use OCP\IUser;
45-
use OCP\IUserSession;
4643
use OCP\User\Events\BeforeUserDeletedEvent;
4744
use OCP\Util;
4845

@@ -64,16 +61,6 @@ public function __construct() {
6461
public function register(IRegistrationContext $context): void {
6562
@include_once __DIR__ . '/../../vendor/autoload.php';
6663

67-
$context->registerService('UserId', static function ($c) {
68-
/** @var IUser|null $user */
69-
$user = $c->get(IUserSession::class)->getUser();
70-
return $user === null ? null : $user->getUID();
71-
});
72-
73-
$context->registerService('request', static function ($c) {
74-
return $c->get(IRequest::class);
75-
});
76-
7764
$context->registerCapability(Capabilities::class);
7865

7966
$context->registerSearchProvider(Provider::class);

lib/Controller/AdminController.php

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use OCA\Bookmarks\Service\SettingsService;
2020
use OCP\AppFramework\Controller;
2121
use OCP\AppFramework\Http;
22+
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
2223
use OCP\AppFramework\Http\JSONResponse;
2324
use OCP\IRequest;
2425

@@ -47,11 +48,7 @@ public function __construct(
4748
];
4849
}
4950

50-
/**
51-
* @param string $setting
52-
* @param scalar $value
53-
* @return JSONResponse
54-
*/
51+
#[FrontpageRoute(verb: 'PUT', url: '/admin/settings/{setting}')]
5552
public function setSetting(string $setting, float|bool|int|string $value): JSONResponse {
5653
try {
5754
$this->settingsService->setSetting($setting, (string)$value);
@@ -61,19 +58,13 @@ public function setSetting(string $setting, float|bool|int|string $value): JSONR
6158
}
6259
}
6360

64-
/**
65-
* @param string $setting
66-
* @return JSONResponse
67-
*/
61+
#[FrontpageRoute(verb: 'GET', url: '/admin/settings/{setting}')]
6862
public function getSetting(string $setting): JSONResponse {
6963
return new JSONResponse(['value' => $this->settingsService->getSetting($setting)]);
7064
}
7165

72-
/**
73-
* @param string $previewer
74-
* @return Http\Response
75-
* @NoCSRFRequired
76-
*/
66+
#[Http\Attribute\NoCSRFRequired]
67+
#[FrontpageRoute(verb: 'GET', url: '/admin/previewers/{previewer}')]
7768
public function checkPreviewer(string $previewer): Http\Response {
7869
if (!isset($this->previewers[$previewer])) {
7970
return new JSONResponse([], Http::STATUS_BAD_REQUEST);

0 commit comments

Comments
 (0)