<?php
namespace Common;
use Think\Log;
class YxUtils {
private $AppKey;
private $AppSecret;
private $Nonce;
private $CurTime;
private $CheckSum;
const HEX_DIGITS = "0123456789abcdef";
public function __construct($AppKey,$AppSecret,$RequestType='curl'){
$this->AppKey = $AppKey;
$this->AppSecret = $AppSecret;
$this->RequestType = $RequestType;
}
public function checkSumBuilder(){
$hex_digits = self::HEX_DIGITS;
$this->Nonce;
for($i=0;$i<128;$i++){
$this->Nonce.= $hex_digits[rand(0,15)];
}
$this->CurTime = (string)(time());
$join_string = $this->AppSecret.$this->Nonce.$this->CurTime;
$this->CheckSum = sha1($join_string);
}
public function postDataCurl($url,$data){
$this->checkSumBuilder();
$timeout = 5000;
$http_header = array(
'AppKey:'.$this->AppKey,
'Nonce:'.$this->Nonce,
'CurTime:'.$this->CurTime,
'CheckSum:'.$this->CheckSum,
'Content-Type:application/x-www-form-urlencoded;charset=utf-8'
);
$postdata = '';
foreach ($data as $key=>$value){
$postdata.= ($key.'='.$value.'&');
}
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_HEADER, false );
curl_setopt ($ch, CURLOPT_HTTPHEADER,$http_header);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if (false === $result) {
$result = curl_errno($ch);
}
curl_close($ch);
return json_decode($result,true) ;
}
public function postDataFsockopen($url,$data){
$this->checkSumBuilder();
$postdata = '';
foreach ($data as $key=>$value){
$postdata.= ($key.'='.urlencode($value).'&');
}
$URL_Info=parse_url($url);
if(!isset($URL_Info["port"])){
$URL_Info["port"]=80;
}
$request = '';
$request.="POST ".$URL_Info["path"]." HTTP/1.1\r\n";
$request.="Host:".$URL_Info["host"]."\r\n";
$request.="Content-type: application/x-www-form-urlencoded;charset=utf-8\r\n";
$request.="Content-length: ".strlen($postdata)."\r\n";
$request.="Connection: close\r\n";
$request.="AppKey: ".$this->AppKey."\r\n";
$request.="Nonce: ".$this->Nonce."\r\n";
$request.="CurTime: ".$this->CurTime."\r\n";
$request.="CheckSum: ".$this->CheckSum."\r\n";
$request.="\r\n";
$request.=$postdata."\r\n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
$result = '';
while(!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
$str_s = strpos($result,'{');
$str_e = strrpos($result,'}');
$str = substr($result, $str_s,$str_e-$str_s+1);
return json_decode($str,true) ;
}
public function createUserId($accid,$name='',$props='{}',$icon='',$token=''){
$url = 'https://api.netease.im/nimserver/user/create.action';
$data= array(
'accid' => $accid,
'name' => $name,
'props' => $props,
'icon' => $icon,
'token' => $token
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function generateAccId() {
$ran = rand(10000, 99999);
return date('YmdHis') . $ran;
}
public function updateUserId($accid,$name='',$props='{}',$token=''){
$url = 'https://api.netease.im/nimserver/user/update.action';
$data= array(
'accid' => $accid,
'name' => $name,
'props' => $props,
'token' => $token
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function updateUserToken($accid){
$url = 'https://api.netease.im/nimserver/user/refreshToken.action';
$data= array(
'accid' => $accid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function blockUserId($accid){
$url = 'https://api.netease.im/nimserver/user/block.action';
$data= array(
'accid' => $accid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function unblockUserId($accid){
$url = 'https://api.netease.im/nimserver/user/unblock.action';
$data= array(
'accid' => $accid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function updateUinfo($accid,$name='',$icon='',$sign='',$email='',$birth='',$mobile='',$gender='0',$ex=''){
$url = 'https://api.netease.im/nimserver/user/updateUinfo.action';
$data= array(
'accid' => $accid,
'name' => $name,
'icon' => $icon,
'sign' => $sign,
'email' => $email,
'birth' => $birth,
'mobile' => $mobile,
'gender' => $gender,
'ex' => $ex
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function getUinfos($accids){
$url = 'https://api.netease.im/nimserver/user/getUinfos.action';
$data= array(
'accids' => json_encode($accids)
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function addFriend($accid,$faccid,$type,$msg=''){
$url = 'https://api.netease.im/nimserver/friend/add.action';
$data= array(
'accid' => $accid,
'faccid' => $faccid,
'type' => $type,
'msg' => $msg
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function updateFriend($accid,$faccid,$alias){
$url = 'https://api.netease.im/nimserver/friend/update.action';
$data= array(
'accid' => $accid,
'faccid' => $faccid,
'alias' => $alias
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function getFriend($accid){
$url = 'https://api.netease.im/nimserver/friend/get.action';
$data= array(
'accid' => $accid,
'createtime' => (string)(time())
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function deleteFriend($accid,$faccid){
$url = 'https://api.netease.im/nimserver/friend/delete.action';
$data= array(
'accid' => $accid,
'faccid' => $faccid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function specializeFriend($accid,$targetAcc,$relationType,$value){
$url = 'https://api.netease.im/nimserver/user/setSpecialRelation.action';
$data= array(
'accid' => $accid,
'targetAcc' => $targetAcc,
'relationType' => $relationType,
'value' => $value
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function listBlackFriend($accid){
$url = 'https://api.netease.im/nimserver/user/listBlackAndMuteList.action';
$data= array(
'accid' => $accid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function sendMsg($from,$ope,$to,$type,$body,$option='{"push":false,"roam":true,"history":false,"sendersync":true, "route":false}',$pushcontent=''){
$url = 'https://api.netease.im/nimserver/msg/sendMsg.action';
$data= array(
'from' => $from,
'ope' => $ope,
'to' => $to,
'type' => $type,
'body' => json_encode($body),
'option' => $option,
'pushcontent' => $pushcontent
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function sendAttachMsg($from,$msgtype,$to,$attach,$pushcontent='',$payload='{}',$sound=''){
$url = 'https://api.netease.im/nimserver/msg/sendAttachMsg.action';
$data= array(
'from' => $from,
'msgtype' => $msgtype,
'to' => $to,
'attach' => $attach,
'pushcontent' => $pushcontent,
'payload' => $payload,
'sound' => $sound
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function uploadMsg($content,$type='0'){
$url = 'https://api.netease.im/nimserver/msg/upload.action';
$data= array(
'content' => $content,
'type' => $type
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function uploadMultiMsg($content,$type='0'){
$url = 'https://api.netease.im/nimserver/msg/upload.action';
$data= array(
'content' => $content,
'type' => $type
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function createGroup($tname,$owner,$members,$announcement='',$intro='',$msg='',$magree='0',$joinmode='0',$custom='0'){
$url = 'https://api.netease.im/nimserver/team/create.action';
$data= array(
'tname' => $tname,
'owner' => $owner,
'members' => json_encode($members),
'announcement' => $announcement,
'intro' => $intro,
'msg' => $msg,
'magree' => $magree,
'joinmode' => $joinmode,
'custom' => $custom
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function addIntoGroup($tid,$owner,$members,$magree='0',$msg='请您入伙'){
$url = 'https://api.netease.im/nimserver/team/add.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'members' => json_encode($members),
'magree' => $magree,
'msg' => $msg
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function kickFromGroup($tid,$owner,$member){
$url = 'https://api.netease.im/nimserver/team/kick.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'member' => $member
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function removeGroup($tid,$owner){
$url = 'https://api.netease.im/nimserver/team/remove.action';
$data= array(
'tid' => $tid,
'owner' => $owner
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function updateGroup($tid,$owner,$tname,$announcement='',$intro='',$joinmode='0',$custom=''){
$url = 'https://api.netease.im/nimserver/team/update.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'tname' => $tname,
'announcement' => $announcement,
'intro' => $intro,
'joinmode' => $joinmode,
'custom' => $custom
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function queryGroup($tids,$ope='1'){
$url = 'https://api.netease.im/nimserver/team/query.action';
$data= array(
'tids' => json_encode($tids),
'ope' => $ope
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function changeGroupOwner($tid,$owner,$newowner,$leave='2'){
$url = 'https://api.netease.im/nimserver/team/changeOwner.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'newowner' => $newowner,
'leave' => $leave
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function addGroupManager($tid,$owner,$members){
$url = 'https://api.netease.im/nimserver/team/addManager.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'members' => json_encode($members)
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function removeGroupManager($tid,$owner,$members){
$url = 'https://api.netease.im/nimserver/team/removeManager.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'members' => json_encode($members)
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function joinTeams($accid){
$url = 'https://api.netease.im/nimserver/team/joinTeams.action';
$data= array(
'accid' => $accid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function updateGroupNick($tid,$owner,$accid,$nick){
$url = 'https://api.netease.im/nimserver/team/updateTeamNick.action';
$data= array(
'tid' => $tid,
'owner' => $owner,
'accid' => $accid,
'nick' => $nick
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function querySessionMsg($from,$to,$begintime,$endtime='',$limit='100',$reverse='1'){
$url = 'https://api.netease.im/nimserver/history/querySessionMsg.action';
$data= array(
'from' => $from,
'to' => $to,
'begintime' => $begintime,
'endtime' => $endtime,
'limit' => $limit,
'reverse' => $reverse
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function queryGroupMsg($tid,$accid,$begintime,$endtime='',$limit='100',$reverse='1'){
$url = 'https://api.netease.im/nimserver/history/queryTeamMsg.action';
$data= array(
'tid' => $tid,
'accid' => $accid,
'begintime' => $begintime,
'endtime' => $endtime,
'limit' => $limit,
'reverse' => $reverse
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function sendSmsCode($mobile,$deviceId=''){
$url = 'https://api.netease.im/sms/sendcode.action';
$data= array(
'mobile' => $mobile,
'deviceId' => $deviceId
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function verifycode($mobile,$code=''){
$url = 'https://api.netease.im/sms/verifycode.action';
$data= array(
'mobile' => $mobile,
'code' => $code
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function sendSMSTemplate($templateid,$mobiles=array(),$params=''){
$url = 'https://api.netease.im/sms/sendtemplate.action';
$data= array(
'templateid' => $templateid,
'mobiles' => json_encode($mobiles),
'params' => $params
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function querySMSStatus($sendid){
$url = 'https://api.netease.im/sms/querystatus.action';
$data= array(
'sendid' => $sendid
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function startcall($callerAcc,$caller,$callee,$maxDur){
$url = 'https://api.netease.im/call/ecp/startcall.action';
$data= array(
'callerAcc' => $callerAcc,
'caller' => $caller,
'callee' => $callee,
'maxDur' => $maxDur
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function startconf($callerAcc,$caller,$callee,$maxDur){
$url = 'https://api.netease.im/call/ecp/startconf.action';
$data= array(
'callerAcc' => $callerAcc,
'caller' => $caller,
'callee' => json_encode($callee),
'maxDur' => $maxDur
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
public function queryCallsBySession($session,$type){
$url = 'https://api.netease.im/call/ecp/queryBySession.action';
$data= array(
'session' => $session,
'type' => $type
);
if($this->RequestType=='curl'){
$result = $this->postDataCurl($url,$data);
}else{
$result = $this->postDataFsockopen($url,$data);
}
return $result;
}
}
转载请注明原文地址: https://www.6miu.com/read-83098.html