public void UpdateContent([FromBody] UpdateContentRequest request) { // TODO content as Stream in the request instead of string using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(request.Content))) { var command = new UpdateFileContentCommand(request.FileId, content: memoryStream); updateFileContentCommandHandler.Handle(command); } }
public async Task UpdateSessionContent(UpdateContentRequest item) { var session = this.GetSession(item.SessionId); if (session != null) { session.UpdateContent(item); await Task.Run(() => { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>(); hubContext.Clients.Group(this.RoomId).UpdateSessionContent(item); }); } }
public async Task UpdateSessionContent(UpdateContentRequest item) { var connectionId = Context.ConnectionId; var instance = BroadcasterManager.GetInstance(); if (!instance.IsBroadcaster(connectionId)) { return; } var info = instance.GetConnectionInfo(connectionId); var roomManager = RoomManager.GetInstance(); var room = roomManager.GetRoomInfo(info.RoomId); if (!room.IsOwnerSession(item.SessionId, connectionId)) { return; } await room.UpdateSessionContent(item); }
public override async Task <Reply> UpdateContent(UpdateContentRequest request, ServerCallContext context) { var reply = new Reply(); var user = await _userService.GetUser(context.GetHttpContext()); if (user == null) { reply.Error = Error.NeedLogin; return(reply); } if (!user.HasWritePermission()) { reply.Error = Error.NoPermission; return(reply); } if (!Guid.TryParse(request.Id, out var id)) { reply.Error = Error.InvalidArguments; return(reply); } var item = await _service.All().Where(i => i.Id == id && i.Type != (int)FileType.Folder) .FirstOrDefaultAsync(); if (item == null) { reply.Error = Error.NoSuchEntity; return(reply); } var originContent = item.Content; item.Content = await _contentService.Add(_resourcesGroup, request.Content); var resourceIds = new HashSet <Guid>(); foreach (var idStr in request.ResourceIds) { if (Guid.TryParse(idStr, out var resourceId)) { resourceIds.Add(resourceId); } } var resources = await _service.All().Where(i => i.ParentId == id && i.Type == (int)FileType.Resource).ToArrayAsync(); var resourceContentToDelete = resources.Where(r => !resourceIds.Contains(r.Id)).ToArray(); await _service.Update(item); if (!string.IsNullOrWhiteSpace(originContent)) { await _contentService.Delete(originContent); } foreach (var tobedeleted in resourceContentToDelete) { try { await _contentService.Delete(tobedeleted.Content); } catch (Exception) { //ignore } } return(reply); }
public async Task UpdateSessionContent(UpdateContentRequest item) { var connectionId = Context.ConnectionId; var instance = BroadcasterManager.GetInstance(); if (!instance.IsBroadcaster(connectionId)) return; var info = instance.GetConnectionInfo(connectionId); var roomManager = RoomManager.GetInstance(); var room = roomManager.GetRoomInfo(info.RoomId); if (!room.IsOwnerSession(item.SessionId, connectionId)) return; await room.UpdateSessionContent(item); }
public void UpdateContent(UpdateContentRequest request) { //var cloned = // (from item in this.Content // select new Line() {IsModified = item.IsModified, Text = item.Text}).ToList(); //var isUpdated = true; var ordered = (from item in request.Data orderby item.Order ascending select item); lock (this.Content) { foreach (var data in ordered) { switch (data.Type) { case UpdateType.Delete: if (this.Content.IsInRange(data.Position, data.Length)) { this.Content.RemoveRange((int)data.Position, (int)data.Length); } break; case UpdateType.Insert: if (data.Content == null) { continue; } if (this.Content.IsInRange(data.Position)) { this.Content.InsertRange((int)data.Position, ParseMultiLineData(data.Content)); } break; case UpdateType.Replace: if (data.Content == null) { continue; } if (this.Content.IsInRange(data.Position, data.Length)) { // まず削除 this.Content.RemoveRange((int)data.Position, (int)data.Length); // 次に挿入 this.Content.InsertRange((int)data.Position, ParseMultiLineData(data.Content)); } break; case UpdateType.RemoveMarker: foreach (var item in this.Content) { item.IsModified = false; } break; case UpdateType.ResetAll: this.Content.Clear(); break; case UpdateType.Append: default: if (data.Content == null) { continue; } this.Content.AddRange(ParseMultiLineData(data.Content)); break; } } } }
public async Task UpdateSessionContent(UpdateContentRequest item) { var session = this.GetSession(item.SessionId); if (session != null) { session.UpdateContent(item); await Task.Run(() => { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>(); hubContext.Clients.Group(this.RoomId).UpdateSessionContent(item); }); } }