from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response

from django.core.exceptions import ValidationError
from django.utils import six

from misago.threads.validators import validate_post

from . import common_flavour, finalise_markup


@api_view(['POST'])
def parse_markup(request):
    post = six.text_type(request.data.get('post', '')).strip()

    try:
        validate_post(post)
    except ValidationError as e:
        return Response({'detail': e.args[0]}, status=status.HTTP_400_BAD_REQUEST)

    parsed = common_flavour(request, request.user, post, force_shva=True)['parsed_text']
    finalised = finalise_markup(parsed)

    return Response({'parsed': finalised})
