public ApiResponse TopicReplies(int topicId) { var topic = _topicRepo.Get(topicId); if (topic == null) { return(ApiResponse.NoContent(HttpStatusCode.NotFound)); } var replies = _replyRepo.All() .Where(c => c.TopicId == topicId) .OrderBy(c => c.CreatedAtUtc) .Include(r => r.CreatedByUser) .Include(r => r.CreatedByWeChatAccount) .ToList() .Select(r => new ReplySummary { Id = r.Id, TopicId = topicId, MarkdownContent = r.Content, HtmlContent = r.Content.MdToHtml(), Author = new AuthorSummary { Id = r.CreatedByUser.Id, DisplayName = r.CreatedByUser.DisplayName }, CreatedAt = r.CreatedAtUtc }) .ToList(); return(ApiResponse.ActionResult(replies)); }
public ApiResponse ShowDetail(int id) { var topic = _topicRepo.All() .Where(t => t.Id == id) .Include(t => t.CreatedByUser) .SingleOrDefault(); if (topic == null) { return(ApiResponse.NoContent(HttpStatusCode.NotFound)); } return(ApiResponse.ActionResult(new { Author = new AuthorSummary { Id = topic.CreatedByUser.Id, DisplayName = topic.CreatedByUser.DisplayName }, CreatedAt = topic.CreatedAtUtc, Title = topic.Title, MarkdownContent = topic.Content, HtmlContent = topic.Content.MdToHtml(), ViewCount = topic.ViewCount, ReplyCount = topic.ReplyCount })); }
public async Task <ApiResponse> GetChatyBotInfo() { var statusResponse = await _chatyApiService.GetChatyBotStatus(); return(statusResponse == null ? ApiResponse.NoContent(HttpStatusCode.InternalServerError) : ApiResponse.ActionResult(statusResponse)); }
public ApiResponse GetSettings() { var settings = _settingsRepo.All().FirstOrDefault(); if (settings == null) { return(ApiResponse.NoContent()); } return(ApiResponse.ActionResult(settings)); }
public async Task <ApiResponse> UploadFile(IFormFile file, string category) { var preventedFileNameChars = new[] { '|', '\\', '?', '*', '<', '>', ':', '"', '\'' }; if (string.IsNullOrEmpty(category) || preventedFileNameChars.Any(category.Contains) || file == null || file.Length < 1) { _logger.LogWarning("上传文件失败:空文件,或不正确的参数"); return(ApiResponse.NoContent(HttpStatusCode.BadRequest)); } category = category.Replace("/", _fileSystem.GetDirectorySeparatorChar()); var subPath = string.Concat(category, _fileSystem.GetDirectorySeparatorChar(), Guid.NewGuid().ToString("N")); var storageFile = await _fileSystem.CreateFileAsync(subPath); using (var outputStream = await storageFile.OpenWriteAsync()) { await file.CopyToAsync(outputStream); } var fileRecord = new FileRecord { UploadedBy = HttpContext.DiscussionUser().Id, Size = file.Length, OriginalName = file.FileName, StoragePath = subPath, Category = category, Slug = Guid.NewGuid().ToString("N") }; _fileRepo.Save(fileRecord); // ReSharper disable Mvc.ActionNotResolved // ReSharper disable Mvc.ControllerNotResolved var fileUrl = _fileSystem.SupportGeneratingPublicUrl ? await storageFile.GetPublicUrlAsync(TimeSpan.MaxValue) : Url.Action("DownloadFile", "Common", new { slug = fileRecord.Slug }, Request.Scheme); _logger.LogInformation("上传文件成功:{@UploadedFile}", new { fileRecord.OriginalName, fileRecord.Size, fileRecord.StoragePath, fileRecord.Id }); return(ApiResponse.ActionResult(new { FileId = fileRecord.Id, PublicUrl = fileUrl, })); }
public async Task <ApiResponse> GetWeChatSessionList() { var user = HttpContext.DiscussionUser(); var weChatAccount = _wechatAccountRepo.All().FirstOrDefault(wxa => wxa.UserId == user.Id); if (weChatAccount == null) { _logger.LogWarning("加载对话列表失败:{@ImportAttempt}", new { UserId = user.Id, user.UserName, Result = "未绑定微信号" }); return(ApiResponse.NoContent(HttpStatusCode.BadRequest)); } var messageList = await _chatyApiService.GetMessageList(weChatAccount.WxId); return(messageList == null ? ApiResponse.NoContent(HttpStatusCode.InternalServerError) : ApiResponse.ActionResult(messageList)); }
public ApiResponse ApiObj() { return(ApiResponse.ActionResult(new { field = "foo" })); }