require 'tcp'
-- Funcion para manejo de eventos
function handler (evt)
	if evt.class  ~= 'ncl'         then return end
    if evt.type   ~= 'attribution' then return end
    if evt.action ~= 'start'       then return end
    if evt.name   ~= 'search'      then return end

	event.post {
        class  = 'ncl',
        type   = 'attribution',
        name   = 'search',
        action = 'stop',
    }

    tcp.execute(
        function ()
			-- Se hace conexion con el servidor elo a traves del puerto 80.
            tcp.connect('www2.elo.utfsm.cl', 80)
			-- Se hace la peticion para la busqueda
            tcp.send('GET /~elo323/tweet/settweet.php?search=%40latercera+'..evt.value..'\n')
			-- Se guarda la respuesta en la variable result
            local result = tcp.receive()

            if result then
				-- Si se encuentra un tweet, se separan el nombre de usuario y el mensaje
				-- y se dejan en un solo string separados por dos ;; (Usuario;;Mensaje).
                if string.find(result, 'No se encontraron Resultados') == nil then
                    j, i = string.find(result, '<user>')
                    j, k = string.find(result, '</user>')
                    user = string.sub(result, i+1, j-1)
                    j, i = string.find(result, '<tweet>')
                    j, k = string.find(result, '</tweet>')
                    tweet = string.sub(result, i+1, j-1)
                    result = string.format("%s;;%s", user, tweet)
                else
					-- Se muestra un mensaje en caso de no encontrar resultados en la busqueda.
                    result = "No se encontraron resultados para '"..evt.value.."'."
                end
	        else
				-- Se muestra un mensaje en caso de error.
		        result = 'error: ' .. evt.error
	        end
			-- Se crea el evento con el resultado de la busqueda.
	        local evt = {
		        class = 'ncl',
		        type  = 'attribution',
		        name  = 'result',
		        value = result,
	        }
			-- Se anuncia el evento recien creado.
	        evt.action = 'start'; event.post(evt)
	        evt.action = 'stop' ; event.post(evt)
            tcp.disconnect()
        end
    )
end

event.register(handler)
