File: source/peer-privileged.js
- /**
- * These are the list of Peer list retrieval states that Skylink would trigger.
- * - This relates to and requires the Privileged Key feature where Peers using
- * that Privileged alias Key becomes a privileged Peer with privileged functionalities.
- * @attribute GET_PEERS_STATE
- * @type JSON
- * @param {String} ENQUIRED <small>Value <code>"enquired"</code></small>
- * The state when the privileged Peer already enquired signaling for list of peers.
- * @param {String} RECEIVED <small>Value <code>"received"</code></small>
- * The state when the privileged Peer received list of peers from signaling.
- * @readOnly
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype.GET_PEERS_STATE = {
- ENQUIRED: 'enquired',
- RECEIVED: 'received'
- };
-
- /**
- * These are the list of Peer introduction states that Skylink would trigger.
- * - This relates to and requires the Privileged Key feature where Peers using
- * that Privileged alias Key becomes a privileged Peer with privileged functionalities.
- * @attribute INTRODUCE_STATE
- * @type JSON
- * @param {String} INTRODUCING <small>Value <code>"enquired"</code></small>
- * The state when the privileged Peer have sent the introduction signal.
- * @param {String} ERROR <small>Value <code>"error"</code></small>
- * The state when the Peer introduction has occurred an exception.
- * @readOnly
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype.INTRODUCE_STATE = {
- INTRODUCING: 'introducing',
- ERROR: 'error'
- };
-
- /**
- * Whether this user automatically introduce to other peers.
- * @attribute _autoIntroduce
- * @type Boolean
- * @default true
- * @private
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype._autoIntroduce = true;
-
- /**
- * Whether this user is a privileged user.
- * @attribute isPrivileged
- * @type Boolean
- * @default false
- * @private
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype._isPrivileged = false;
-
- /**
- * Parent key in case the current key is alias.
- * If the current key is not alias, this is the same as _appKey
- * @attribute _parentKey
- * @type String
- * @default null
- * @private
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype._parentKey = null;
-
- /**
- * List of peers retrieved from signaling
- * @attribute _peerList
- * @type Object
- * @default null
- * @private
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype._peerList = null;
-
- /**
- * Retrieves the list of rooms and peers under the same realm based
- * on the Application Key configured in {{#crossLink "Skylink/init:method"}}init(){{/crossLink}}
- * from the platform signaling.
- * This will only work if self is a privileged Peer.
- * @method getPeers
- * @param {Boolean} [showAll=false] The flag that indicates if returned list should
- * also include privileged and standard in the list. By default, the value is <code>false</code>.
- * Which means only unprivileged peers' ID (isPrivileged = autoIntroduce = false) is included.
- * @param {Function} [callback] The callback fired after the receiving the current
- * list of Peers from platform signaling or have met with an exception.
- * The callback signature is <code>function (error, success)</code>.
- * @param {Object} callback.error The error object received in the callback.
- * This is the exception thrown that caused the failure for getting self user media.
- * If received as <code>null</code>, it means that there is no errors.
- * @param {JSON} callback.success The success object received in the callback.
- * If received as <code>null</code>, it means that there are errors.
- * @example
- *
- * // To get list of unprivileged peers only
- * SkylinkDemo.getPeers();
- *
- * // To get list of all peers, including other privileged peers
- * SkylinkDemo.getPeers(true);
- *
- * // To get a list of unprivileged peers then invoke the callback
- * SkylinkDemo.getPeers(function(error, success){
- * if (error){
- * console.log("Error happened. Can not retrieve list of peers");
- * }
- * else{
- * console.log("Success fully retrieved list of peers", success);
- * }
- * });
- *
- * // To get a list of all peers then invoke the callback
- * SkylinkDemo.getPeers(true, function(error, success){
- * if (error){
- * console.log("Error happened. Can not retrieve list of peers");
- * }
- * else{
- * console.log("Success fully retrieved list of peers", success);
- * }
- * });
- *
- * @trigger getPeersStateChange
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype.getPeers = function(showAll, callback){
- var self = this;
- if (!self._isPrivileged){
- log.warn('Please upgrade your key to privileged to use this function');
- return;
- }
- if (!self._appKey){
- log.warn('App key is not defined. Please authenticate again.');
- return;
- }
- if (!self._parentKey){
- log.warn('Parent key is not defined. Please authenticate again.');
- return;
- }
-
- // Only callback is provided
- if (typeof showAll === 'function'){
- callback = showAll;
- showAll = false;
- }
-
- self._sendChannelMessage({
- type: self._SIG_MESSAGE_TYPE.GET_PEERS,
- privilegedKey: self._appKey,
- parentKey: self._parentKey,
- showAll: showAll || false
- });
- self._trigger('getPeersStateChange',self.GET_PEERS_STATE.ENQUIRED, self._user.sid, null);
-
- log.log('Enquired server for peers within the realm');
-
- if (typeof callback === 'function'){
- self.once('getPeersStateChange', function(state, privilegedPeerId, peerList){
- callback(null, peerList);
- }, function(state, privilegedPeerId, peerList){
- return state === self.GET_PEERS_STATE.RECEIVED;
- });
- }
-
- };
-
- /**
- * Introduces two Peers to each other to start a connection with each other.
- * This will only work if self is a privileged Peer.
- * @method introducePeer
- * @param {String} sendingPeerId The Peer ID of the peer
- * that initiates the connection with the introduced Peer.
- * @param {String} receivingPeerId The Peer ID of the
- * introduced peer who would be introduced to the initiator Peer.
- * @trigger introduceStateChange
- * @component Peer
- * @for Skylink
- * @since 0.6.1
- */
- Skylink.prototype.introducePeer = function(sendingPeerId, receivingPeerId){
- var self = this;
- if (!self._isPrivileged){
- log.warn('Please upgrade your key to privileged to use this function');
- self._trigger('introduceStateChange', self.INTRODUCE_STATE.ERROR, self._user.sid, sendingPeerId, receivingPeerId, 'notPrivileged');
- return;
- }
- self._sendChannelMessage({
- type: self._SIG_MESSAGE_TYPE.INTRODUCE,
- sendingPeerId: sendingPeerId,
- receivingPeerId: receivingPeerId
- });
- self._trigger('introduceStateChange', self.INTRODUCE_STATE.INTRODUCING, self._user.sid, sendingPeerId, receivingPeerId, null);
- log.log('Introducing',sendingPeerId,'to',receivingPeerId);
- };
-
-
-