/*
* Copyright (c) 2016-2017, Michael A. Updike All rights reserved.
* Licensed under Apache 2.0
* https://opensource.org/licenses/Apache-2.0
* https://github.com/opus1269/chrome-extension-utils/blob/master/LICENSE.md
*/
window.Chrome = window.Chrome || {};
/**
* Google authorization utilities
* @see https://developer.chrome.com/apps/identity
* @namespace
*/
Chrome.Auth = (function() {
'use strict';
new ExceptionHandler();
const chromep = new ChromePromise();
return {
/**
* Get our OAuth2.0 token
* @param {boolean} interactive - if true may block
* @returns {Promise<string>} An access token
* @memberOf Chrome.Auth
*/
getToken: function(interactive = false) {
return chromep.identity.getAuthToken({
'interactive': interactive,
}).then((token) => {
return Promise.resolve(token);
});
},
/**
* Remove our cached auth token
* @param {string|null} [curToken=null] token to remove
* @returns {Promise.<string>} the old token
* @memberOf Chrome.Auth
*/
removeCachedToken: function(curToken = null) {
let oldToken = null;
if (curToken === null) {
return this.getToken(false).then((token) => {
oldToken = token;
return chromep.identity.removeCachedAuthToken({'token': token});
}).then(() => {
return Promise.resolve(oldToken);
});
} else {
oldToken = curToken;
return chromep.identity.removeCachedAuthToken({
'token': curToken,
}).then(() => {
return Promise.resolve(oldToken);
});
}
},
};
})();