From b35122345551b14fd6f1f441c0108de7b2aa95e0 Mon Sep 17 00:00:00 2001 From: Gaurav Mohla Date: Sun, 20 Oct 2019 13:44:56 +0530 Subject: [PATCH 1/3] add codingninjas capability --- src/parsers/codingninjas.js | 25 +++++++++++++++++++++++++ src/runner.js | 14 +++++++++----- 2 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/parsers/codingninjas.js diff --git a/src/parsers/codingninjas.js b/src/parsers/codingninjas.js new file mode 100644 index 0000000..d407747 --- /dev/null +++ b/src/parsers/codingninjas.js @@ -0,0 +1,25 @@ +const axios = require('axios'); +const { parserErrorHandler } = require('./../utils'); + +const PLATFORM = 'CODINGNINJAS'; +const CODINGNINJAS_API_URL = 'https://codingninjas.in/api/v3/events'; +const CODINGNINJAS_URL = 'https://www.codingninjas.in/'; + +const codingninjas = () => axios.get(CODINGNINJAS_API_URL, { timeout: 15000 }) + .then((response) => { + const contests = response.data.data.latest_events; + return contests.map((contest) => { + const startTime = new Date(contest.event_start_time).getTime(); + const endTime = new Date(contest.event_end_time).getTime(); + return { + name: contest.name, + url: CODINGNINJAS_URL, + platform: PLATFORM, + startTime, + endTime, + }; + }); + }) + .catch(parserErrorHandler(PLATFORM)); + +module.exports = codingninjas; diff --git a/src/runner.js b/src/runner.js index 80da4f9..ae53ff7 100644 --- a/src/runner.js +++ b/src/runner.js @@ -12,6 +12,7 @@ const atcoder = require('./parsers/atcoder'); const csacademy = require('./parsers/csacademy'); const coj = require('./parsers/coj'); const kaggle = require('./parsers/kaggle'); +const codingninjas = require('./parsers/codingninjas'); const runner = () => axios.all([ codeforces(), @@ -24,21 +25,24 @@ const runner = () => axios.all([ csacademy(), coj(), kaggle(), + codingninjas(), ]) .then((contestsByPlatform) => { const contests = flat(contestsByPlatform.filter(it => Array.isArray(it))); - + const curTime = getCurrentTimeInSeconds(); const sortByStartTime = (a, b) => a.startTime - b.startTime; const sortByEndTime = (a, b) => a.endTime - b.endTime; - + + const isOngoing = contest => contest.startTime < curTime && contest.endTime > curTime; const isUpcoming = contest => contest.startTime > curTime && contest.endTime > curTime; - + const v = contest => contest.startTime ; + const ongoingContests = contests.filter(isOngoing).sort(sortByEndTime); - const upcomingContests = contests.filter(isUpcoming).sort(sortByStartTime); - + const upcomingContests = contests.filter(v).sort(sortByStartTime); + cache.put('results', { timestamp: curTime, ongoing: ongoingContests, From 3e0ade2821f2b2262eb1aea880b58108bd5a45c8 Mon Sep 17 00:00:00 2001 From: Gaurav Mohla Date: Sun, 20 Oct 2019 13:56:34 +0530 Subject: [PATCH 2/3] reverting the test changes --- src/runner.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/runner.js b/src/runner.js index ae53ff7..fd63a49 100644 --- a/src/runner.js +++ b/src/runner.js @@ -29,20 +29,18 @@ const runner = () => axios.all([ ]) .then((contestsByPlatform) => { const contests = flat(contestsByPlatform.filter(it => Array.isArray(it))); - + const curTime = getCurrentTimeInSeconds(); const sortByStartTime = (a, b) => a.startTime - b.startTime; const sortByEndTime = (a, b) => a.endTime - b.endTime; - - + const isOngoing = contest => contest.startTime < curTime && contest.endTime > curTime; const isUpcoming = contest => contest.startTime > curTime && contest.endTime > curTime; - const v = contest => contest.startTime ; - + const ongoingContests = contests.filter(isOngoing).sort(sortByEndTime); - const upcomingContests = contests.filter(v).sort(sortByStartTime); - + const upcomingContests = contests.filter(isUpcoming).sort(sortByStartTime); + cache.put('results', { timestamp: curTime, ongoing: ongoingContests, @@ -50,4 +48,4 @@ const runner = () => axios.all([ }); }); -module.exports = runner; +module.exports = runner; \ No newline at end of file From 347a76e48e4359746ea78f5225b19bc988d73f92 Mon Sep 17 00:00:00 2001 From: Gaurav Mohla Date: Sun, 20 Oct 2019 15:11:29 +0530 Subject: [PATCH 3/3] change platform name to lowercase. UI had problem parsing it --- src/parsers/codingninjas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parsers/codingninjas.js b/src/parsers/codingninjas.js index d407747..258c11b 100644 --- a/src/parsers/codingninjas.js +++ b/src/parsers/codingninjas.js @@ -1,7 +1,7 @@ const axios = require('axios'); const { parserErrorHandler } = require('./../utils'); -const PLATFORM = 'CODINGNINJAS'; +const PLATFORM = 'codingninjas'; const CODINGNINJAS_API_URL = 'https://codingninjas.in/api/v3/events'; const CODINGNINJAS_URL = 'https://www.codingninjas.in/';