obf-connector
Version:
An API connector for Open Badge Factory
72 lines (59 loc) • 1.68 kB
JavaScript
const request = require('request');
const fs = require('fs');
class API {
constructor(url, certFile, keyFile) {
this.apiURL = url
this.apiCertificate = fs.readFileSync(certFile);
this.apiKey = fs.readFileSync(keyFile);
}
call(endpoint, method, data, callback) {
const requestOptions = {
method: method,
url: this.apiURL + endpoint,
key: this.apiKey,
cert: this.apiCertificate
}
if (data) {
requestOptions.headers = {'content-type' : 'application/json'};
requestOptions.body = JSON.stringify(data);
}
function requestCallback(error, response, body) {
if (!error && response.statusCode == 200) {
callback(null, body.trim());
} else {
callback(error, body.trim())
}
}
request(requestOptions, requestCallback);
}
getMany(endpoint, callback) {
this.call(endpoint, 'GET', null, (err, response) => {
if (err) throw err;
response = response.split(/\r\n/);
response = response.join(',');
response = "[" + response + "]";
response = JSON.parse(response);
callback(null, response);
});
}
getOne(endpoint, callback) {
this.call(endpoint, 'GET', null, (err, response) => {
if (err) throw err;
response = JSON.parse(response);
callback(null, response);
});
}
post(endpoint, data, callback) {
this.call(endpoint, 'POST', data, (err, response) => {
if (err) throw err;
callback(null);
});
}
put(endpoint, data, callback) {
this.call(endpoint, 'PUT', data, (err, response) => {
if (err) throw err;
callback(null);
});
}
}
module.exports = API;