UNPKG

obf-connector

Version:

An API connector for Open Badge Factory

100 lines (79 loc) 2.79 kB
const API = require('./API'); const Response = require('../Response'); class OBFConnector { constructor(clientID, certFile, keyFile) { this.clientID = clientID; this.api = new API('https://openbadgefactory.com/v1/', certFile, keyFile); } getEarnableBadges(callback) { this.api.getMany(`earnablebadge/${this.clientID}`, (err, earnableBadges) => { callback(err, new Response('complete', earnableBadges)); }); } getEarnableBadge(id, callback) { this.api.getOne(`earnablebadge/${this.clientID}/${id}`, (err, earnableBadges) => { callback(err, new Response('complete', earnableBadges)); }); } getBadge(id, callback) { this.api.getOne(`badge/${this.clientID}/${id}`, (err, badge) => { callback(err, badge); }); } getEvents(callback) { this.api.getMany(`event/${this.clientID}`, (err, events) => { callback(err, new Response('complete', events)); }); } addCreator(creator, callback) { callback( null, new Response('incomplete', null, null, `https://openbadgefactory.com/c/user/invite?client_id=${this.clientID}`) ); } applyForBadge(user, earnablebadge_id, callback) { this.getEarnableBadge(earnablebadge_id, (err, earnablebadge) => { earnablebadge = earnablebadge.data; callback(err, new Response('incomplete', null, 'Assuming badge is a earnablebadge', earnablebadge.apply_url)); }); } createBadge(user, badge, callback) { this.api.post(`badge/${this.clientID}`, badge, err => { callback(err, new Response('complete')); }); } getBadgesList(user, filter, callback) { this.getEarnableBadges(callback); } getCreatorsList(callback) { callback( null, new Response('incomplete', null, null, `https://openbadgefactory.com/c/user/`) ); } modifyBadge(user, badge, callback) { this.getBadge(badge.id, (err, badgeFromOBF) => { if (err) throw err; badge = Object.assign(badgeFromOBF, badge); this.api.put(`badge/${this.clientID}/${badge.id}`, badge, err => { callback(err, new Response('complete')); }); }); } modifyCreator(creator, callback) { callback( null, new Response('incomplete', null, null, `https://openbadgefactory.com/c/user/${creator.id}/edit`) ); } pushBadge(user, badge, target) { throw new ReferenceError('Connector#pushBadge is unimplemented'); } reviewApplications(user, earnablebadge_id, callback) { this.api.getMany(`earnablebadge/${this.clientID}/${earnablebadge_id}/application`, (err, applications) => { applications = applications.filter(application => application.status == 'pending'); callback(err, new Response('complete', applications)); }) } } module.exports = OBFConnector;