diff --git a/src/app.js b/src/app.js index e2ed887..831c247 100755 --- a/src/app.js +++ b/src/app.js @@ -23,8 +23,7 @@ module.exports = function (badgerService) { httpResponse.render(path.join(__dirname, '..', '/public/code.jade'), { data: JSON.stringify(badges, null, 2) }); - } else { - // console.log("badgesreturn:" + JSON.stringify(badges, null, 2)); + } else { httpResponse.json(badges); } } @@ -102,87 +101,16 @@ module.exports = function (badgerService) { returnBadges(badgerService.getBadges(null, request.params.badge), request, response); }); - // Get all badge instances of a certain badge - // app.get('/badges/:badge', function (request, response) { - // var pretty = request.query.pretty; - // client.getBadgeInstances({ - // system: system, - // badge: request.params.badge - // }, function (err, badges) { - // if (err) { - // console.error(err); - // response.send(err); - // return; - // } - // badges.forEach(function (entry) { - // var orcid = helpers.ORCIDFromEmail(entry.email); - // helpers.modEntry(entry, orcid); - // }); - // if (pretty) { - // response.render(path.join(__dirname, '..', '/public/code.jade'), { - // data: JSON.stringify(badges, null, 2) - // }); - // } else { - // console.log(">>>" + JSON.stringify(badges, null, 2)); - // console.log(">>>" + badges[0].badge.name); - // response.json(badges); - // } - // }); - // }); - - // function validAndProcessRequest(validation, sucessCallback, failedCallback) { - // if (validation()) { - // sucessCallback(); - // } else { - // failedCallback(); - // } - // } - - // var checkOrcid = function (request) { - // return !request.params.orcid; - // } - - // var failedOrcidParameterProcess = function (response) { - // response.status(400).end(); - // } - /* Get badges for a user */ // Get all badge instances earned by a user - // app.get('/users/:orcid/badges', function (request, response) { - // validAndProcessRequest(checkOrcid, function(request, response) { - // returnBadges(badgerService.getBadgeInstances(request.params.orcid, null), response); - // }, failedOrcidParameterProcess(response)); - // } - app.get('/users/:orcid/badges', function (request, response) { - var pretty = request.query.pretty; var orcid = request.params.orcid; if (!orcid) { response.status(400).end(); return; - } - client.getBadgeInstances({ - system: system - }, { - email: helpers.emailFromORCID(orcid) - }, function (err, badges) { - if (err) { - console.error(err); - response.send(err); - return; - } - badges.forEach(function (entry) { - helpers.modEntry(entry, orcid); - }); - if (pretty) { - response.render(path.join(__dirname, '..', '/public/code.jade'), { - data: JSON.stringify(badges, null, 2) - }); - } else { - response.send(badges); - } - }); + } + returnBadges(badgerService.getBadges(orcid), request, response); }); // Get all badge instances of a certain badge earned by a user diff --git a/src/badgeService.js b/src/badgeService.js index b8194a6..d8e86f5 100644 --- a/src/badgeService.js +++ b/src/badgeService.js @@ -1,52 +1,32 @@ module.exports = function (apiClient, config) { var system = config.BADGES_SYSTEM; + var helpers = require('./helpers'); - function emailFromORCID(orcid) { - return orcid + '@orcid.org'; - } - - function modEntry(entry, orcid) { - entry.orcid = orcid; - delete entry.email; - return true; - } - - function clientCallback(err, badges) { - if (err) { - console.error(err); - return callback(err); - } - // filter for the badge - if (badges) { - filtered = badges.filter(function (entry) { - return (entry.badge.slug === badge) ? modEntry(entry, orcid) : false; - }); - } - - if (filtered && filtered.length === 0) { - callback('not found'); - } else { - callback(null, filtered); - } - } - - function _getBadges(orcid, badge) { - return function (callback) { - + function _getBadges(orcid, badge, dois) { + return function (callback) { + // var evidenceUrl = dois ? helpers.urlFromDOI(dois._1 + '/' + dois._2) : null; var clientCallback = function (err, badges) { if (err) { console.error(err); return callback(err); } + // filter for the badge - if (badges) { + if (badges) { filtered = badges.filter(function (entry) { - return (entry.badge.slug === badge) ? modEntry(entry, orcid) : false; + var goodBadge = (!badge || entry.badge.slug === badge); + // var goodDoi = (dois === null || entry.evidenceUrl === evidenceUrl); + return goodBadge; + }); + + filtered.forEach(function (entry) { + var orcid = helpers.ORCIDFromEmail(entry.email); + helpers.modEntry(entry, orcid); }); } if (filtered && filtered.length === 0) { - callback('not found'); + callback('client return empty result'); } else { callback(null, filtered); } @@ -56,7 +36,7 @@ module.exports = function (apiClient, config) { var filtered; apiClient.getBadgeInstances({ system: system - }, emailFromORCID(orcid), clientCallback); + }, helpers.emailFromORCID(orcid), clientCallback); } else { var filtered; apiClient.getBadgeInstances({ diff --git a/test/app.js b/test/app.js index 06d3d00..58f0927 100644 --- a/test/app.js +++ b/test/app.js @@ -35,8 +35,22 @@ describe("Intergration test against the real Badge server", function () { .expect('Content-Type', /json/) .expect(function (res) { assert.equal(res.body[0].badge.name, "Formal analysis"); - }) + assert.equal(res.body[0].orcid, "0000-0003-4959-3049"); + //assert.equal(res.body[0].email, null); ?? bug?? + }) .expect(200, done); }); + it('get all badge instances earned by a user', function (done) { + request(app) + .get('/users/0000-0003-4959-3049/badges') + // .expect('Content-Type', /json/) + .expect(function (res) { + // console.log("badgesreturn:" + JSON.stringify(res.body, null, 2)); + assert.ok(res.body[0].slug, "find one badge slug"); + assert.equal(res.body[0].orcid, "0000-0003-4959-3049"); + }) + .expect(200, done); + }); + });