Example #1
0
        /// <summary>
        /// 拼接文档图片的下载地址
        /// </summary>
        /// <param name="urlPrefix">文档信息中的url前缀</param>
        /// <param name="imgType">文档转换的图片类型</param>
        /// <param name="quality">需要的图片清晰度</param>
        /// <param name="pageNum">图片页码(从1开始计算)</param>
        /// <returns></returns>
        public static string GetPageUrl(string urlPrefix, NIMDocTranscodingImageType imgType, NIMDocTranscodingQuality quality, int pageNum)
        {
            var ptr = DocTransNativeMethods.nim_doctrans_get_page_url(urlPrefix, imgType, quality, pageNum);

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            string url = marshaler.MarshalNativeToManaged(ptr) as string;

            GlobalAPI.FreeBuffer(ptr);
            return(url);
        }
Example #2
0
        /// <summary>
        ///     计算md5
        /// </summary>
        /// <param name="input">需要计算md5的内容</param>
        /// <returns>返回的md5</returns>
        public static string GetMd5(string input)
        {
            var outStrPtr = nim_tool_get_md5(input);

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            var ret = marshaler.MarshalNativeToManaged(outStrPtr) as string;

            GlobalAPI.FreeStringBuffer(outStrPtr);
            return(ret);
        }
Example #3
0
        /// <summary>
        /// 拼接文档源的下载地址
        /// </summary>
        /// <param name="urlPrefix">文档信息中的url前缀</param>
        /// <param name="fileType">文档源类型</param>
        /// <returns></returns>
        public static string GetSourceFileUrl(string urlPrefix, NIMDocTranscodingFileType fileType)
        {
            var ptr = DocTransNativeMethods.nim_doctrans_get_source_file_url(urlPrefix, fileType);

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            string url = marshaler.MarshalNativeToManaged(ptr) as string;

            GlobalAPI.FreeBuffer(ptr);
            return(url);
        }
Example #4
0
        /// <summary>
        ///     获取安装目录(SDK DLL所在的当前目录)
        /// </summary>
        /// <returns>返回的目录路径</returns>
        public static string GetCurModuleDir()
        {
            var outStrPtr = nim_tool_get_cur_module_dir();

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            var ret = marshaler.MarshalNativeToManaged(outStrPtr) as string;

            GlobalAPI.FreeStringBuffer(outStrPtr);
            return(ret);
        }
Example #5
0
        /// <summary>
        ///     获取本地存储路径
        /// </summary>
        /// <returns>返回的目录路径</returns>
        public static string GetLocalAppDataDir()
        {
            var outStrPtr = nim_tool_get_local_appdata_dir();

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            var ret = marshaler.MarshalNativeToManaged(outStrPtr) as string;

            GlobalAPI.FreeStringBuffer(outStrPtr);
            return(ret);
        }
Example #6
0
        /// <summary>
        ///     获取SDK里app account对应的具体类型的app data目录(如图片消息文件存放目录,语音消息文件存放目录等)
        /// </summary>
        /// <param name="appAccount">APP account。如果传入空字符串,则返回结果为空</param>
        /// <param name="appdataType">具体类型的app data。见NIMAppDataType定义</param>
        /// <returns>返回的目录路径(目录可能未生成,需要app自行判断是否已生成)</returns>
        public static string GetUserSpecificAppDataDir(string appAccount, NIMAppDataType appdataType)
        {
            var outStrPtr = nim_tool_get_user_specific_appdata_dir(appAccount, appdataType);

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            var ret = marshaler.MarshalNativeToManaged(outStrPtr) as string;

            GlobalAPI.FreeStringBuffer(outStrPtr);
            return(ret);
        }
Example #7
0
        /// <summary>
        /// 从消息的中获取附件(图片、语音、视频等)的本地路径
        /// </summary>
        /// <param name="msg">消息对象</param>
        /// <returns>消息如果有附件,不管是否已下载,返回附件的本地路径;消息如果没有附件,返回空字符串""</returns>
        public static string GetAttachmentPathFromMsg(NIMIMMessage msg)
        {
            var jsonMsg = msg.Serialize();
            var ptr     = TalkNativeMethods.nim_talk_get_attachment_path_from_msg(jsonMsg);

            NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
            var path = marshaler.MarshalNativeToManaged(ptr) as string;

            GlobalAPI.FreeBuffer(ptr);
            return(path);
        }
Example #8
0
        /// <summary>
        /// 本地查询群信息(同步版本,堵塞NIM内部线程,谨慎使用)
        /// </summary>
        /// <param name="tid"></param>
        /// <returns></returns>
        public static NIMTeamInfo QueryCachedTeamInfo(string tid)
        {
            var ptr = TeamNativeMethods.nim_team_query_team_info_block(tid);

            if (ptr != IntPtr.Zero)
            {
                NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
                var tobj  = marshaler.MarshalNativeToManaged(ptr);
                var tinfo = NIMTeamInfo.Deserialize(tobj.ToString());
                GlobalAPI.FreeStringBuffer(ptr);
                return(tinfo);
            }
            return(null);
        }
Example #9
0
        /// <summary>
        /// 查询(单个)群成员信息(同步版本,堵塞NIM内部线程,谨慎使用)
        /// </summary>
        /// <param name="tid"></param>
        /// <param name="uid"></param>
        /// <returns></returns>
        public static NIMTeamMemberInfo QuerySingleMemberInfo(string tid, string uid)
        {
            NIMTeamMemberInfo info = null;
            var ptr = TeamNativeMethods.nim_team_query_team_member_block(tid, uid);

            if (ptr != IntPtr.Zero)
            {
                NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
                var infoObj = marshaler.MarshalNativeToManaged(ptr);
                info = NIMTeamMemberInfo.Deserialize(infoObj.ToString());
                GlobalAPI.FreeStringBuffer(ptr);
            }
            return(info);
        }
Example #10
0
        /// <summary>
        /// 由其他消息生成转发消息
        /// </summary>
        /// <param name="srcMsg">原始消息</param>
        /// <param name="msgSetting">新的消息属性</param>
        /// <param name="msgId">新的客户端消息id</param>
        /// <param name="sessionId">转发目标</param>
        /// <param name="sessionType">转发目标会话类型</param>
        /// <param name="timetag">消息时间</param>
        /// <returns></returns>
        public static NIMIMMessage CreateRetweetMessage(NIMIMMessage srcMsg, NIMMessageSetting msgSetting, string msgId, string sessionId, Session.NIMSessionType sessionType, long timetag)
        {
            string srcMsgJson  = srcMsg.Serialize();
            string settingJson = string.Empty;

            if (msgSetting != null)
            {
                settingJson = msgSetting.Serialize();
            }
            var newMsgPtr = TalkNativeMethods.nim_talk_create_retweet_msg(srcMsgJson, msgId, sessionType, sessionId, settingJson, timetag);

            if (newMsgPtr != IntPtr.Zero)
            {
                NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();
                var newMsg     = marshaler.MarshalNativeToManaged(newMsgPtr);
                var newMsgJson = newMsg.ToString();
                var dstMsg     = MessageFactory.CreateMessage(newMsgJson);
                GlobalAPI.FreeStringBuffer(newMsgPtr);
                return(dstMsg);
            }
            return(null);
        }