App script

function doGet(e) {

var action = e.parameter.action;

if(action=="getNews"){
return getNews(e);
}

if(action=="addView"){
return addView(e);
}

if(action=="report"){
return reportNews(e);
}

return ContentService.createTextOutput("API Running");

}



function doPost(e){

var data=JSON.parse(e.postData.contents);

if(data.action=="postNews"){
return postNews(data);
}

}



/* POST NEWS */

function postNews(data){

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");

var id=new Date().getTime();

sheet.appendRow([
id,
data.headline,
data.text,
data.username,
data.photo,
data.email,
data.latitude,
data.longitude,
new Date().getTime(),
0,
0
]);

return ContentService.createTextOutput("posted");

}



/* GET NEWS */

function getNews(e){

var lat=parseFloat(e.parameter.lat);
var lon=parseFloat(e.parameter.lon);

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");

var data=sheet.getDataRange().getValues();

var result=[];

var now=new Date().getTime();

for(var i=1;i<data.length;i++){

var row=data[i];

var id=row[0];
var headline=row[1];
var text=row[2];
var email=row[3];
var nlat=row[4];
var nlon=row[5];
var time=row[6];
var views=row[7];
var reports=row[8];

var distance=getDistance(lat,lon,nlat,nlon);

var hours=(now-time)/3600000;

/* 5km limit */

if(distance<=5 && hours<=24){

result.push({
id:id,
headline:headline,
text:text,
time:time,
views:views
});

}

}

/* SORT BY VIEWS */

result.sort(function(a,b){

return b.views-a.views;

});

/* LIMIT 100 */

result=result.slice(0,100);

return ContentService
.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);

}



/* VIEW COUNT */

function addView(e){

var id=e.parameter.id;

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");

var data=sheet.getDataRange().getValues();

for(var i=1;i<data.length;i++){

if(data[i][0]==id){

var views=data[i][7];

sheet.getRange(i+1,8).setValue(views+1);

break;

}

}

return ContentService.createTextOutput("view added");

}



/* REPORT SYSTEM */

function reportNews(e){

var id=e.parameter.id;

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");

var data=sheet.getDataRange().getValues();

for(var i=1;i<data.length;i++){

if(data[i][0]==id){

var reports=data[i][8]+1;

sheet.getRange(i+1,9).setValue(reports);

/* DELETE IF 5 REPORT */

if(reports>=5){

sheet.deleteRow(i+1);

}

break;

}

}

return ContentService.createTextOutput("reported");

}



/* DISTANCE CALCULATION */

function getDistance(lat1, lon1, lat2, lon2) {

var R = 6371;

var dLat = (lat2-lat1) * Math.PI/180;

var dLon = (lon2-lon1) * Math.PI/180;

var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1 * Math.PI/180) * Math.cos(lat2 * Math.PI/180) *
Math.sin(dLon/2) * Math.sin(dLon/2);

var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

var d = R * c;

return d;

}



/* AUTO DELETE OLD NEWS */

function deleteOldNews(){

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");

var data=sheet.getDataRange().getValues();

var now=new Date().getTime();

for(var i=data.length-1;i>0;i--){

var time=data[i][6];

var hours=(now-time)/3600000;

if(hours>24){

sheet.deleteRow(i+1);

}

}

}

इस ब्लॉग से लोकप्रिय पोस्ट

The History of the World – A Simple and Long Article for English Learners

High Level Advance Random English Words

1. The Art of Self-Discipline