-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.js
More file actions
104 lines (94 loc) · 2.75 KB
/
api.js
File metadata and controls
104 lines (94 loc) · 2.75 KB
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
95
96
97
98
99
100
101
102
103
var express = require('express');
var database = require('./database');
var passport = require('passport');
var GoogleStrategy = require('passport-google-id-token');
var GOOGLE_CLIENT_ID = "";
var GOOGLE_CLIENT_SECRET = "";
module.exports = (function() {
'use strict';
var api = express.Router()
database.init(function(err) {
if (err) {
throw err;
} else {
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
api.post('/auth', function(req, res, next) {
passport.authenticate(new GoogleStrategy, function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.sendStatus(400); }
req.logIn(user, function(err) {
if (err) { return next(err); }
console.log(user.username);
return res.sendStatus(200);
});
})(req, res, next);
});
api.get("/getall/:lpid", function(req, res) {
var lpid = parseInt(req.params.lpid);
database.getAll(lpid,function(result){
res.send(result);
});
});
api.get("/getlocal/:lng/:lat", function(req, res) {
var coords = [parseFloat(req.params.lng),
parseFloat(req.params.lat)];
database.getLocal(coords, function(result){
result.reverse();
res.send(result);
});
});
api.get("/getpost/:id", function(req, res) {
var pid = parseInt(req.params.id);
database.getPost(pid, function(result){
result.reverse();
res.send(result);
});
});
api.get("/popular", function(req, res) {
database.getPopular(function(result){
res.send(result);
});
});
api.post("/add", function(req, res) {
var text = req.body.text;
var lat = parseFloat(req.body.lat);
var lng = parseFloat(req.body.lng);
var likes = 0;
console.log(req.body);
database.addPost(text, lat, lng, likes, function(err, doc) {
if (err) {
res.sendStatus(409);
}
else {
res.sendStatus(200);
}
});
});
api.post("/rate", function(req, res) {
var token = req.headers.token;
console.log(token);
var pid = req.body.pid;
var likes = req.body.likes;
var op = req.body.op;
database.ratePost(pid, likes, op, function(err, doc) {
if (err) {
res.sendStatus(409);
}
else {
res.sendStatus(200);
}
});
});
}
});
return api;
}) ();