/// <summary>
        /// 获取上传结果
        /// </summary>
        /// <param name="context"></param>
        /// <param name="isImg"></param>
        /// <returns></returns>
        private static async Task <LayIMCommonResult> GetUploadResult(HttpContext context, bool isImg)
        {
            bool userUseApi = isImg ? LayIMServiceLocator.Options.UIConfig.UseUploadImage : LayIMServiceLocator.Options.UIConfig.UseUploadFile;

            if (userUseApi == false)
            {
                return(LayIMCommonResult.Error("未开启上传接口,非法的请求"));
            }

            var uploadResult = await uploader.Value.Upload(context);

            if (string.IsNullOrEmpty(uploadResult?.FileUrl))
            {
                return(LayIMCommonResult.Error("上传失败"));
            }
            object result;

            if (isImg)
            {
                result = new { src = uploadResult.FileUrl };
            }
            else
            {
                result = new { src = uploadResult.FileUrl, name = uploadResult.FileName };
            }
            return(LayIMCommonResult.Result(result));
        }
Esempio n. 2
0
        /// <summary>
        /// 获取群员列表
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private static async Task <LayIMCommonResult> GetGroupMembers(HttpContext context)
        {
            if (LayIMServiceLocator.Options.UIConfig.UseGroup == false)
            {
                return(LayIMCommonResult.Error("未开启群组接口"));
            }
            context.Request.Query.TryGetValue("id", out var groupId);
            var res = await storage.Value.GetGroupMembers(context.UserId(), groupId);

            return(LayIMCommonResult.Result(res));
        }
        public async Task Dispatch(ILayIMDispatcher dispatcher, HttpContext context)
        {
            string currentUserId = GetCurrentUserId(context);

            if (string.IsNullOrEmpty(currentUserId))
            {
                context.Response.ContentType = "application/json;charset=utf-8;";
                context.Response.StatusCode  = StatusCodes.Status401Unauthorized;
                await context.Response.WriteAsync(JsonUtil.ToJSON(LayIMCommonResult.Error("Unauthorized")));

                return;
            }
            //save current user id in http context
            context.Items.TryAdd(LayIMGlobal.USER_KEY, currentUserId);
            await dispatcher.Dispatch(context);
        }
        /// <summary>
        /// 保存聊天消息
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private static Task <LayIMCommonResult> SaveChatMessage(HttpContext context)
        {
            if (LayIMServiceLocator.Options.OtherConfig.SaveMsgAfterSend == false)
            {
                return(Task.FromResult(LayIMCommonResult.Error("未开启上传接口,非法的请求")));
            }

            storage.Value.SaveMessage(new Models.Base.LayIMMessageModel
            {
                From    = context.UserId(),
                To      = context.Request.Form["to"],
                Type    = context.Request.Form["type"],
                AddTime = DateTime.Now.ToTimestamp(),
                Msg     = context.Request.Form["msg"]
            });
            return(Task.FromResult(LayIMCommonResult.Result(1)));
        }
Esempio n. 5
0
        private static async Task <LayIMCommonResult> GetChatMessages(HttpContext context)
        {
            if (LayIMServiceLocator.Options.UIConfig.UseHistoryPage == false)
            {
                return(LayIMCommonResult.Error("未开启历史消息记录接口"));
            }

            var query = context.Request.Query;

            query.TryGetValue("type", out var type);
            query.TryGetValue("id", out var id);
            query.TryGetValue("stamp", out var stamp);
            query.TryGetValue("page", out var page);

            long.TryParse(stamp, out var timestamp);
            int.TryParse(page, out var pageInt);

            var msgs = await storage.Value.GetChatMessages(context.UserId(), id, type, timestamp, pageInt);

            return(LayIMCommonResult.Result(msgs));
        }
        /// <summary>
        /// 获取初始化数据
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private static async Task <LayIMCommonResult> GetInitData(HttpContext context)
        {
            var res = await storage.Value.GetInitData(context.UserId());

            return(LayIMCommonResult.Result(res));
        }