bq/corbel-js

View on GitHub
src/composr/composr.js

Summary

Maintainability
A
2 hrs
Test Coverage
//@exclude
'use strict';
//@endexclude

(function() {

  /**
   * A module to make CompoSR requests.
   * @exports CompoSR
   * @namespace
   * @memberof app.corbel
   */

  corbel.CompoSR = corbel.Object.inherit({

    constructor: function(driver) {
      this.driver = driver;
    },

    /**
     * Create a PhraseBuilder for phrase managing requests.
     *
     * @param {String}  id  The id of the phrase.
     *
     * @return {corbel.CompoSR.PhraseBuilder}
     */
    phrase: function(id) {
      var phraseBuilder = new corbel.CompoSR.PhraseBuilder(id);
      phraseBuilder.driver = this.driver;
      return phraseBuilder;
    },

    /**
     * Create a RequestBuilder for phrase requests.
     *
     * @param  {String} id      phrase id
     * @param  {String} param1  path parameter
     * @param  {String} param2  path parameter
     * @param  {String} paramN  path parameter
     *
     * @return {corbel.CompoSR.RequestBuilder}
     */
    request: function() {
      var requestBuilder = new corbel.CompoSR.RequestBuilder(Array.prototype.slice.call(arguments));
      requestBuilder.driver = this.driver;
      return requestBuilder;
    }


  }, {

    moduleName: 'composr',
    defaultPort: 3000,

    create: function(driver) {
      return new corbel.CompoSR(driver);
    },

    _buildPort: function(config) {
      return config.get('composrPort', null) || corbel.CompoSR.defaultPort;
    },

    _buildUri: function() {
      var urlBase =  this.driver.config.getCurrentEndpoint(corbel.CompoSR.moduleName, corbel.CompoSR._buildPort(this.driver.config));

      if (urlBase.slice(-1) === '/') {
        urlBase = urlBase.substring(0, urlBase.length - 1);
      }

      var uri = '';
      Array.prototype.slice.call(arguments).forEach(function(argument) {
        if (argument) {
          uri += '/' + argument;
        }
      });
      return urlBase + uri;
    }

  });

  return corbel.CompoSR;

})();