diff --git a/appinfo/routes.php b/appinfo/routes.php index fffc9e99..84acb315 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -11,5 +11,6 @@ ['name' => 'database_profiler#explain', 'url' => '/explain/{token}/{query}', 'verb' => 'GET'], ['name' => 'main#profiler', 'url' => '/profiler/{profiler}/{token}/', 'verb' => 'GET'], ['name' => 'main#profileInfo', 'url' => '/profile/{token}/', 'verb' => 'GET'], + ['name' => 'main#profiles', 'url' => '/profiles', 'verb' => 'GET'], ], ]; diff --git a/lib/Controller/MainController.php b/lib/Controller/MainController.php index d7e10840..fe87fa73 100644 --- a/lib/Controller/MainController.php +++ b/lib/Controller/MainController.php @@ -57,4 +57,16 @@ public function profileInfo(string $token): DataResponse { 'profile' => $this->profiler->loadProfile($token), ]); } + + /** + * Search through the stored profiles. + */ + #[NoCSRFRequired] + public function profiles(?string $url = null, ?string $method = null, ?string $statusCode = null, int $limit = 50): DataResponse { + $profiles = $this->profiler->find($url, $limit, $method, null, null, $statusCode); + + return new DataResponse([ + 'profiles' => $profiles, + ]); + } } diff --git a/src/router/router.js b/src/router/router.js index 65ff0a47..4e567179 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -9,6 +9,7 @@ import RequestView from '../views/RequestView.vue' import LdapView from '../views/LdapView.vue' import CacheView from '../views/CacheView.vue' import EventsView from '../views/EventsView.vue' +import ProfilesView from '../views/ProfilesView.vue' import { getRootUrl, generateUrl } from '@nextcloud/router' const webRootWithIndexPHP = getRootUrl() + '/index.php' @@ -54,6 +55,11 @@ const routes = [ component: CacheView, props: true, }, + { + path: '/apps/profiler/profiles/', + name: 'profiles', + component: ProfilesView, + }, ] export default createRouter({ diff --git a/src/views/Profiler.vue b/src/views/Profiler.vue index 56472068..e17e5fc0 100644 --- a/src/views/Profiler.vue +++ b/src/views/Profiler.vue @@ -8,6 +8,13 @@ SPDX-License-Identifier: AGPL-3.0-or-later