""" Module containing the http loaders. This loaders are the responsible for parse the http request into a known data format (INNERS) and for make an http response from python data (OUTERS) """ import json from django.http import HttpResponse # INNERS def json_in(request): """ Http loader of type "in". Transform json request data into python object. Request's body must be in json format. Parameters ---------- request: HttpRequest Http requested Returns ------- success: object Python object """ return json.loads(u'{}'.format(request.body.decode('utf8'))) def dict_in(request): """ Http loader of type "in". Transform GET request url data into a python dictionary. Parameters ---------- request: HttpRequest Http requested Returns ------- success: object Python object """ data = request.GET.dict() return data def invisible_in(request): """ Http loader of type "in". Transform GET request url data into a python dictionary. Parameters ---------- request: HttpRequest Http requested Returns ------- success: object Python object """ return {"request": request} # OUTERS def json_out(data): """ Transform serializable data into a Json Http response. Parameters ---------- data: object Pytho object to return. Must be serializable Returns ------- success: HttpResponse """ json_result = json.dumps(data) return HttpResponse(json_result) def plain_out(data): """ Create an HTTP Response from string. Any operation on data is performed. Parameters ---------- data: string Data to send Returns ------- success: HttpResponse """ return HttpResponse(data) def invisible_out(data): """ Send "as is" the data. Any operation is performed on data input. Parameters ---------- data: HttpResponse Returns ------- success: HttpResponse """ return data