| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?phpnamespace Qiniu\Pili;class RoomClient{    private $_transport;    private $_mac;    private $_baseURL;    public function __construct($mac)    {        $this->_mac = $mac;        $this->_transport = new Transport($mac);        $cfg = Config::getInstance();        $this->_baseURL = sprintf("%s/%s/rooms", $cfg->RTCAPI_HOST, $cfg->RTCAPI_VERSION);    }    /*     * ownerId: 要创建房间的所有者     * roomName: 房间名称     */    public function createRoom($ownerId, $roomName = null)    {        $params['owner_id'] = $ownerId;        if (!empty($roomName)) {            $params['room_name'] = $roomName;        }        $body = json_encode($params);        try {            $ret = $this->_transport->send(HttpRequest::POST, $this->_baseURL, $body);        } catch (\Exception $e) {            return $e;        }        return $ret;    }    /*     * roomName: 房间名称     */    public function getRoom($roomName)    {        $url = $this->_baseURL . '/' . $roomName;        try {            $ret = $this->_transport->send(HttpRequest::GET, $url);        } catch (\Exception $e) {            return $e;        }        return $ret;    }    /*     * roomName: 房间名称     */    public function deleteRoom($roomName)    {        $url = $this->_baseURL . '/' . $roomName;        try {            $ret = $this->_transport->send(HttpRequest::DELETE, $url);        } catch (\Exception $e) {            return $e;        }        return $ret;    }    /*     * 获取房间的人数     * roomName: 房间名称     */    public function getRoomUserNum($roomName)    {        $url = sprintf("%s/%s/users", $this->_baseURL, $roomName);        try {            $ret = $this->_transport->send(HttpRequest::GET, $url);        } catch (\Exception $e) {            return $e;        }        return $ret;    }   /*    * 踢出玩家    * roomName: 房间名称    * userId: 请求加入房间的用户ID    */    public function kickingPlayer($roomName, $UserId)    {        $url = sprintf("%s/%s/users/%s", $this->_baseURL, $roomName, $UserId);        try {            $ret = $this->_transport->send(HttpRequest::DELETE, $url);        } catch (\Exception $e) {            return $e;        }        return $ret;    }    /*     * roomName: 房间名称     * userId: 请求加入房间的用户ID     * perm: 该用户的房间管理权限,"admin"或"user",房间主播为"admin",拥有将其他用户移除出房间等特权。     * expireAt: int64类型,鉴权的有效时间,传入秒为单位的64位Unix时间,token将在该时间后失效。     */    public function roomToken($roomName, $userId, $perm, $expireAt)    {        $ver = Config::getInstance()->RTCAPI_VERSION;        if ($ver === 'v2') {            $params['version']="2.0";        }        $params['room_name'] = $roomName;        $params['user_id'] = $userId;        $params['perm'] = $perm;        $params['expire_at'] = $expireAt;        $roomAccessString = json_encode($params);        $encodedRoomAccess = Utils::base64UrlEncode($roomAccessString);        $sign = hash_hmac('sha1', $encodedRoomAccess, $this->_mac->_secretKey, true);        $encodedSign = Utils::base64UrlEncode($sign);        return $this->_mac->_accessKey . ":" . $encodedSign . ":" . $encodedRoomAccess;    }}
 |