import json from django.views.decorators.csrf import csrf_exempt from django.views.decorators.http import require_http_methods from lemonauth import tokens from .create import create from .delete import delete from .query import query actions = { 'create': create, 'delete': delete, } @csrf_exempt @require_http_methods(['GET', 'HEAD', 'POST']) def micropub(request): request.token = tokens.auth(request) if request.method in ('GET', 'HEAD'): return query(request) action = request.POST.get('action', 'create') if request.content_type == 'application/json': request.json = json.load(request) action = request.json.get('action', 'create') if action not in actions: raise error.bad_req('unknown action: {}'.format(action)) return actions[action](request)