code: function Roost(keys) {
    if (!keys) return;
    this.name = 'roost';
    this.keys = keys;
  
    this.send = function (data, callback) {
      var context = this;
  
      // Make the request to Roost endpoint
      request( getRoostSendOptions(this.keys.api_key, this.keys.api_secret, getRoostSendBody(data) ), function (err, result) {
        var roostStat;
  
        if (err) {
          roostStat = new RoostErrorStatus(err);
          debug("-_-_ FAILED with roost _-_-");
          debug(err);
          debug(roostStat);
          return callback(roostStat);
  
        } else if (typeof result.body === 'undefined') {
          // This is neccessary since Roost is sending 200, undefined result when invalid auth username is given
          roostStat = new RoostErrorStatus({success: false, error: 'Login using basic auth and the configuration\'s key and secret as username and password.'});
          debug("-_-_ FAILED with roost _-_-");
          debug(roostStat);
          return callback(roostStat);
  
        } else if (!result.body.success) {
          result.body.statusCode = result.statusCode;
          roostStat = new RoostErrorStatus(result.body);
          debug("-_-_ FAILED with roost _-_-");
          debug(roostStat);
          return callback(roostStat);
  
        } else {
          roostStat = new RoostSuccessStatus(result.body);
          result.service = context;
          result.status = roostStat;
          debug("-_-_ sent with roost _-_-");
          debug(result);
          return callback(null, result);
        }
      });
    };
  }
docs: /*=============================================================================
  
  Define Roost Service Provider
  
  =============================================================================