bq/corbel-js

View on GitHub
src/iam/usernameBuilder.js

Summary

Maintainability
B
4 hrs
Test Coverage
//@exclude
'use strict';
//@endexclude

(function() {

    /**
     * Starts a username request
     * @return {corbel.Iam.UsernameBuilder}    The builder to create the request
     */
    corbel.Iam.prototype.username = function() {
        var username = new UsernameBuilder();
        username.driver = this.driver;
        return username;
    };

    /**
     * Builder for creating requests of users name
     * @class
     * @memberOf iam
     */
    var UsernameBuilder = corbel.Iam.UsernameBuilder = corbel.Services.inherit({

        constructor: function() {
            this.uri = 'username';
        },

        /**
         * Return availability endpoint.
         * @method
         * @memberOf corbel.Iam.UsernameBuilder
         * @param  {String} username The username.
         * @return {Promise}     A promise which resolves into usename availability boolean state.
         */
        availability: function(username) {
            console.log('iamInterface.username.availability', username);
            corbel.validate.value('username', username);
            return this.request({
                url: this._buildUriWithDomain(this.uri, username),
                method: corbel.request.method.HEAD
            }).then(function() {
                return false;
            }).catch(function(response) {
                if (response.status === 404) {
                    return true;
                } else {
                    return Promise.reject(response);
                }
            });
        },

        /**
        * Gets a UserId.
        *
        * @method
        * @memberOf corbel.Iam.UsernameBuilder
        *
        * @param {String} username The username.
        *
        * @return {Promise} A promise with the user or fails with a {@link corbelError}.
        */
        getUserId: function(username) {
            console.log('iamInterface.username.getUserId', username);
            corbel.validate.value('username', username);
            return this.request({
                url: this._buildUriWithDomain(this.uri, username),
                method: corbel.request.method.GET
            });
        },
        
        _buildUriWithDomain: corbel.Iam._buildUriWithDomain

    });
})();