#!/usr/bin/python

print "Content-type: application/json"
print "Access-Control-Allow-Origin: *"
print ""

import cgi
import json
import os
import re

import xml.etree.ElementTree as ET

import sys
sys.stderr = sys.stdout

import cgitb
cgitb.enable()


def isLocal():
    return 'REQUEST_METHOD' not in os.environ


def ensurePathForFile(filename):
    directory = os.path.dirname(filename)
    if not os.path.isdir(directory):
        # print "*Note* Folder '%s' doesn't exist. Creating for file '%s'" % (directory, filename)
        os.makedirs(directory)


def ensurePathForFolder(foldername):
    if not os.path.exists(foldername):
        # print "*Note* Folder '%s' doesn't exist. Creating now." % (foldername)
        os.makedirs(foldername)


def main():

    form = cgi.FieldStorage()
    guid = form.getfirst("guid", "")
    avatarHex = form.getfirst("avatarHex", "")
    avatarValue = form.getfirst("avatarValue", "")
    avatarXML = form.getfirst("avatarXML", "")

    result = {
        "status": -1,
        "description": "Failed to excute"
    }

    if guid and avatarHex and avatarXML:

        folder = "info/"
        ensurePathForFolder(folder)

        obj = {}
        obj["avatarHex"] = avatarHex
        obj["avatarValue"] = avatarValue

        # First write avatarHex and avatarValue
        f = open(folder + "%s.json" % (guid), "w")
        f.write(json.dumps(obj, indent=4))
        f.close()

        # Second write the avatarXML
        # Remove xmlns: http://stackoverflow.com/a/15641319/2669714
        avatarXML = re.sub(' xmlns="[^"]+"', '', avatarXML, count=1)
        root = ET.fromstring(avatarXML)
        tree = ET.ElementTree(root)
        tree.write(folder + "%s.xml" % (guid))

        result["status"] = 0
        result["guid"] = guid
        result["description"] = "Success!"
        result["avatarHex"] = avatarHex
        result["avatarValue"] = avatarValue

    else:
        result["status"] = -2
        result["description"] = "Missing params. guid=%s, avatarHex=%s, avatarXML=%s" % (guid, avatarHex, avatarValue, avatarXML)

    # ret = json.dumps({"status" : 0})
    ret = json.dumps(result)

    print ret

if __name__ == "__main__":
    main()
