# -*- coding:utf-8 -*-
from django.http import HttpResponse
from simplejson.encoder import JSONEncoder


def RESTget(view):
    def deco(*args, **kwargs):
        try:
            indent = args[0].GET.has_key('pretty') and 4 or None
            return HttpResponse(u'%s\n' % JSONEncoder(indent = indent).encode(view(*args, **kwargs)), 'text/plain')
        except Exception, e:
             import traceback
             print e, traceback.format_exc()
             raise
    return deco


def RESTpost(view):
    def deco(*args, **kwargs):
        try:
            from simplejson.decoder import JSONDecoder
            args += (JSONDecoder().decode(args[0].raw_post_data),)
            result = view(*args, **kwargs)
            try:
                return HttpResponse(u'%s\n' % JSONEncoder().encode(result), 'text/plain')
            except:
                return result
        except Exception, e:
             import traceback
             print e, traceback.format_exc()
             raise
    return deco


def print_timing(f):
    def do_timing(*args, **kwargs):
        import datetime
        started = datetime.datetime.now()
        r = f(*args, **kwargs)
        ended = datetime.datetime.now()
        print started, ended, ended - started
        return r
    return do_timing
