// tag string generator
function tagGen(len)
{
var text = "";
var charset = "0123456789";
for( var i=0; i < len; i++ )
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
var SPNAPI = (function(SPNAPI, $, undefined) {
SPNAPI.methods = {};
SPNAPI.pages = ["Settings","Bitmap","Tradebot","Instandex", "Pangea", "Peers","Debug", "Coins", "Blockexplorer"];
SPNAPI.pageContent = {};
SPNAPI.page = "Blockexplorer";
/*
* added variables for flexibility
*/
SPNAPI.usePexe=false;
SPNAPI.domain="http://127.0.0.1";
SPNAPI.port="7778";
$(document).ready(function() {
//load Pages into the navbar
$.each(SPNAPI.pages, function( index, value ) {
$("#welcome").after('
'+value+'');
});
$(".navigation").on("click", function () {
var page = $(this).data("page");
$(".navigation").removeClass("active");
SPNAPI.loadSite(page);
console.log(page);
if(page==="Peers"){
}else if(page==="Settings"){
check_files();
//SPNAPI.check_coin_conf_files_present();
}else if(page==="Coins"){
addInitCoins();
}else if(page==="Instandex"){
$('#Instandex_form_table').html("");
$('#Instandex_output_table').html("");
}else if(page==="Tradebot"){
$('#trade_output').html("");
$('#tradebot_input').html('');
}
else if(page==="Blockexplorer"){
filesystem_show_file_name();
}
});
$(".page").hide();
$("#Blockexplorer_page").show();
$(".submit_api_request").on("click", function () {
SPNAPI.submitRequest();
});
$(".clear-response").on("click", function () {
$(".hljs").html("JSON response");
});
});
// this function handles form in "eyedea" tab
// you can use it as example for writing your own
SPNAPI.submitRequest = function(e) {
if ($("#json_src").val()) {
var request = $("#json_src").val();
} else {
console.log('request is empty');
return;
}
SPNAPI.makeRequest(request, function(json_req, json_resp) {
$(".result").text(json_resp);
historyTable.addItem(json_req);
});
};
// makeRequest is wrapper-function for performing postCall requests.
// argument is your json request, tag is generated and added autmatically
// two options are passed to callback, request and response
SPNAPI.makeRequest = function( request, callback ) {
// check if tag is already included in request
request = JSON.parse( request );
if ( request.tag === undefined ) {
request = JSON.stringify( request );
var tag = tagGen(18);
request = request.substr(0, request.length - 1);
request = request + ',"tag":"' + tag.toString() + '"}';
} else {
request = JSON.stringify( request );
}
console.log('Requesting: ' + request);
/*
* typeof nacl_module !== 'undefined' will test if pexe is loaded or not
*/
if(typeof nacl_module !== 'undefined' && SPNAPI.usePexe){
postCall('iguana', request, function(response){
console.log('pexe Response is ' + response);
//if(typeof callback === 'function'){
callback(request, response);
//}
});
}else{
request = JSON.parse( request );
var usepost=SPNAPI.useGETRequest(request);
var url="";
/*
* Ajax request will be sent if pexe is not loaded or
* if usepexe is set to false
* (this adds the user the ability to handle how requests are sent)
*/
if(!usepost){
url=SPNAPI.returnAJAXPostURL(request);
$.ajax({
type: "POST",
url: url,
crossDomain: true,
//dataType: 'json',
data: JSON.stringify(request),
success: function(response, textStatus, jqXHR) {
console.log('AJAX Response is ' + JSON.stringify(response));
callback(request, response);
},
error: function (responseData, textStatus, errorThrown) {
console.log('POST request failed.');
}
});
}else{
var url=SPNAPI.returnAJAXgetURL(request);
if(url){
$.ajax({
type: "GET",
url: url,
success:function( response ) {
console.log('AJAX Response is ' + response);
//if(typeof callback === 'function'){
callback(request, response);
//}
}
});
}
}
}
};
SPNAPI.useGETRequest=function(request){
if(request.method && (request.method==='apikeypair' || request.method==='setuserid' || request.method==='encryptjson' || request.method==='decryptjson')){
return false;
}else{
return true;
}
};
SPNAPI.returnAJAXPostURL=function(request){
var url=SPNAPI.domain+":"+SPNAPI.port;
if(request.method === undefined){
console.log("Invalid request.");
return false;
}
console.log("Post Url for request:"+url);
return url;
};
SPNAPI.returnAJAXgetURL=function(request){
var url=SPNAPI.domain+":"+SPNAPI.port+"/api/";
if(request.method === undefined){
console.log("Invalid request.");
return false;
}
if(request.agent=== undefined){
url=url+"iguana/";
}else{
url=url+request.agent+"/";
}
url=url+request.method+"/";
for(var i in request){
if(i==="agent" ||i==="method"){
continue;
}
if(request[i] instanceof Array ){
for(var x in request[i]){
url=url+encodeURI(i)+"/"+encodeURI(request[i][x])+"/";
}
continue;
}
url=url+encodeURI(i)+"/"+encodeURI(request[i])+"/";
}
console.log("Url generated from request:"+url);
return url;
};
return SPNAPI;
}(SPNAPI || {}, jQuery));