次の講義の教室を忘れがちなので、次の講義の情報をJSONで返すAPIを作った

雑に時間割のJSONを作っておいてExpress使って以下のようなルートを立てていい感じにNginxでルーティングしてます。一応スクリプトそのものはpm2でホニャ~ってしてます。 時間割のJSON作るのはこれのlocalStorageにJSONがあるので適切に情報付加してそのまま拾ってきてVPSにぶん投げました。

http://mysticdoll.com/schedule にアクセスするといい感じにJSONが帰ってきます。これで教室を忘れてもすぐ行ける。

const jsonParser = require("body-parser").json();
const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const schedule = require("./schedule.json");
const getNext = (index) => {
  let day = index != 6 ? days[index+1] : days[0];
  let ret = schedule.filter(s => s.day === day).sort((a,b) => a.start > b.start ? 1 : -1)[0];
  console.log(ret);
  if(ret) return ret;
  return getNext(index != 6 ? index + 1 : 0);

}
const getSchedule = (dayIndex, time) => {
  let filtered = schedule.filter(s=>s.start > time || s.end > time);
  let tmp = filtered.find(s=>s.day === days[dayIndex]);
  if(tmp) return tmp;
  return getNext(dayIndex);

};

module.exports = function(app, express) {
  app.get("/api/next", jsonParser, function(req, res) {
    let date = new Date();
    let d,l;
    var [dayIndex, time] = [date.getDay(), `${(d = date.getHours()), (d <= 9 ? `0${d}`: d)}${(l = date.getMinutes()), (l <= 9 ? `0${l}` : l)}`];
    res.send(getSchedule(dayIndex, time));
  });
};

そろそろまともな日本語でブログを書く練習をした方がいいのかもしれない