Limpar mensagem do retorno do Hawtio

by Elvis de Freitas

HTML

<script src="https://rawgit.com/mageddo/Downloadify/master/js/downloadify.min.js"></script>
<script src="https://rawgit.com/eligrey/FileSaver.js/1.3.2/FileSaver.min.js"></script>
<h1>Limpar mensagem do retorno do Hawtio </h1>
Quando se executa um JMX no hawtio via CURL ele retorna UM JSON que tem dentro o conteúdo resposta da mensagem. Se o conteudo for um JSON fica dificil entender pois ele está dentro dessa estrutura do hawtio. 
<br>
Essa tela resolve isso limpando a estrutura e trazendo apenas o conteudo da reposta do JMX.
aqui um <a id="example" href="#">Exemplo de arquivo</a>
<br><br>
<fieldset>
  <legend>Arquivo com resultado do JMX</legend>
  <input type="file" id="file" />
</fieldset>
<fieldset>
<legend>Console</legend>
  <textarea id="out" readonly></textarea>
</fieldset>
<br />
<button>converter</button>

CSS

textarea {
  width: 100%;
  height: 50px;
}
#saidaCucumber{
  height: 200px;
}

JavaScript

$("#example").click(function(e){
		e.preventDefault();
  	getDownloadLink('{"request":{"mbean":"com.acme:name=ABCJMX,type=ABCJMX","arguments":["x","y"],"type":"exec","operation":"doStuff(java.lang.String,int)"},"value":"{\\"nome\\": \\"Joao\\"}","timestamp":1476383605,"status":200}', 'example.txt').click();

});

$("button").click(function() {
  	log(true);
    var f = $("#file").get(0).files[0];
    if(!f){
    	log("Informe um arquivo\n");
    	return ;
    }
		readFileAsText(f, function(file, content){

      try{
      	log("Convertendo o arquivo....\n")
      	var message = JSON.parse(content).value;
      	log("baixando....\n");
        console.debug('conteudo', message.substring(0, message.length > 50 ? 50 : message.length))
        downloadAlternative(message, "raw-message-" + file.name);
        log("Tudo feito!\n");
      }catch(e){

        log("Falha ao parsear o json: " + e + "\n");
      }
    });
});

function getDownloadLink(str, name){

    var a = document.createElement("a");
    a.href="data:application/octet-stream," + encodeURIComponent(str);
    a.download = name;
    document.body.appendChild(a);
    return a;

}

function downloadAlternative(str, name){
	var blob = new Blob([str], {type: "text/plain;charset=utf-8"});
	saveAs(blob, name);
 }

/**
 * Load passed file content as text
 */
function readFileAsText(file, callback){
		var r = new FileReader();
    r.onload = function(e) { 
      var contents = e.target.result;
      callback(file, e.target.result, e);
    }
    r.readAsText(file);
}

function log(text) {
  var out = $("#out");
  out.val(out.val() + text);
  if(text === true){out.val('');}
}