adding automatic fetch for flosight API
This commit is contained in:
parent
289089d972
commit
ce28df6834
133
index.html
133
index.html
@ -10,12 +10,12 @@
|
|||||||
const floGlobals = {
|
const floGlobals = {
|
||||||
|
|
||||||
//Required for all
|
//Required for all
|
||||||
blockchain: "FLO_TEST",
|
blockchain: "FLO",
|
||||||
|
|
||||||
//Required for blockchain API operators
|
//Required for blockchain API operators
|
||||||
apiURL: {
|
apiURL: {
|
||||||
FLO: 'https://flosight.duckdns.org',
|
FLO: ['https://explorer.mediciland.com/', 'https://livenet.flocha.in/', 'https://flosight.duckdns.org/', 'http://livenet-explorer.floexperiments.com', 'http://ec2-13-233-133-128.ap-south-1.compute.amazonaws.com/', 'http://ec2-13-233-131-136.ap-south-1.compute.amazonaws.com/', 'http://ec2-13-233-194-1.ap-south-1.compute.amazonaws.com/'],
|
||||||
FLO_TEST: 'https://testnet-flosight.duckdns.org'
|
FLO_TEST: ['https://testnet-flosight.duckdns.org', 'https://testnet.flocha.in/']
|
||||||
},
|
},
|
||||||
adminID: "oTZw3ydCRKDhcYC5Bp6mRJMGTTVv9JHtg8",
|
adminID: "oTZw3ydCRKDhcYC5Bp6mRJMGTTVv9JHtg8",
|
||||||
sendAmt: 0.001,
|
sendAmt: 0.001,
|
||||||
@ -4692,7 +4692,6 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
/* Reactor Event handling */
|
/* Reactor Event handling */
|
||||||
if (typeof reactor == "undefined" || !reactor) {
|
if (typeof reactor == "undefined" || !reactor) {
|
||||||
@ -4974,44 +4973,75 @@
|
|||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
/* FLO Blockchain Operator to send/receive data from blockchain using API calls*/
|
/* FLO Blockchain Operator to send/receive data from blockchain using API calls*/
|
||||||
|
|
||||||
|
const getRandomInt = function(min, max) {
|
||||||
|
min = Math.ceil(min);
|
||||||
|
max = Math.floor(max);
|
||||||
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||||
|
}
|
||||||
|
|
||||||
const floBlockchainAPI = {
|
const floBlockchainAPI = {
|
||||||
|
|
||||||
//Promised AJAX function to get data from API
|
util: {
|
||||||
promisedAJAX: function (method, uri) {
|
serverList: floGlobals.apiURL[floGlobals.blockchain].slice(0),
|
||||||
|
curPos: getRandomInt(0, floGlobals.apiURL[floGlobals.blockchain].length),
|
||||||
|
fetch_retry: function(apicall){
|
||||||
|
return new Promise((resolve,reject) => {
|
||||||
|
this.serverList.splice(this.curPos, 1);
|
||||||
|
this.curPos = getRandomInt(0, this.serverList.length)
|
||||||
|
this.fetch_api(apicall)
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error));
|
||||||
|
})
|
||||||
|
},
|
||||||
|
fetch_api: function(apicall){
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if(this.serverList.length === 0)
|
||||||
|
reject("No floSight server working")
|
||||||
|
else{
|
||||||
|
fetch(this.serverList[this.curPos] + apicall).then(response => {
|
||||||
|
if(response.ok)
|
||||||
|
response.json().then(data => resolve(data));
|
||||||
|
else{
|
||||||
|
this.fetch_retry(apicall)
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error));
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
this.fetch_retry(apicall)
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
//Promised function to get data from API
|
||||||
|
promisedAPI: function (apicall) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var request = new XMLHttpRequest();
|
console.log(apicall)
|
||||||
var url = `${floGlobals.apiURL[floGlobals.blockchain]}/${uri}`;
|
this.util.fetch_api(apicall)
|
||||||
console.log(url)
|
.then(result => resolve(result))
|
||||||
request.open(method, url, true);
|
.catch(error => reject(error));
|
||||||
request.onload = (evt) => {
|
|
||||||
if (request.readyState == 4 && request.status == 200)
|
|
||||||
resolve(request.response);
|
|
||||||
else
|
|
||||||
reject(request.response);
|
|
||||||
};
|
|
||||||
request.send();
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
//Get balance for the given Address
|
//Get balance for the given Address
|
||||||
getBalance: function (addr) {
|
getBalance: function (addr) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.promisedAJAX("GET", `api/addr/${addr}/balance`).then(balance => {
|
this.promisedAPI(`api/addr/${addr}/balance`)
|
||||||
resolve(parseFloat(balance));
|
.then(balance => resolve(parseFloat(balance)))
|
||||||
}).catch(error => {
|
.catch(error => reject(error));
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
//Write Data into blockchain
|
//Write Data into blockchain
|
||||||
writeData: function (senderAddr, Data, PrivKey, receiverAddr = floGlobals.adminID) {
|
writeData: function (senderAddr, Data, PrivKey, receiverAddr = floGlobals.adminID) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.sendTx(senderAddr, receiverAddr, floGlobals.sendAmt, PrivKey, Data).then(txid => {
|
this.sendTx(senderAddr, receiverAddr, floGlobals.sendAmt, PrivKey, Data)
|
||||||
resolve(txid);
|
.then(txid => resolve(txid))
|
||||||
}).catch(error => {
|
.catch(error => reject(error))
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -5030,8 +5060,7 @@
|
|||||||
var trx = bitjs.transaction();
|
var trx = bitjs.transaction();
|
||||||
var utxoAmt = 0.0;
|
var utxoAmt = 0.0;
|
||||||
var fee = floGlobals.fee;
|
var fee = floGlobals.fee;
|
||||||
this.promisedAJAX("GET", `api/addr/${senderAddr}/utxo`).then(response => {
|
this.promisedAPI(`api/addr/${senderAddr}/utxo`).then(utxos => {
|
||||||
var utxos = JSON.parse(response);
|
|
||||||
for (var i = utxos.length - 1;
|
for (var i = utxos.length - 1;
|
||||||
(i >= 0) && (utxoAmt < sendAmt + fee); i--) {
|
(i >= 0) && (utxoAmt < sendAmt + fee); i--) {
|
||||||
if (utxos[i].confirmations) {
|
if (utxos[i].confirmations) {
|
||||||
@ -5048,15 +5077,11 @@
|
|||||||
trx.addoutput(senderAddr, change);
|
trx.addoutput(senderAddr, change);
|
||||||
trx.addflodata(floData);
|
trx.addflodata(floData);
|
||||||
var signedTxHash = trx.sign(PrivKey, 1);
|
var signedTxHash = trx.sign(PrivKey, 1);
|
||||||
this.broadcastTx(signedTxHash).then(txid => {
|
this.broadcastTx(signedTxHash)
|
||||||
resolve(txid)
|
.then(txid => resolve(txid))
|
||||||
}).catch(error => {
|
.catch(error => reject(error))
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => reject(error))
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -5065,7 +5090,7 @@
|
|||||||
broadcastTx: function (signedTxHash) {
|
broadcastTx: function (signedTxHash) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
var url = `${floGlobals.apiURL[floGlobals.blockchain]}/api/tx/send`;
|
var url = this.util.serverList[this.util.curPos] + 'api/tx/send';
|
||||||
if (signedTxHash.length < 1)
|
if (signedTxHash.length < 1)
|
||||||
reject("Empty Signature");
|
reject("Empty Signature");
|
||||||
else {
|
else {
|
||||||
@ -5088,27 +5113,20 @@
|
|||||||
//Read Txs of Address between from and to
|
//Read Txs of Address between from and to
|
||||||
readTxs: function (addr, from, to) {
|
readTxs: function (addr, from, to) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=${from}&to=${to}`).then(response => {
|
this.promisedAPI(`api/addrs/${addr}/txs?from=${from}&to=${to}`)
|
||||||
resolve(JSON.parse(response));
|
.then(response => resolve(response))
|
||||||
}).catch(error => {
|
.catch(error => reject(error))
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
//Read All Txs of Address (newest first)
|
//Read All Txs of Address (newest first)
|
||||||
readAllTxs: function (addr) {
|
readAllTxs: function (addr) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=1`).then(response => {
|
this.promisedAPI(`api/addrs/${addr}/txs?from=0&to=1`).then(response => {
|
||||||
var totalItems = JSON.parse(response).totalItems;
|
this.promisedAPI(`api/addrs/${addr}/txs?from=0&to=${response.totalItems}0`)
|
||||||
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=${totalItems}0`).then(response => {
|
.then(response => resolve(response.items))
|
||||||
resolve(JSON.parse(response).items);
|
.catch(error => reject(error));
|
||||||
}).catch(error => {
|
}).catch(error => reject(error))
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -5125,10 +5143,9 @@
|
|||||||
options.limit = options.limit | 1000
|
options.limit = options.limit | 1000
|
||||||
options.ignoreOld = options.ignoreOld | 0
|
options.ignoreOld = options.ignoreOld | 0
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=1`).then(response => {
|
this.promisedAPI(`api/addrs/${addr}/txs?from=0&to=1`).then(response => {
|
||||||
var newItems = JSON.parse(response).totalItems - options.ignoreOld;
|
var newItems = response.totalItems - options.ignoreOld;
|
||||||
this.promisedAJAX("GET", `api/addrs/${addr}/txs?from=0&to=${newItems*2}`).then(response => {
|
this.promisedAPI(`api/addrs/${addr}/txs?from=0&to=${newItems*2}`).then(response => {
|
||||||
response = JSON.parse(response)
|
|
||||||
if (options.limit <= 0)
|
if (options.limit <= 0)
|
||||||
options.limit = response.items.length;
|
options.limit = response.items.length;
|
||||||
var filteredData = [];
|
var filteredData = [];
|
||||||
@ -6202,6 +6219,7 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
/* FLO Cloud operations to send/request application data*/
|
||||||
floCloudAPI = {
|
floCloudAPI = {
|
||||||
//send Any message to supernode cloud storage
|
//send Any message to supernode cloud storage
|
||||||
sendApplicationData: function(message, type, options = {}){
|
sendApplicationData: function(message, type, options = {}){
|
||||||
@ -6319,7 +6337,6 @@
|
|||||||
reactor.addEventListener('logHandle', function(event){
|
reactor.addEventListener('logHandle', function(event){
|
||||||
console.log(event)
|
console.log(event)
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user