1 from django.views.generic.base import TemplateView
3 from rest_framework import status, viewsets
4 from rest_framework.response import Response
7 from . import serializers
9 class IndexView(TemplateView):
10 template_name = 'bigly/index.html'
12 index = IndexView.as_view()
14 class FollowRedirectsViewSet(viewsets.ViewSet):
15 serializer_class = serializers.FollowRedirectsSerializer
17 def follow_redirects(self, request):
18 serializer = serializers.FollowRedirectsSerializer(data=request.query_params)
20 if not serializer.is_valid():
23 status=status.HTTP_400_BAD_REQUEST,
26 link = serializer.data['link']
29 response = requests.head(link)
31 # TODO Handle timeouts
33 if 301 <= response.status_code and response.status_code <= 308:
34 # TODO Handle the different kinds of redirects correctly
36 link = response.headers.get('Location')
42 # TODO Handle error responses
47 'status': response.status_code,
49 status=status.HTTP_200_OK,
53 api_follow_redirects = FollowRedirectsViewSet.as_view({
54 'get': 'follow_redirects',