mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
deprecate api v1
This commit is contained in:
@@ -1,173 +1,13 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = new express.Router();
|
var router = new express.Router();
|
||||||
var _ = require('lodash');
|
var nconf = require('nconf');
|
||||||
var async = require('async');
|
|
||||||
var icalendar = require('icalendar');
|
|
||||||
var api = require('./../controllers/api-v2/user');
|
|
||||||
var auth = require('./../controllers/api-v2/auth');
|
|
||||||
var logging = require('./../libs/logging');
|
|
||||||
var i18n = require('./../libs/i18n');
|
|
||||||
var forceRefresh = require('../middlewares/forceRefresh').middleware;
|
|
||||||
|
|
||||||
/* ---------- Deprecated API ------------*/
|
/* ---------- Deprecated API ------------*/
|
||||||
|
|
||||||
var initDeprecated = function(req, res, next) {
|
router.all('*', function deprecated(req, res, next) {
|
||||||
req.headers['x-api-user'] = req.params.uid;
|
res.json(404, {
|
||||||
req.headers['x-api-key'] = req.body.apiToken;
|
err: 'API v1 is no longer supported, please use API v2 instead ' + nconf.get('BASE_URL') + '/static/api'
|
||||||
return next();
|
|
||||||
};
|
|
||||||
|
|
||||||
router.post('/v1/users/:uid/tasks/:taskId/:direction', initDeprecated, auth.auth, i18n.getUserLanguage, api.score);
|
|
||||||
|
|
||||||
// FIXME add this back in
|
|
||||||
router.get('/v1/users/:uid/calendar.ics', i18n.getUserLanguage, function(req, res, next) {
|
|
||||||
return next() //disable for now
|
|
||||||
|
|
||||||
var apiToken, model, query, uid;
|
|
||||||
uid = req.params.uid;
|
|
||||||
apiToken = req.query.apiToken;
|
|
||||||
model = req.getModel();
|
|
||||||
query = model.query('users').withIdAndToken(uid, apiToken);
|
|
||||||
return query.fetch(function(err, result) {
|
|
||||||
var formattedIcal, ical, tasks, tasksWithDates;
|
|
||||||
if (err) {
|
|
||||||
return res.send(500, err);
|
|
||||||
}
|
|
||||||
tasks = result.get('tasks');
|
|
||||||
/* tasks = result[0].tasks*/
|
|
||||||
|
|
||||||
tasksWithDates = _.filter(tasks, function(task) {
|
|
||||||
return !!task.date;
|
|
||||||
});
|
|
||||||
if (_.isEmpty(tasksWithDates)) {
|
|
||||||
return res.send(500, "No events found");
|
|
||||||
}
|
|
||||||
ical = new icalendar.iCalendar();
|
|
||||||
ical.addProperty('NAME', 'HabitRPG');
|
|
||||||
_.each(tasksWithDates, function(task) {
|
|
||||||
var d, event;
|
|
||||||
event = new icalendar.VEvent(task.id);
|
|
||||||
event.setSummary(task.text);
|
|
||||||
d = new Date(task.date);
|
|
||||||
d.date_only = true;
|
|
||||||
event.setDate(d);
|
|
||||||
ical.addComponent(event);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
res.type('text/calendar');
|
|
||||||
formattedIcal = ical.toString().replace(/DTSTART\:/g, 'DTSTART;VALUE=DATE:');
|
|
||||||
return res.send(200, formattedIcal);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
Batch Update
|
|
||||||
This is super-deprecated, and will be removed once apiv2 is running against mobile for a while
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
var batchUpdate = function(req, res, next) {
|
|
||||||
var user = res.locals.user;
|
|
||||||
var oldSend = res.send;
|
|
||||||
var oldJson = res.json;
|
|
||||||
var performAction = function(action, cb) {
|
|
||||||
|
|
||||||
// req.body=action.data; delete action.data; _.defaults(req.params, action)
|
|
||||||
// Would require changing action.dir on mobile app
|
|
||||||
req.params.id = action.data && action.data.id;
|
|
||||||
req.params.direction = action.dir;
|
|
||||||
req.params.type = action.type;
|
|
||||||
req.body = action.data;
|
|
||||||
res.send = res.json = function(code, data) {
|
|
||||||
if (_.isNumber(code) && code >= 400) {
|
|
||||||
logging.error({
|
|
||||||
code: code,
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//FIXME send error messages down
|
|
||||||
return cb();
|
|
||||||
};
|
|
||||||
switch (action.op) {
|
|
||||||
case "score":
|
|
||||||
api.score(req, res);
|
|
||||||
break;
|
|
||||||
case "addTask":
|
|
||||||
api.addTask(req, res);
|
|
||||||
break;
|
|
||||||
case "delTask":
|
|
||||||
api.deleteTask(req, res);
|
|
||||||
break;
|
|
||||||
case "revive":
|
|
||||||
api.revive(req, res);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
cb();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Setup the array of functions we're going to call in parallel with async
|
|
||||||
var actions = _.transform(req.body || [], function(result, action) {
|
|
||||||
if (!_.isEmpty(action)) {
|
|
||||||
result.push(function(cb) {
|
|
||||||
performAction(action, cb);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// call all the operations, then return the user object to the requester
|
|
||||||
async.series(actions, function(err) {
|
|
||||||
res.json = oldJson;
|
|
||||||
res.send = oldSend;
|
|
||||||
if (err) return res.json(500, {err: err});
|
|
||||||
var response = user.toJSON();
|
|
||||||
response.wasModified = res.locals.wasModified;
|
|
||||||
if (response._tmp && response._tmp.drop){
|
|
||||||
res.json(200, {_tmp: {drop: response._tmp.drop}, _v: response._v});
|
|
||||||
}else if(response.wasModified){
|
|
||||||
res.json(200, response);
|
|
||||||
}else{
|
|
||||||
res.json(200, {_v: response._v});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
API v1 Routes
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
var cron = api.cron;
|
|
||||||
|
|
||||||
router.get('/status', i18n.getUserLanguage, function(req, res) {
|
|
||||||
return res.json({
|
|
||||||
status: 'up'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Scoring
|
|
||||||
router.post('/user/task/:id/:direction', auth.auth, i18n.getUserLanguage, cron, api.score);
|
|
||||||
router.post('/user/tasks/:id/:direction', auth.auth, i18n.getUserLanguage, cron, api.score);
|
|
||||||
|
|
||||||
// Tasks
|
|
||||||
router.get('/user/tasks', auth.auth, i18n.getUserLanguage, cron, api.getTasks);
|
|
||||||
router.get('/user/task/:id', auth.auth, i18n.getUserLanguage, cron, api.getTask);
|
|
||||||
router.delete('/user/task/:id', auth.auth, i18n.getUserLanguage, cron, api.deleteTask);
|
|
||||||
router.post('/user/task', auth.auth, i18n.getUserLanguage, cron, api.addTask);
|
|
||||||
|
|
||||||
// User
|
|
||||||
router.get('/user', auth.auth, i18n.getUserLanguage, cron, api.getUser);
|
|
||||||
router.post('/user/revive', auth.auth, i18n.getUserLanguage, cron, api.revive);
|
|
||||||
router.post('/user/batch-update', forceRefresh, auth.auth, i18n.getUserLanguage, cron, batchUpdate);
|
|
||||||
|
|
||||||
function deprecated(req, res) {
|
|
||||||
res.json(404, {err:'API v1 is no longer supported, please use API v2 instead (https://github.com/HabitRPG/habitrpg/blob/develop/API.md)'});
|
|
||||||
}
|
|
||||||
router.get('*', i18n.getUserLanguage, deprecated);
|
|
||||||
router.post('*', i18n.getUserLanguage, deprecated);
|
|
||||||
router.put('*', i18n.getUserLanguage, deprecated);
|
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
@@ -15,7 +15,4 @@ router.post('/api/v2/user/change-username', i18n.getUserLanguage, auth.auth, aut
|
|||||||
router.post('/api/v2/user/change-email', i18n.getUserLanguage, auth.auth, auth.changeEmail);
|
router.post('/api/v2/user/change-email', i18n.getUserLanguage, auth.auth, auth.changeEmail);
|
||||||
router.post('/api/v2/user/auth/firebase', i18n.getUserLanguage, auth.auth, auth.getFirebaseToken);
|
router.post('/api/v2/user/auth/firebase', i18n.getUserLanguage, auth.auth, auth.getFirebaseToken);
|
||||||
|
|
||||||
router.post('/api/v1/register', i18n.getUserLanguage, auth.registerUser);
|
|
||||||
router.post('/api/v1/user/auth/local', i18n.getUserLanguage, auth.loginLocal);
|
|
||||||
router.post('/api/v1/user/auth/social', i18n.getUserLanguage, auth.loginSocial);
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
Reference in New Issue
Block a user