123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- namespace 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;
- }
- }
|