Add root API showing the new endpoints.
Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
afd4748426
commit
49bb7c879e
@@ -1,7 +1,29 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from rest_framework import generics, renderers
|
from rest_framework import renderers
|
||||||
from rest_framework.authtoken.views import ObtainAuthToken
|
from rest_framework.authtoken.views import ObtainAuthToken
|
||||||
|
from rest_framework.views import APIView
|
||||||
|
from rest_framework.response import Response
|
||||||
|
from rest_framework.schemas.generators import EndpointEnumerator
|
||||||
|
|
||||||
|
from .classes import Endpoint
|
||||||
|
from .serializers import EndpointSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class APIRoot(APIView):
|
||||||
|
def get(self, request, format=None):
|
||||||
|
"""
|
||||||
|
Return a list of all users.
|
||||||
|
"""
|
||||||
|
endpoint_enumerator = EndpointEnumerator()
|
||||||
|
|
||||||
|
endpoints = []
|
||||||
|
for url in sorted(set([entry[0].split('/')[2] for entry in endpoint_enumerator.get_api_endpoints()])):
|
||||||
|
if url:
|
||||||
|
endpoints.append(Endpoint(label=url))
|
||||||
|
|
||||||
|
serializer = EndpointSerializer(endpoints, many=True)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
class BrowseableObtainAuthToken(ObtainAuthToken):
|
class BrowseableObtainAuthToken(ObtainAuthToken):
|
||||||
|
|||||||
10
mayan/apps/rest_api/classes.py
Normal file
10
mayan/apps/rest_api/classes.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
||||||
|
class Endpoint(object):
|
||||||
|
def __init__(self, label):
|
||||||
|
self.label = label
|
||||||
|
|
||||||
|
@property
|
||||||
|
def url(self):
|
||||||
|
return '/api/{}/'.format(self.label)
|
||||||
8
mayan/apps/rest_api/serializers.py
Normal file
8
mayan/apps/rest_api/serializers.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
|
||||||
|
class EndpointSerializer(serializers.Serializer):
|
||||||
|
label = serializers.CharField(read_only=True)
|
||||||
|
url = serializers.URLField(read_only=True)
|
||||||
@@ -2,10 +2,11 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
|
|
||||||
from .api_views import BrowseableObtainAuthToken
|
from .api_views import APIRoot, BrowseableObtainAuthToken
|
||||||
|
|
||||||
|
|
||||||
api_urls = [
|
api_urls = [
|
||||||
|
url(r'^$', APIRoot.as_view(), name='api_root'),
|
||||||
url(
|
url(
|
||||||
r'^auth/token/obtain/$', BrowseableObtainAuthToken.as_view(),
|
r'^auth/token/obtain/$', BrowseableObtainAuthToken.as_view(),
|
||||||
name='auth_token_obtain'
|
name='auth_token_obtain'
|
||||||
|
|||||||
Reference in New Issue
Block a user