Source: src/oauth/oauth.service.js

/**
 * @class
 * Create osmAuthService service instance
 */
class OAuthAdapter{
    /**
     * @param {Object} $q angular $q service
     * @param {Object} osmx2js angular osm service
     * @param {Object} options set options for the lib https://github.com/osmlab/osm-auth
     */
    constructor($q, osmx2js, options) {
        if (options) {
            if (options.oauth_secret && options.oauth_consumer_key) {
                this.auth = osmAuth(options);
            }
        }
        this.osmx2js = osmx2js;
        this.$q = $q;
        this._options = options;
    }
    /**
     * Just logout. Warning this is synchronous code
     * and doesn t return anything.
     */
    logout() {
        this.auth.logout();
    }
    /**
     * @return {boolean}
     */
    authenticated() {
        return this.auth.authenticated();
    }
    /**
     * @return {Promise} true/false value
     */
    authenticate() {
        var deferred = this.$q.defer();
        this.auth.authenticate(function () {
            deferred.resolve(true);
        });
        return deferred.promise;
    }
    /**
     * @param {Object} options
     * @return {Promise} http response
     */
    xhr(options) {
        var self = this;
        var deferred = this.$q.defer();
        options.path = '/api' + options.path;
        if (options.data) {
            options.body = options.data;
            options.data = undefined;
        }
        this.auth.xhr(options, function (err, data) {
            if (err) {
                deferred.reject(err);
            } else {
                if (data instanceof XMLDocument) {
                    deferred.resolve(self.osmx2js.dom2js(data));
                } else {
                    deferred.resolve(data);
                }
            }
        });
        return deferred.promise;
    }
    /**
     * Set the options of the oauth lib
     * @param {Object} options set options for the lib https://github.com/osmlab/osm-auth
     */
    options(options) {
        if (this.auth) {
            this.auth.options(options);
        } else {
            this.auth = osmAuth(options);
        }
    }
}

OAuthAdapter.$inject = ['$q', 'osmx2js'];

export default OAuthAdapter;