From 259008df50b43f657f04181644f325f1364ada51 Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 14 Mar 2023 15:00:39 +0700 Subject: [PATCH] add notification api endpoint --- tubearchivist/api/urls.py | 6 ++++++ tubearchivist/api/views.py | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/tubearchivist/api/urls.py b/tubearchivist/api/urls.py index 7cf5368c..278a3096 100644 --- a/tubearchivist/api/urls.py +++ b/tubearchivist/api/urls.py @@ -8,6 +8,7 @@ from api.views import ( DownloadApiListView, DownloadApiView, LoginApiView, + NotificationView, PingView, PlaylistApiListView, PlaylistApiVideoView, @@ -135,4 +136,9 @@ urlpatterns = [ SearchView.as_view(), name="api-search", ), + path( + "notification/", + NotificationView.as_view(), + name="api-notification", + ), ] diff --git a/tubearchivist/api/views.py b/tubearchivist/api/views.py index 40ca6468..8bd954bb 100644 --- a/tubearchivist/api/views.py +++ b/tubearchivist/api/views.py @@ -761,3 +761,21 @@ class SearchView(ApiBaseView): search_results = SearchForm().multi_search(search_query) return Response(search_results) + + +class NotificationView(ApiBaseView): + """resolves to /api/notification/ + GET: returns a list of notifications + filter query to filter messages by group + """ + + valid_filters = ["download", "settings", "channel"] + + def get(self, request): + """get all notifications""" + query = "message" + filter_by = request.GET.get("filter", None) + if filter_by in self.valid_filters: + query = f"{query}:{filter_by}" + + return Response(RedisArchivist().list_items(query))