es6 changes for npr one module

This commit is contained in:
Todd Treece 2016-05-27 13:15:09 -04:00
parent e6114d3907
commit 2a3d76914e

View file

@ -1,90 +1,82 @@
/************************ DEPENDENCIES *****************************/
var util = require('util'),
bunyan = require('bunyan'),
helpers = require('./helpers'),
swagger = require('swagger-client');
'use strict';
var proto = One.prototype;
exports = module.exports = One;
const bunyan = require('bunyan'),
helpers = require('./helpers'),
Swagger = require('swagger-client');
/************************* CONSTRUCTOR ****************************/
function One(config) {
class One {
if (! (this instanceof One))
return new One(config);
constructor(config) {
util._extend(this, config || {});
this.token = false;
this.swagger_url = 'https://api.npr.org/documentation/beryllium/api-docs';
this.log = false;
if(! this.log)
this.log = bunyan.createLogger({name: 'npr-one'});
Object.assign(this, config || {});
// silence swagger log output
process.env.NODE_ENV = 'test';
if(! this.log)
this.log = bunyan.createLogger({name: 'npr-one'});
// silence swagger log output
process.env.NODE_ENV = 'test';
}
init(token) {
if(token)
this.setAccessToken(token);
return new Promise((resolve, reject) => {
const client = new Swagger({
url: this.swagger_url,
success: () => {
this.client = client;
helpers.processSwagger(this);
resolve(this);
},
failure: () => {
reject('swagger init failed');
}
});
});
}
setAccessToken(token) {
this.token = token;
return new Promise((resolve, reject) => {
if(! this.token)
return reject('no token supplied');
const auth = new Swagger.ApiKeyAuthorization('Authorization', `Bearer ${token}`, 'header');
this.client.clientAuthorizations.add('oauth2', auth);
resolve();
});
}
getAccessToken() {
return new Promise((resolve, reject) => {
if(! this.token)
return reject('no token supplied');
resolve(this.token);
});
}
}
/*************************** DEFAULTS *****************************/
proto.token = false;
proto.swagger_url = 'https://api.npr.org/documentation/beryllium/api-docs';
proto.log = false;
proto.init = function(token) {
var self = this;
if(token)
this.setAccessToken(token);
return new Promise(function(resolve, reject) {
var client = new swagger({
url: self.swagger_url,
success: function() {
self.client = client;
helpers.processSwagger(self);
resolve(self);
},
failure: function() {
reject('swagger init failed');
}
});
});
};
proto.setAccessToken = function(token) {
var self = this;
this.token = token;
return new Promise(function(resolve, reject) {
if(! self.token)
return reject('no token supplied');
var auth = new swagger.ApiKeyAuthorization('Authorization', 'Bearer ' + token, 'header');
self.client.clientAuthorizations.add('oauth2', auth);
resolve();
});
};
proto.getAccessToken = function() {
var self = this;
return new Promise(function(resolve, reject) {
if(! self.token)
return reject('no token supplied');
resolve(self.token);
});
};
exports = module.exports = One;