Merge branch 'master' into static-media
[mygpo.git] / mygpo / api / urls.py
blob456d87cd3066b1485f7afb27c61056034aac03b7
1 from django.urls import path, register_converter
3 from . import legacy, simple, advanced, advanced, subscriptions
4 from .advanced import auth, lists, sync, updates, episode, settings
5 from mygpo.users import converters
6 from mygpo.usersettings.converters import ScopeConverter
8 register_converter(converters.ClientUIDConverter, 'client-uid')
9 register_converter(converters.UsernameConverter, 'username')
10 register_converter(ScopeConverter, 'scope')
13 urlpatterns = [
14 path('upload',
15 legacy.upload),
17 path('getlist',
18 legacy.getlist),
20 path('toplist.opml',
21 simple.toplist,
22 kwargs={'count': 50, 'format': 'opml'}),
24 path('subscriptions/<username:username>/'
25 '<client-uid:device_uid>.<str:format>',
26 simple.subscriptions),
28 path('subscriptions/<username:username>.<str:format>',
29 simple.all_subscriptions,
30 name='api-all-subscriptions'),
32 path('toplist/<int:count>.<str:format>',
33 simple.toplist,
34 name='toplist-opml'),
36 path('search.<str:format>',
37 simple.search),
39 path('suggestions/<int:count>.<str:format>',
40 simple.suggestions,
41 name='suggestions-opml'),
43 path('toplist.<str:format>',
44 simple.toplist,
45 kwargs={'count': 50}),
47 path('gpodder-examples.<str:format>',
48 simple.example_podcasts,
49 name='example-opml'),
51 path('api/<int:version>/subscriptions/<username:username>/'
52 '<client-uid:device_uid>.json',
53 subscriptions.SubscriptionsAPI.as_view(),
54 name='subscriptions-api'),
56 path('api/<int:version>/episodes/<username:username>.json',
57 advanced.episodes),
59 path('api/<int:version>/devices/<username:username>/'
60 '<client-uid:device_uid>.json',
61 advanced.device),
63 path('api/<int:version>/devices/<username:username>.json',
64 advanced.devices),
66 path('api/2/auth/<username:username>/login.json',
67 auth.login),
69 path('api/2/auth/<username:username>/logout.json',
70 auth.logout),
72 path('api/2/tags/<int:count>.json',
73 advanced.directory.top_tags),
75 path('api/2/tag/<str:tag>/<int:count>.json',
76 advanced.directory.tag_podcasts),
78 path('api/2/data/podcast.json',
79 advanced.directory.podcast_info),
81 path('api/2/data/episode.json',
82 advanced.directory.episode_info,
83 name='api-episode-info'),
85 path('api/2/chapters/<username:username>.json',
86 episode.ChaptersAPI.as_view()),
88 path('api/2/updates/<username:username>/<client-uid:device_uid>.json',
89 updates.DeviceUpdates.as_view()),
91 path('api/2/settings/<username:username>/<scope:scope>.json',
92 settings.SettingsAPI.as_view(),
93 name='settings-api'),
95 path('api/2/favorites/<username:username>.json',
96 advanced.favorites),
98 path('api/2/lists/<username:username>/create.<str:format>',
99 lists.create),
101 path('api/2/lists/<username:username>.json',
102 lists.get_lists),
104 path('api/2/lists/<username:username>/list/<slug:slug>.<str:format>',
105 lists.podcast_list,
106 name='api-get-list'),
108 path('api/2/sync-devices/<username:username>.json',
109 sync.main),