-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
94 lines (83 loc) · 2.53 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const express = require("express");
const fs = require("fs");
const app = express();
// const cronJob = require("./script");
// const useCronJob = true;
// if(!cronJob.running && useCronJob){
// cronJob.start(); //start cron job
// cronJob.fireOnTick();
// }
const Twit = require('twit');
let T = null;
if(process && process.env && process.env.consumer_key){
T = new Twit({
consumer_key: process.env.consumer_key,
consumer_secret: process.env.consumer_secret,
access_token: process.env.access_token,
access_token_secret: process.env.access_token_secret,
timeout_ms: 60 * 1000,
});
}
app.use(express.static('client/build'));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Authorization");
next();
});
app.get("/api/stats/hour", (req, res, next) => {
const stats = JSON.parse(fs.readFileSync(`./stats.json`, "utf8"));
res.json({
success : 1,
stats
});
});
app.get("/api/keepalive", (req, res, next) => {
const osmpullscript = require("./osmpullscript");
osmpullscript.pull()
.then((done)=>{
res.json({
success : 1,
});
})
});
app.get("/api/twitte/hour", (req, res, next) => {
const osmpullscript = require("./osmpullscript");
osmpullscript.pull()
.then((done)=>{
const stats = JSON.parse(fs.readFileSync(`./stats.json`, "utf8"));
// Post a tweet
if(stats.users.length && stats.wayBuildings){
const tweetMessage = `Within this last minute in OSM, ${stats.users.length} users contributed in creating ${stats.changesets.length} changesets. ${stats.wayBuildings} buildings were also created. In total, ${stats.createnode} nodes, ${stats.createway} ways and ${stats.createrelation} realations were created. See more at https://a-minute-in-osm.herokuapp.com`;
T.post('statuses/update', { status: tweetMessage },
(err, data, response) => {
if(err){
res.json({
err : 1,
message : err
})
}
res.json({
success:1,
message : "Successfully twitted!"
})
}
)
}else{
res.json({
success:1,
message : "Noting to tweet"
})
}
})
.catch((err)=>{
console.log("@@@@",err)
res.json({
err : 1,
message : err
})
})
});
app.listen((process.env.PORT || 8080), () => {
console.log("Server running on port 8080");
});