/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package servidor.http;

import com.sun.net.httpserver.*;
import servidor.utiles.*;

public class ConsolaHttp {

   ServidorHttp servidor;
   
   public ConsolaHttp(ServidorHttp servidor) {
      this.servidor = servidor;
   }

   public boolean procesar(HttpExchange arg) throws Exception {
      HttpRequest request = new HttpRequest(arg);
      String peticion = arg.getRequestURI().getPath().substring(14);
      if (request.primero != null) {
         procesarComando(arg, request);
      } else if (peticion.equals("/") || peticion.equals("")) {
         enviarPagina(arg);
      } else if (peticion.equals("/contenido")) {
         enviarContenido(arg);
      }
      return true;
   }

   void enviarPagina(HttpExchange arg) throws Exception {
      Http.enviarArchivoJar(arg, "ConsolaRemota.html");
   }

   void enviarContenido(HttpExchange arg) throws Exception {
      GeneradorHtml html = new GeneradorHtml();
      html.insertBodyScript(" onload='document.body.scrollTop=9999999' ");
      html.abrirTag("font", "face='courier new' size=2");
       for (servidor.PseudoConsola.Linea l : Global.main.getConsola().lista) {
           if (l.tipo == 1) {
               html.insertTag("font", "color='red'", l.linea.trim() + "<br>");
           } else {
               html.add(l.linea.trim());
           }
       }
      html.cerrarTag();
      arg.sendResponseHeaders(200, 0);
      Http.enviarTexto(arg, html.toString());

   }

   void procesarComando(HttpExchange arg, HttpRequest req) throws Exception {
      if (req.primero.equals("comando")) {
         Global.main.procesaComando(req.parametros.get(req.primero).toUpperCase());
         Global.sleep(1000);
         enviarPagina(arg);
      }
   }
}
