#!/usr/bin/python
import cgi
import os
import sys

#recebe por get ou post os parametros username e score
#caso o score recebido esteja entre os 10 melhores
#atualiza o arquivo top10.txt e retorna a lista dos 10 melhores em formato querystring

# Required header that tells the browser how to render the text.
print "Content-Type: text/plain\n\n"

username = ''
score = '0'

try:
	form = cgi.FieldStorage()
	username = form['username'].value
	score = form['score'].value
except:
	print '&sucesso=2&'


def readHighscoreFile(filename='top10.txt',path=None):
	try:
		#abre o arquivo para leitura
		fileobject = open(filename,'r')
		#preenche cada elemento da lista entradas com uma linha do arquivo 
		entradas = fileobject.readlines();
		#para cada elemento da lista
		for i in range(len(entradas[:])/2):
			#retira os espacos em branco
			entradas[i] = entradas[i].strip()
			nomes.append(entradas[i])
		for i in range(len(entradas[:])/2):
			entradas[i+(len(entradas[:])/2)] = entradas[i+(len(entradas[:])/2)].strip()
			scores.append(entradas[i+(len(entradas[:])/2)])
	#nao conseguiu abrir o arquivo
	except IOError, (errno, strerror):
		print "erro de E/S(%s): %s" % (errno, strerror)
	except:
		print "Erro inesperado:", sys.exc_info()[0]
		raise

def updateHighscoreFile(filename='top10.txt',path=None):
	try:
		#abre o arquivo para escrita
		fileobject = open(filename,'w')
		#para cada elemento da lista
		for i in range(len(nomes[:10])):
			fileobject.write(nomes[i]+"\n")
		for i in range(len(scores[:10])):
			fileobject.write(scores[i]+"\n")
		fileobject.close()
	#nao conseguiu abrir o arquivo
	except IOError, (errno, strerror):
		print "erro de E/S(%s): %s" % (errno, strerror)
	except:
		print "Erro inesperado:", sys.exc_info()[0]
		raise


nomes = []
scores = []
readHighscoreFile();
for i in range(len(scores[:])):
	if eval(score) > eval(scores[i]):
		scores.insert(i,score)
		nomes.insert(i,username)
		posicao = i;
		break
for i in range(len(scores[:])):
	print "&nome"+str(i)+"="+nomes[i]+"&score"+str(i)+"="+scores[i]+"&"
print '&sucesso=1&posicao='+str(posicao)

updateHighscoreFile();