147 lines
5.9 KiB
HTML
147 lines
5.9 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<title>deprecated.js</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
|
<link rel="stylesheet" media="all" href="docco.css" />
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="background"></div>
|
|
|
|
<ul id="jump_to">
|
|
<li>
|
|
<a class="large" href="javascript:void(0);">Jump To …</a>
|
|
<a class="small" href="javascript:void(0);">+</a>
|
|
<div id="jump_wrapper">
|
|
<div id="jump_page">
|
|
|
|
|
|
<a class="source" href="auth.html">
|
|
auth.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="deprecated.html">
|
|
deprecated.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="groups.html">
|
|
groups.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="user.html">
|
|
user.js
|
|
</a>
|
|
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
|
|
<ul class="sections">
|
|
|
|
<li id="title">
|
|
<div class="annotation">
|
|
<h1>deprecated.js</h1>
|
|
</div>
|
|
</li>
|
|
|
|
|
|
|
|
<li id="section-1">
|
|
<div class="annotation">
|
|
|
|
<div class="pilwrap ">
|
|
<a class="pilcrow" href="#section-1">¶</a>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="content"><div class='highlight'><pre><span class="keyword">var</span> express = require(<span class="string">'express'</span>);
|
|
<span class="keyword">var</span> router = <span class="keyword">new</span> express.Router();
|
|
<span class="keyword">var</span> _ = require(<span class="string">'lodash'</span>);
|
|
<span class="keyword">var</span> icalendar = require(<span class="string">'icalendar'</span>);
|
|
<span class="keyword">var</span> api = require(<span class="string">'./user'</span>);
|
|
<span class="keyword">var</span> auth = require(<span class="string">'./auth'</span>);
|
|
|
|
<span class="comment">/* ---------- Deprecated Paths ------------*/</span>
|
|
|
|
|
|
<span class="keyword">var</span> deprecatedMessage = <span class="string">'This API is no longer supported, see https://github.com/lefnire/habitrpg/wiki/API for new protocol'</span>;
|
|
|
|
router.get(<span class="string">'/:uid/up/:score?'</span>, <span class="keyword">function</span>(req, res) {
|
|
<span class="keyword">return</span> res.send(<span class="number">500</span>, deprecatedMessage);
|
|
});
|
|
|
|
router.get(<span class="string">'/:uid/down/:score?'</span>, <span class="keyword">function</span>(req, res) {
|
|
<span class="keyword">return</span> res.send(<span class="number">500</span>, deprecatedMessage);
|
|
});
|
|
|
|
router.post(<span class="string">'/users/:uid/tasks/:taskId/:direction'</span>, <span class="keyword">function</span>(req, res) {
|
|
<span class="keyword">return</span> res.send(<span class="number">500</span>, deprecatedMessage);
|
|
});
|
|
|
|
<span class="comment">/* Redirect to new API*/</span>
|
|
|
|
|
|
<span class="keyword">var</span> initDeprecated = <span class="keyword">function</span>(req, res, next) {
|
|
req.headers[<span class="string">'x-api-user'</span>] = req.params.uid;
|
|
req.headers[<span class="string">'x-api-key'</span>] = req.body.apiToken;
|
|
<span class="keyword">return</span> next();
|
|
};
|
|
|
|
router.post(<span class="string">'/v1/users/:uid/tasks/:taskId/:direction'</span>, initDeprecated, auth.auth, api.scoreTask);
|
|
|
|
router.get(<span class="string">'/v1/users/:uid/calendar.ics'</span>, <span class="keyword">function</span>(req, res, next) {
|
|
<span class="keyword">return</span> next() <span class="comment">//disable for now</span>
|
|
|
|
<span class="keyword">var</span> apiToken, model, query, uid;
|
|
uid = req.params.uid;
|
|
apiToken = req.query.apiToken;
|
|
model = req.getModel();
|
|
query = model.query(<span class="string">'users'</span>).withIdAndToken(uid, apiToken);
|
|
<span class="keyword">return</span> query.fetch(<span class="keyword">function</span>(err, result) {
|
|
<span class="keyword">var</span> formattedIcal, ical, tasks, tasksWithDates;
|
|
<span class="keyword">if</span> (err) {
|
|
<span class="keyword">return</span> res.send(<span class="number">500</span>, err);
|
|
}
|
|
tasks = result.get(<span class="string">'tasks'</span>);
|
|
<span class="comment">/* tasks = result[0].tasks*/</span>
|
|
|
|
tasksWithDates = _.filter(tasks, <span class="keyword">function</span>(task) {
|
|
<span class="keyword">return</span> !!task.date;
|
|
});
|
|
<span class="keyword">if</span> (_.isEmpty(tasksWithDates)) {
|
|
<span class="keyword">return</span> res.send(<span class="number">500</span>, <span class="string">"No events found"</span>);
|
|
}
|
|
ical = <span class="keyword">new</span> icalendar.iCalendar();
|
|
ical.addProperty(<span class="string">'NAME'</span>, <span class="string">'HabitRPG'</span>);
|
|
_.each(tasksWithDates, <span class="keyword">function</span>(task) {
|
|
<span class="keyword">var</span> d, event;
|
|
event = <span class="keyword">new</span> icalendar.VEvent(task.id);
|
|
event.setSummary(task.text);
|
|
d = <span class="keyword">new</span> Date(task.date);
|
|
d.date_only = <span class="literal">true</span>;
|
|
event.setDate(d);
|
|
ical.addComponent(event);
|
|
<span class="keyword">return</span> <span class="literal">true</span>;
|
|
});
|
|
res.type(<span class="string">'text/calendar'</span>);
|
|
formattedIcal = ical.toString().replace(<span class="regexp">/DTSTART\:/g</span>, <span class="string">'DTSTART;VALUE=DATE:'</span>);
|
|
<span class="keyword">return</span> res.send(<span class="number">200</span>, formattedIcal);
|
|
});
|
|
});
|
|
|
|
module.exports = router;</pre></div></div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|