MONGOLAB CONNECTION EXAMPLE - MahdiMahava/hello_world GitHub Wiki
MONGOLAB CONNECTION EXAMPLE
// 1) Create connection
var xhr = new XMLHttpRequest();
//SPECIFY REQUEST TYPE, URL and PARAMETERS
xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY, true);
// SEND REQUEST
xhr.send();
//WAIT UNTIL REPLY xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.status != 200)
{
alert("ERROR!" + xhr);
}
else
{
var parsedresponse = JSON.parse(xhr.responseText);
for (var childItem in table.childNodes)
{
var result = table.childNodes[childItem].someattribute;
}
}
} }
//MONGO DB INTERACTION
var mongoAPI_KEY = 'zB4cXF8ikkegTQhmdggdq9dTC53m5K9q';
//Get all Lock Records function getalllocks() { //alert('check'); var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY, true);
xhr.send();
xhr.onreadystatechange = function() {
//alert('2');
if (xhr.readyState != 4) return;
if (xhr.status != 200)
{
alert("ERROR!" + xhr);
}
else
{
//alert('3');
console.log('start... ');
var table = document.getElementById('mailstable');
var parsedresponse = JSON.parse(xhr.responseText);
for (var childItem in table.childNodes)
{
var numberid = table.childNodes[childItem].id;
for(var j in parsedresponse)
{
if(table.childNodes[childItem].id == parsedresponse[j].id)
{
console.log('mark locked' + table.childNodes[childItem].id);
var row = document.getElementById(parsedresponse[j].id);
row.cells[0].innerHTML = 'NO ';
}
else
{
try
{
console.log('mark unlocked' + numberid);
var row = document.getElementById(numberid);
row.cells[0].innerHTML = 'YES';
}
catch(e)
{
}
}
}
}
}
} }
//write function startwrite(id) { //var id = "testing...."; var datenow = new Date(); var json = JSON.stringify({"id":id,"date":{"$date":datenow}}); var xhr = new XMLHttpRequest(); xhr.open("POST", "https://api.mongolab.com/api/1/databases/mailhandler/collections/locks/?apiKey=" + mongoAPI_KEY, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(json); }
//CheckResponse function checklock(id) { //alert('1'); var xhr = new XMLHttpRequest(); var query = JSON.stringify({"id":"test2"}); xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY + '&q={"id":"'+id+'"}&c=true', true); //xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("q",'{"id":"test2"}'); //xhr.setRequestHeader("c",true); //xhr.send(); //var query = 'q="id":'+id; // 3. Отсылаем запрос xhr.send(); //xhr.send();
// 4. Если код ответа сервера не 200, то это ошибка
xhr.onreadystatechange = function() { //alert('2'); if (xhr.readyState != 4) return; if (xhr.status != 200) { //alert("ERROR!" + xhr);
}
else
{
// вывести результат
if(xhr.responseText == 0)
{
startwrite(id);
mailclick_proceed(id);
}
else
{
//alert('blocked');
var leftdiv = document.getElementById('div2');
leftdiv.innerHTML = '<br/<br/><center><img style = "width:35px; height:35px" src ="images/padlock-lock-icon.png"><br/><label> Письмо уже обрабатывается </label> <br/> <button onclick = "closeright()"> Ок </button></center>';
}
console.log(xhr.status + ' NOPE NOPE NOPE');
//alert(xhr); // responseText -- текст ответа.
}
}
}
//UNLOCK DELETE RECORD
function deletelock(id) { //var id = "testing...."; //var datenow = new Date(); //var json = JSON.stringify({"id":id,"date":{"$date":datenow}}); // 1) Lets get the _id of the record var xhr1 = new XMLHttpRequest(); xhr1.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY + '&q={"id":"'+ id +'"}', true); xhr1.setRequestHeader("Content-Type", "application/json"); xhr1.send(); console.log(xhr1); xhr1.onreadystatechange = function() { //alert('2'); //if (xhr.readyState != 4) return; if (xhr1.readyState != 4) return; if (xhr1.status != 200) { //alert("ERROR!" + xhr);
}
else
{
var parsedresponse = JSON.parse(xhr1.responseText);
var recordid = parsedresponse [0]._id.$oid
//console.log(recordid);
//alert(recordid[0]._id.$oid);
var xhr = new XMLHttpRequest();
xhr.open("DELETE", "https://api.mongolab.com/api/1/databases/mailhandler/collections/locks/"+recordid+"?apiKey=" + mongoAPI_KEY, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send();
}
}
}
//REPLY LOGGING LOGIC
function writereply(item) { var datenow = new Date(); var recipient_formatted = "<"+item.recipient+">"; var json = JSON.stringify({"id":item.id,"date":{"$date":datenow},"handler":item.handler,"message":item.message,"recipient":recipient_formatted});
// Send to Mongo
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.mongolab.com/api/1/databases/mailhandler/collections/sent/?apiKey=" + mongoAPI_KEY, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(json);
}
//Get person with last response function gethandler(mailitem) { var xhr2 = new XMLHttpRequest(); //var query = JSON.stringify({"id":"test2"}); //alert(mailitem.from);
console.log(mailitem);
xhr2.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/sent?apiKey=' + mongoAPI_KEY + '&q={"recipient":"'+mailitem.from+'"}&s={"date":-1}', true);
xhr2.send();
xhr2.onreadystatechange = function()
{ //alert('2'); if (xhr2.readyState != 4) return; if (xhr2.status != 200) { alert("ERROR!" + xhr);
}
else
{
// вывести результат
//console.log(mailitem + 'Finittaaa');
var parsedresponse = JSON.parse(xhr2.responseText);
//console.log(xhr2.responseText);
try
{
var lasthandler = parsedresponse[0].handler;
//console.log("SOOOOOOOOOOOOOOOOOOO: " + parsedresponse);
//alert(mailitem.id);
var elem = document.getElementById(mailitem.id);
elem.cells[0].innerHTML = '<img style = "width:50px; height:50px;" src ="images/archiviazione.png"><br/>'+lasthandler;
console.log(xhr2.status);
//alert(xhr); // responseText -- текст ответа.
}
catch(e)
{
var elem = document.getElementById(mailitem.id);
elem.cells[0].innerHTML = '<img style = "width:50px; height:50px;" src ="images/archiviazione.png"><br/>';
}
}
}
}
//LONG LOCKS LOGIC function checklonglocks() {
}