File tree Expand file tree Collapse file tree 5 files changed +66
-0
lines changed
Expand file tree Collapse file tree 5 files changed +66
-0
lines changed Original file line number Diff line number Diff line change @@ -7,3 +7,7 @@ APP_ORIGIN=http://localhost:3000
77
88# time in seconds
99SHARE_EXPIRES_IN = 2592000
10+
11+ BADGES_ENDPOINT = https://api.v2.mybadges.org
12+ BADGES_USERNAME = badges_username
13+ BADGES_PASSWORD = badges_password
Original file line number Diff line number Diff line change @@ -40,13 +40,15 @@ var galleryRouter = require('./routes/gallery/index');
4040var projectRouter = require ( './routes/project/index' ) ;
4141var userRouter = require ( './routes/user/index' ) ;
4242var uploadRouter = require ( './routes/upload/index' ) ;
43+ var badgeRouter = require ( './routes/badge/index' ) ;
4344
4445api . use ( '/tutorial' , tutorialRouter ) ;
4546api . use ( '/share' , shareRouter ) ;
4647api . use ( '/gallery' , galleryRouter ) ;
4748api . use ( '/project' , projectRouter ) ;
4849api . use ( '/user' , userRouter ) ;
4950api . use ( '/upload' , uploadRouter ) ;
51+ api . use ( '/badge' , badgeRouter ) ;
5052
5153// catch 404 and forward to error handler
5254api . use ( function ( req , res , next ) {
Original file line number Diff line number Diff line change 88 "docs" : " apidoc -i . -e \" docs\" \" (node_modules)\" -o docs"
99 },
1010 "dependencies" : {
11+ "@geobadges/badgr-api-client" : " ^0.12.0" ,
1112 "chalk" : " ^4.1.0" ,
1213 "cookie-parser" : " ~1.4.4" ,
1314 "cors" : " ^2.8.5" ,
2526 "request" : " ^2.88.2" ,
2627 "uuid" : " ^8.3.2" ,
2728 "uuidv4" : " ^6.2.12"
29+ },
30+ "devDependencies" : {
31+ "nodemon" : " ^2.0.15"
2832 }
2933}
Original file line number Diff line number Diff line change 1+ // jshint esversion: 8
2+ // jshint node: true
3+ "use strict" ;
4+
5+ const API = require ( "@geobadges/badgr-api-client" ) ;
6+
7+ const badgesClient = new API ( {
8+ endpoint : process . env . BADGES_ENDPOINT ,
9+ username : process . env . BADGES_USERNAME ,
10+ password : process . env . BADGES_PASSWORD ,
11+ } ) ;
12+
13+ const grantBadge = async function ( req , res ) {
14+ try {
15+ const email = req . user ?. email || req . body . email ;
16+ const { badgeClassEntityId, createNotification, issuerEntityId } = req . body ;
17+
18+ if ( ! email ) {
19+ return res . status ( 400 ) . send ( {
20+ message : "email missing" ,
21+ } ) ;
22+ }
23+
24+ const status = await badgesClient . grant ( {
25+ badgeClassEntityId,
26+ createNotification,
27+ email,
28+ issuerEntityId,
29+ } ) ;
30+
31+ if ( ! status ) {
32+ throw new Error ( "Could not grant badge" ) ;
33+ }
34+
35+ res . status ( 200 ) . send ( {
36+ message : "Badge granted successfully." ,
37+ } ) ;
38+ } catch ( err ) {
39+ console . log ( err ) ;
40+ return res . status ( 500 ) . send ( err ) ;
41+ }
42+ } ;
43+
44+ module . exports = {
45+ grantBadge,
46+ } ;
Original file line number Diff line number Diff line change 1+ // jshint esversion: 8
2+ // jshint node: true
3+ "use strict" ;
4+
5+ var express = require ( "express" ) ;
6+ var BadgeRouter = express . Router ( ) ;
7+
8+ BadgeRouter . route ( "/grant" ) . post ( require ( "./grantBadge" ) . grantBadge ) ;
9+
10+ module . exports = BadgeRouter ;
You can’t perform that action at this time.
0 commit comments