个人改造方法调用接口文档

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace Import_and_export.Utils
{
    public class RongCloudMS
    {
        #region private
        string appKey;
        string appSecret;
        string apiUrl = "http://api.cn.ronghub.com";
        public RongCloudMS(string appKey, string appSecret)
        {
            this.appKey = appKey;
            this.appSecret = appSecret;
        }

        #endregion
        #region   class model 返回类属性和消息类型属性

        //注册用户返回值类型
        /// <summary>
        /// 注册用户返回值数据类型
        /// </summary>
        public class TokenReslut
        {
            /// <summary>
            /// 返回码,200为正常
            /// </summary>
            [JsonProperty]
            int code;

            /// <summary>
            /// 用户Token,可以保存在应用内。
            /// </summary>
            [JsonProperty]
            String token;

            /// <summary>
            /// 用户Id,与输入的用户Id相同
            /// </summary>
            [JsonProperty]
            String userId;

            /// <summary>
            /// 错误信息
            /// </summary>
            [JsonProperty]
            String errorMessage;
            public TokenReslut(int code, String token, String userId, String errorMessage)
            {
                this.code = code;
                this.token = token;
                this.userId = userId;
                this.errorMessage = errorMessage;
            }
            public void SetCode(int code)
            {
                this.code = code;
            }
            public int GetCode()
            {
                return code;
            }
            public void SetToken(String token)
            {
                this.token = token;
            }
            public String getToken()
            {
                return token;
            }
            public void SetUserId(String userId)
            {
                this.userId = userId;
            }
            public String GetUserId()
            {
                return userId;
            }
            public void SetErrorMessage(String errorMessage)
            {
                this.errorMessage = errorMessage;
            }
            public String GetErrorMessage()
            {
                return errorMessage;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        //接口返回值数据
        /// <summary>
        /// 正常接口返回值状态类型
        /// </summary>
        public class CodeSuccessReslut
        {
            [JsonProperty]
            int code;

            [JsonProperty]
            String errorMessage;
            public CodeSuccessReslut(int code, String errorMessage)
            {
                this.code = code;
                this.errorMessage = errorMessage;
            }
            public void setCode(int code)
            {
                this.code = code;
            }
            public int getCode()
            {
                return code;
            }
            public void setErrorMessage(String errorMessage)
            {
                this.errorMessage = errorMessage;
            }
            public String getErrorMessage()
            {
                return errorMessage;
            }
            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        //文字消息
        /// <summary>
        /// 文字消息类型
        /// </summary>
        public class TxtMsgRC : SendMessage
        {
            [JsonProperty]
            private String content = "";
            [JsonProperty]
            private String extra = "";
            private string typeRC = "RC:TxtMsg";
            public TxtMsgRC(String content, String extra)
            {
                this.content = content;
                this.extra = extra;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }

        //语音消息
        /// <summary>
        /// 语音消息类型
        /// </summary>
        public class VcMsgRC : SendMessage
        {
            [JsonProperty]
            private String content = "";
            [JsonProperty]
            private String extra = "";
            [JsonProperty]
            private long duration = 0L;
            private string typeRC = "RC:VcMsg";
            public VcMsgRC(String content, String extra, long duration)
            {
                this.content = content;
                this.extra = extra;
                this.duration = duration;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }

        //图片消息
        /// <summary>
        /// 图片消息
        /// </summary>
        public class ImgMsgRC : SendMessage
        {
            [JsonProperty]
            private String content = "";
            [JsonProperty]
            private String extra = "";
            [JsonProperty]
            private String imageUri = "";
            private string typeRC = "RC:ImgMsg";
            public ImgMsgRC(String content, String extra, String imageUri)
            {
                this.content = content;
                this.extra = extra;
                this.imageUri = imageUri;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }

        //图文消息
        /// <summary>
        /// 图文消息
        /// </summary>
        public class ImgTextMsgRC : SendMessage
        {
            [JsonProperty]
            private String content = "";
            [JsonProperty]
            private String extra = "";
            [JsonProperty]
            private String title = "";
            [JsonProperty]
            private String imageUri = "";
            [JsonProperty]
            private String url = "";
            private string typeRC = "RC:ImgTextMsg";
            public ImgTextMsgRC(String content, String extra, String title, String imageUri, String url)
            {
                this.content = content;
                this.extra = extra;
                this.title = title;
                this.imageUri = imageUri;
                this.url = url;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }

        //位置消息
        /// <summary>
        /// 位置消息
        /// </summary>
        public class LBSMsgRC : SendMessage
        {
            [JsonProperty]
            private String content = "";
            [JsonProperty]
            private String extra = "";
            [JsonProperty]
            private double latitude = 0;
            [JsonProperty]
            private double longitude = 0;
            [JsonProperty]
            private String poi = "";
            private string typeRC = "RC:LBSMsg";
            public LBSMsgRC(String content, String extra, double latitude, double longitude, String poi)
            {
                this.content = content;
                this.extra = extra;
                this.latitude = latitude;
                this.longitude = longitude;
                this.poi = poi;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }


        //文件消息
        /// <summary>
        /// 文件消息
        /// </summary>
        public class FileMsgRC : SendMessage
        {
            [JsonProperty]
            private String name = "";
            [JsonProperty]
            private int size = 0;
            [JsonProperty]
            private String type = "";
            [JsonProperty]
            private String fileUrl = "";
            private string typeRC = "RC:FileMsg";
            public FileMsgRC(string name, int size, string type, string fileUrl)
            {
                this.name = name;
                this.size = size;
                this.type = type;
                this.fileUrl = fileUrl;
            }
            public string getType()
            {
                return typeRC;
            }
            public string toString()
            {
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.NullValueHandling = NullValueHandling.Ignore;
                return JsonConvert.SerializeObject(this);
            }
        }

        //推送消息类型
        public class TagObj
        {
            // 标签。(最多20个)
            [JsonProperty]
            String[] tag;
            // 如果填 userId 给 userId 发如果没有给 tag 发。(最多1000个)
            [JsonProperty]
            String[] userid;
            // true为全部,忽略上面的tag、userId。(必传)
            [JsonProperty]
            Boolean is_to_all;

            public TagObj(String[] tag, String[] userid, Boolean is_to_all)
            {
                this.tag = tag;
                this.userid = userid;
                this.is_to_all = is_to_all;
            }

            /**
             * 设置tag
             *
             */
            public void setTag(String[] tag)
            {
                this.tag = tag;
            }

            /**
             * 获取tag
             *
             * @return String[]
             */
            public String[] getTag()
            {
                return tag;
            }

            /**
             * 设置userid
             *
             */
            public void setUserid(String[] userid)
            {
                this.userid = userid;
            }

            /**
             * 获取userid
             *
             * @return String[]
             */
            public String[] getUserid()
            {
                return userid;
            }

            /**
             * 设置is_to_all
             *
             */
            public void setIs_to_all(Boolean is_to_all)
            {
                this.is_to_all = is_to_all;
            }

            /**
             * 获取is_to_all
             *
             * @return Boolean
             */
            public Boolean getIs_to_all()
            {
                return is_to_all;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        public class MsgObj
        {
            // push 消息中的消息体。
            [JsonProperty]
            String content;
            // 聊天室名称。
            [JsonProperty]
            String objectName;

            public MsgObj(String content, String objectName)
            {
                this.content = content;
                this.objectName = objectName;
            }

            /**
             * 设置content
             *
             */
            public void setContent(String content)
            {
                this.content = content;
            }

            /**
             * 获取content
             *
             * @return String
             */
            public String getContent()
            {
                return content;
            }

            /**
             * 设置objectName
             *
             */
            public void setObjectName(String objectName)
            {
                this.objectName = objectName;
            }

            /**
             * 获取objectName
             *
             * @return String
             */
            public String getObjectName()
            {
                return objectName;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        public class PlatformNotification
        {
            // 默认推送消息内容,如填写了 ios 或 android 下的 alert 时,则推送内容以对应平台系统的 alert 为准。(必传)
            [JsonProperty]
            String alert;
            // ios 或 android 不同平台下的附加信息,如果开发者自己需要,可以自己在 App 端进行解析。(非必传)
            [JsonProperty]
            Dictionary<String, String> extras;

            public PlatformNotification(String alert, Dictionary<String, String> extras)
            {
                this.alert = alert;
                this.extras = extras;
            }

            /**
             * 设置alert
             *
             */
            public void setAlert(String alert)
            {
                this.alert = alert;
            }

            /**
             * 获取alert
             *
             * @return String
             */
            public String getAlert()
            {
                return alert;
            }

            /**
             * 设置extras
             *
             */
            public void setExtras(Dictionary<String, String> extras)
            {
                this.extras = extras;
            }

            /**
             * 获取extras
             *
             * @return Map<String,String>
             */
            public Dictionary<String, String> getExtras()
            {
                return extras;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        public class Notification
        {
            // 默认推送消息内容,如填写了 ios 或 android 下的 alert 时,则推送内容以对应平台系统的 alert 为准。(必传)
            [JsonProperty]
            String alert;
            // 设置 iOS 平台下的推送及附加信息。
            [JsonProperty]
            PlatformNotification ios;
            // 设置 Android 平台下的推送及附加信息。
            [JsonProperty]
            PlatformNotification android;

            public Notification(String alert, PlatformNotification ios, PlatformNotification android)
            {
                this.alert = alert;
                this.ios = ios;
                this.android = android;
            }

            /**
             * 设置alert
             *
             */
            public void setAlert(String alert)
            {
                this.alert = alert;
            }

            /**
             * 获取alert
             *
             * @return String
             */
            public String getAlert()
            {
                return alert;
            }

            /**
             * 设置ios
             *
             */
            public void setIos(PlatformNotification ios)
            {
                this.ios = ios;
            }

            /**
             * 获取ios
             *
             * @return PlatformNotification
             */
            public PlatformNotification getIos()
            {
                return ios;
            }

            /**
             * 设置android
             *
             */
            public void setAndroid(PlatformNotification android)
            {
                this.android = android;
            }

            /**
             * 获取android
             *
             * @return PlatformNotification
             */
            public PlatformNotification getAndroid()
            {
                return android;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        public class PushMessage
        {
            // 目标操作系统。(iOS、Android)。(必传)
            [JsonProperty]
            String[] platform;
            // 发送人用户 Id。(必传)
            [JsonProperty]
            String fromuserid;
            // 推送条件,包括: tag 、 userid 、 is_to_all。(必传)
            [JsonProperty]
            TagObj audience;
            // true为全部,忽略上面的tag、userId。
            [JsonProperty]
            MsgObj message;
            // 按操作系统类型推送消息内容,如 platform 中设置了给 ios 和 android 系统推送消息,而在 notification 中只设置了 ios 的推送内容,则 android 的推送内容为最初 alert 设置的内容。
            [JsonProperty]
            Notification notification;


            public PushMessage(String[] platform, String fromuserid, TagObj audience, MsgObj message, Notification notification)
            {
                this.platform = platform;
                this.fromuserid = fromuserid;
                this.audience = audience;
                this.message = message;
                this.notification = notification;
            }

            /**
             * 设置platform
             *
             */
            public void setPlatform(String[] platform)
            {
                this.platform = platform;
            }

            /**
             * 获取platform
             *
             * @return String[]
             */
            public String[] getPlatform()
            {
                return platform;
            }

            /**
             * 设置fromuserid
             *
             */
            public void setFromuserid(String fromuserid)
            {
                this.fromuserid = fromuserid;
            }

            /**
             * 获取fromuserid
             *
             * @return String
             */
            public String getFromuserid()
            {
                return fromuserid;
            }

            /**
             * 设置audience
             *
             */
            public void setAudience(TagObj audience)
            {
                this.audience = audience;
            }

            /**
             * 获取audience
             *
             * @return TagObj
             */
            public TagObj getAudience()
            {
                return audience;
            }

            /**
             * 设置message
             *
             */
            public void setMessage(MsgObj message)
            {
                this.message = message;
            }

            /**
             * 获取message
             *
             * @return MsgObj
             */
            public MsgObj getMessage()
            {
                return message;
            }

            /**
             * 设置notification
             *
             */
            public void setNotification(Notification notification)
            {
                this.notification = notification;
            }

            /**
             * 获取notification
             *
             * @return Notification
             */
            public Notification getNotification()
            {
                return notification;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        #endregion

        //群信息查询返回结果
        /// <summary>
        /// 群信息查询返回结果
        /// </summary>
        public class GroupUserQueryReslut
        {
            // 返回码,200 为正常。
            [JsonProperty]
            int code;
            // 群成员用户Id。
            [JsonProperty]
            String id;
            // 群成员列表。
            [JsonProperty]
            List<GroupUser> users;

            public GroupUserQueryReslut(int code, String id, List<GroupUser> users)
            {
                this.code = code;
                this.id = id;
                this.users = users;
            }

            /**
             * 设置code
             *
             */
            public void setCode(int code)
            {
                this.code = code;
            }

            /**
             * 获取code
             *
             * @return Integer
             */
            public int getCode()
            {
                return code;
            }

            /**
             * 设置id
             *
             */
            public void setId(String id)
            {
                this.id = id;
            }

            /**
             * 获取id
             *
             * @return String
             */
            public String getId()
            {
                return id;
            }

            /**
             * 设置users
             *
             */
            public void setUsers(List<GroupUser> users)
            {
                this.users = users;
            }

            /**
             * 获取users
             *
             * @return List<GroupUser>
             */
            public List<GroupUser> getUsers()
            {
                return users;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        //群成员信息
        /// <summary>
        /// 群成员信息
        /// </summary>
        public class GroupUser
        {
            // 用户 Id。
            [JsonProperty]
            String id;

            public GroupUser(String id)
            {
                this.id = id;
            }

            /**
             * 设置id
             *
             */
            public void setId(String id)
            {
                this.id = id;
            }

            /**
             * 获取id
             *
             * @return String
             */
            public String getId()
            {
                return id;
            }

            public String toString()
            {
                return JsonConvert.SerializeObject(this);
            }
        }

        RongHttpClient _rongHttpClient = new RongHttpClient();
        //注册用户
        /// <summary>
        /// 注册用户
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="name">用户名称</param>
        /// <param name="portraitUri">用户头像</param>
        /// <returns></returns>
        public TokenReslut UserGetToken(string userId, string name, string portraitUri)
        {

            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (name == null)
            {
                throw new ArgumentNullException("Paramer 'name' is required");
            }

            if (portraitUri == null)
            {
                throw new ArgumentNullException("Paramer 'portraitUri' is required");
            }

            String postStr = "";
            postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&";
            postStr += "name=" + HttpUtility.UrlEncode(name == null ? "" : name, Encoding.UTF8) + "&";
            postStr += "portraitUri=" + HttpUtility.UrlEncode(portraitUri == null ? "" : portraitUri, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));
            return (TokenReslut)JsonConvert.DeserializeObject<TokenReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, apiUrl + "/user/getToken.json", postStr, "application/x-www-form-urlencoded"));
        }
        class RongHttpClient
        {
            public String ExecutePost(String appkey, String appSecret, String methodUrl, String postStr, String contentType)
            {
                Random rd = new Random();
                int rd_i = rd.Next();
                String nonce = Convert.ToString(rd_i);

                String timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));

                String signature = GetHash(appSecret + nonce + timestamp);

                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(methodUrl);

                myRequest.Method = "POST";
                if (contentType == null || contentType.Equals("") || contentType.Length < 10)
                {
                    myRequest.ContentType = "application/x-www-form-urlencoded";
                }
                else
                {
                    myRequest.ContentType = contentType;
                }
                myRequest.ProtocolVersion = HttpVersion.Version10;

                myRequest.Headers.Add("App-Key", appkey);
                myRequest.Headers.Add("Nonce", nonce);
                myRequest.Headers.Add("Timestamp", timestamp);
                myRequest.Headers.Add("Signature", signature);
                myRequest.ReadWriteTimeout = 30 * 1000;

                byte[] data = Encoding.UTF8.GetBytes(postStr);
                myRequest.ContentLength = data.Length;

                Stream newStream = myRequest.GetRequestStream();

                // Send the data.
                newStream.Write(data, 0, data.Length);
                newStream.Close();

                return returnResult(myRequest);
            }
            /// <summary>  
            /// DateTime时间格式转换为Unix时间戳格式  
            /// </summary>  
            /// <param name="time"> DateTime时间格式</param>  
            /// <returns>Unix时间戳格式</returns>  
            public int ConvertDateTimeInt(System.DateTime time)
            {
                System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                return (int)(time - startTime).TotalSeconds;
            }
            public String GetHash(String input)
            {
                //建立SHA1对象
                SHA1 sha = new SHA1CryptoServiceProvider();

                //将mystr转换成byte[]
                UTF8Encoding enc = new UTF8Encoding();
                byte[] dataToHash = enc.GetBytes(input);

                //Hash运算
                byte[] dataHashed = sha.ComputeHash(dataToHash);

                //将运算结果转换成string
                string hash = BitConverter.ToString(dataHashed).Replace("-", "");

                return hash;
            }

            public string returnResult(HttpWebRequest myRequest)
            {
                HttpWebResponse myResponse = null;
                int httpStatus = 200;
                string content;
                try
                {
                    myResponse = (HttpWebResponse)myRequest.GetResponse();
                    httpStatus = (int)myResponse.StatusCode;
                    StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);

                    content = reader.ReadToEnd();
                }
                catch (WebException e)
                { //异常请求
                    myResponse = (HttpWebResponse)e.Response;
                    httpStatus = (int)myResponse.StatusCode;
                    using (Stream errData = myResponse.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(errData))
                        {
                            content = reader.ReadToEnd();
                        }
                    }
                }
                return content;
            }
        }
        //发送个人消息
        /// <summary>
        /// 发送个人消息
        /// </summary>
        /// <param name="fromUserId">发送人用户 Id。(必传)</param>
        /// <param name="toUserId">接收用户 Id,可以实现向多人发送消息,每次上限为 1000 人。(必传)</param>
        /// <param name="message">消息。</param>
        /// <param name="pushContent"></param>
        /// <param name="pushData"></param>
        /// <param name="count"></param>
        /// <param name="verifyBlacklist"></param>
        /// <param name="isPersisted"></param>
        /// <param name="isCounted"></param>
        /// <param name="isIncludeSender"></param>
        /// <returns></returns>
        public CodeSuccessReslut PublishPrivate(String fromUserId, String[] toUserId, SendMessage message, String pushContent, String pushData, String count, int verifyBlacklist, int isPersisted, int isCounted, int isIncludeSender)
        {
            if (fromUserId == null)
            {
                throw new ArgumentNullException("Paramer 'fromUserId' is required");
            }

            if (toUserId == null)
            {
                throw new ArgumentNullException("Paramer 'toUserId' is required");
            }

            if (message.getType() == null)
            {
                throw new ArgumentNullException("Paramer 'ObjectName' is required");
            }

            if (message.toString() == null)
            {
                throw new ArgumentNullException("Paramer 'Content' is required");
            }

            String postStr = "";
            postStr += "fromUserId=" + HttpUtility.UrlEncode(fromUserId == null ? "" : fromUserId, Encoding.UTF8) + "&";
            for (int i = 0; i < toUserId.Length; i++)
            {
                String child = toUserId[i];
                postStr += "toUserId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "objectName=" + HttpUtility.UrlEncode(message.getType(), Encoding.UTF8) + "&";
            postStr += "content=" + HttpUtility.UrlEncode(message.toString(), Encoding.UTF8) + "&";
            postStr += "pushContent=" + HttpUtility.UrlEncode(pushContent == null ? "" : pushContent, Encoding.UTF8) + "&";
            postStr += "pushData=" + HttpUtility.UrlEncode(pushData == null ? "" : pushData, Encoding.UTF8) + "&";
            postStr += "count=" + HttpUtility.UrlEncode(count == null ? "" : count, Encoding.UTF8) + "&";
            postStr += "verifyBlacklist=" + HttpUtility.UrlEncode(Convert.ToString(verifyBlacklist) == null ? "" : Convert.ToString(verifyBlacklist), Encoding.UTF8) + "&";
            postStr += "isPersisted=" + HttpUtility.UrlEncode(Convert.ToString(isPersisted) == null ? "" : Convert.ToString(isPersisted), Encoding.UTF8) + "&";
            postStr += "isCounted=" + HttpUtility.UrlEncode(Convert.ToString(isCounted) == null ? "" : Convert.ToString(isCounted), Encoding.UTF8) + "&";
            postStr += "isIncludeSender=" + HttpUtility.UrlEncode(Convert.ToString(isIncludeSender) == null ? "" : Convert.ToString(isIncludeSender), Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/message/private/publish.json", postStr, "application/x-www-form-urlencoded"));
        }
        //创建群组
        /// <summary>
        /// 创建群组
        /// </summary>
        /// <param name="userId">要加入群的用户Id</param>
        /// <param name="groupId">创建群组Id</param>
        /// <param name="groupName">群组Id对应的名称</param>
        /// <returns></returns>
        public CodeSuccessReslut CreateGroup(String[] userId, String groupId, String groupName)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            if (groupName == null)
            {
                throw new ArgumentNullException("Paramer 'groupName' is required");
            }

            String postStr = "";
            for (int i = 0; i < userId.Length; i++)
            {
                String child = userId[i];
                postStr += "userId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr += "groupName=" + HttpUtility.UrlEncode(groupName == null ? "" : groupName, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/create.json", postStr, "application/x-www-form-urlencoded"));
        }

        //加入群组
        /// <summary>
        /// 加入群组
        /// </summary>
        /// <param name="userId">要加入群组的用户Id</param>
        /// <param name="groupId">群Id</param>
        /// <param name="groupName">群名称</param>
        /// <returns></returns>
        public CodeSuccessReslut JoinGroup(String[] userId, String groupId, String groupName)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            if (groupName == null)
            {
                throw new ArgumentNullException("Paramer 'groupName' is required");
            }

            String postStr = "";
            for (int i = 0; i < userId.Length; i++)
            {
                String child = userId[i];
                postStr += "userId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr += "groupName=" + HttpUtility.UrlEncode(groupName == null ? "" : groupName, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/join.json", postStr, "application/x-www-form-urlencoded"));
        }

        //退出群组
        /// <summary>
        /// 退出群组
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="groupId">群组Id</param>
        /// <returns></returns>
        public CodeSuccessReslut QuitGroup(String[] userId, String groupId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            String postStr = "";
            for (int i = 0; i < userId.Length; i++)
            {
                String child = userId[i];
                postStr += "userId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/quit.json", postStr, "application/x-www-form-urlencoded"));

        }


        //发送群组消息
        /// <summary>
        /// 发送群组消息
        /// </summary>
        /// <param name="fromUserId">发送用户id</param>
        /// <param name="toGroupId">群组Id,可以多个群组</param>
        /// <param name="message">消息内容</param>
        /// <param name="pushContent">定义显示的 Push 内容,如果 objectName 为融云内置消息类型时,则发送后用户一定会收到 Push 信息. 如果为自定义消息,则 pushContent 为自定义消息显示的 Push 内容,如果不传则用户不会收到 Push 通知。(可选)</param>
        /// <param name="pushData">针对 iOS 平台为 Push 通知时附加到 payload 中,Android 客户端收到推送消息时对应字段名为 pushData。(可选)</param>
        /// <param name="isPersisted">当前版本有新的自定义消息,而老版本没有该自定义消息时,老版本客户端收到消息后是否进行存储,0 表示为不存储、 1 表示为存储,默认为 1 存储消息。(可选)</param>
        /// <param name="isCounted"></param>
        /// <param name="isIncludeSender"></param>
        /// <returns></returns>
        public CodeSuccessReslut PublishGroup(String fromUserId, String[] toGroupId, TxtMsgRC message, String pushContent, String pushData, int isPersisted, int isCounted, int isIncludeSender)
        {
            if (fromUserId == null)
            {
                throw new ArgumentNullException("Paramer 'fromUserId' is required");
            }

            if (toGroupId == null)
            {
                throw new ArgumentNullException("Paramer 'toGroupId' is required");
            }

            if (message.getType() == null)
            {
                throw new ArgumentNullException("Paramer 'ObjectName' is required");
            }

            if (message.toString() == null)
            {
                throw new ArgumentNullException("Paramer 'Content' is required");
            }

            String postStr = "";
            postStr += "fromUserId=" + HttpUtility.UrlEncode(fromUserId == null ? "" : fromUserId, Encoding.UTF8) + "&";
            for (int i = 0; i < toGroupId.Length; i++)
            {
                String child = toGroupId[i];
                postStr += "toGroupId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "objectName=" + HttpUtility.UrlEncode(message.getType(), Encoding.UTF8) + "&";
            postStr += "content=" + HttpUtility.UrlEncode(message.toString(), Encoding.UTF8) + "&";
            postStr += "pushContent=" + HttpUtility.UrlEncode(pushContent == null ? "" : pushContent, Encoding.UTF8) + "&";
            postStr += "pushData=" + HttpUtility.UrlEncode(pushData == null ? "" : pushData, Encoding.UTF8) + "&";
            postStr += "isPersisted=" + HttpUtility.UrlEncode(Convert.ToString(isPersisted) == null ? "" : Convert.ToString(isPersisted), Encoding.UTF8) + "&";
            postStr += "isCounted=" + HttpUtility.UrlEncode(Convert.ToString(isCounted) == null ? "" : Convert.ToString(isCounted), Encoding.UTF8) + "&";
            postStr += "isIncludeSender=" + HttpUtility.UrlEncode(Convert.ToString(isIncludeSender) == null ? "" : Convert.ToString(isIncludeSender), Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/message/group/publish.json", postStr, "application/x-www-form-urlencoded"));
        }

        //加入黑名单
        /// <summary>
        /// 加入黑名单
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="blackUserId">被加入黑名单的用户Id</param>
        /// <returns></returns>
        public CodeSuccessReslut AddBlackList(String userId, String blackUserId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (blackUserId == null)
            {
                throw new ArgumentNullException("Paramer 'blackUserId' is required");
            }

            String postStr = "";
            postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&";
            postStr += "blackUserId=" + HttpUtility.UrlEncode(blackUserId == null ? "" : blackUserId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/user/blacklist/add.json", postStr, "application/x-www-form-urlencoded"));
        }

        //移出黑名单
        /// <summary>
        /// 移除黑名单
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="blackUserId">被移除用户的Id</param>
        /// <returns></returns>
        public CodeSuccessReslut RemoveBlackList(String userId, String blackUserId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (blackUserId == null)
            {
                throw new ArgumentNullException("Paramer 'blackUserId' is required");
            }

            String postStr = "";
            postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&";
            postStr += "blackUserId=" + HttpUtility.UrlEncode(blackUserId == null ? "" : blackUserId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/user/blacklist/remove.json", postStr, "application/x-www-form-urlencoded"));
        }

        //添加禁言群成员方法
        /// <summary>
        /// 添加禁言群成员
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="groupId">群组Id</param>
        /// <param name="minute">禁言时长,以分钟为单位,最大值43200分钟</param>
        /// <returns></returns>
        public CodeSuccessReslut AddGagUserGroup(String userId, String groupId, String minute)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            if (minute == null)
            {
                throw new ArgumentNullException("Paramer 'minute' is required");
            }

            String postStr = "";
            postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&";
            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr += "minute=" + HttpUtility.UrlEncode(minute == null ? "" : minute, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/user/gag/add.json", postStr, "application/x-www-form-urlencoded"));
        }

        //移除禁言群成员方法
        /// <summary>
        /// 移除禁言群成员
        /// </summary>
        /// <param name="userId">用户Id,支持多个</param>
        /// <param name="groupId">群组Id</param>
        /// <returns></returns>
        public CodeSuccessReslut RollBackGagUserGroup(String[] userId, String groupId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            String postStr = "";
            for (int i = 0; i < userId.Length; i++)
            {
                String child = userId[i];
                postStr += "userId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&";
            }

            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/user/gag/rollback.json", postStr, "application/x-www-form-urlencoded"));
        }

        //解散群组方法
        /// <summary>
        /// 解散群组方法。(将该群解散,所有用户都无法再接收该群的消息。) 
        /// </summary>
        /// <param name="userId">操作解散群的用户 Id。(必传)</param>
        /// <param name="groupId">要解散的群 Id。(必传)</param>
        /// <returns></returns>
        public CodeSuccessReslut DisMissGroup(String userId, String groupId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException("Paramer 'userId' is required");
            }

            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            String postStr = "";
            postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&";
            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/dismiss.json", postStr, "application/x-www-form-urlencoded"));
        }

        //查询群成员
        /// <summary>
        /// 查询群成员
        /// </summary>
        /// <param name="groupId">查询群Id</param>
        /// <returns></returns>
        public GroupUserQueryReslut QueryUser(String groupId)
        {
            if (groupId == null)
            {
                throw new ArgumentNullException("Paramer 'groupId' is required");
            }

            String postStr = "";
            postStr += "groupId=" + HttpUtility.UrlEncode(groupId == null ? "" : groupId, Encoding.UTF8) + "&";
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));

            return (GroupUserQueryReslut)JsonConvert.DeserializeObject<GroupUserQueryReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/user/query.json", postStr, "application/x-www-form-urlencoded"));
        }

        //消息接口 
        /// <summary>
        /// 发送用户信息接口
        /// </summary>
        public interface SendMessage
        {
            string getType();
            string toString();
        }
      
        //推送消息
        /// <summary>
        /// 推送消息
        /// </summary>
        /// <param name="pushMessage">消息类型内容</param>
        /// <returns></returns>
        public CodeSuccessReslut BroadcastPush(PushMessage pushMessage)
        {
            if (pushMessage == null)
            {
                throw new ArgumentNullException("Paramer 'pushMessage' is required");
            }

            String postStr = "";
            postStr = JsonConvert.SerializeObject(pushMessage);
            return (CodeSuccessReslut)JsonConvert.DeserializeObject<CodeSuccessReslut>(_rongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/push.json", postStr, "application/json"));
        }
    }
}
posted @ 2018-08-14 13:45  net开发人员  阅读(451)  评论(0编辑  收藏  举报