Skip to content

Commit

Permalink
mozillascience#26 3 endpoints works with IT
Browse files Browse the repository at this point in the history
  • Loading branch information
aid29 committed Jun 18, 2015
1 parent 100360b commit 7213aa6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 112 deletions.
78 changes: 3 additions & 75 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Expand Down Expand Up @@ -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
Expand Down
52 changes: 16 additions & 36 deletions src/badgeService.js
Original file line number Diff line number Diff line change
@@ -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);
}
Expand All @@ -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({
Expand Down
16 changes: 15 additions & 1 deletion test/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});

});

0 comments on commit 7213aa6

Please sign in to comment.