Пример #1
0
        public Response RenameFile(RenameFileRequest request)
        {
            var fileTransferResponse = CheckFileRequest(request);

            if (fileTransferResponse.ResponseStatus != true)
            {
                return(fileTransferResponse);
            }

            var path    = GetFullFilePath(request.FileName);
            var newPath = GetFullFilePath(request.NewFileName);

            try
            {
                Logger.Logger.Log($"About to rename {path} to {newPath}");
                _fileService.Rename(path, newPath);
                return(CreateResponse(request.FileName, $"File {path} was renamed to {newPath}", true));
            }
            catch (Exception ex)
            {
                Logger.Logger.Log(
                    $"Exception while removing {path}, exception is {ex.Message}, inner exception is {ex.InnerException}");
                return(CreateResponse(request.FileName, ex.Message, false));
            }
        }
Пример #2
0
        public override async Task <WopiResponse> RenameFile(RenameFileRequest renameFileRequest)
        {
            var userId = WopiSecurity.GetIdentityNameFromToken(renameFileRequest.AccessToken);

            var wopiFileRepository = new WopiFileRepository();
            var response           = await wopiFileRepository.RenameFile(renameFileRequest.ResourceId, userId, renameFileRequest.Lock, renameFileRequest.RequestedName);

            if (response.Item1 == HttpStatusCode.NotFound)
            {
                return(renameFileRequest.ResponseNotFound());
            }
            else if (response.Item1 == HttpStatusCode.Conflict)
            {
                return(renameFileRequest.ResponseLockConflict(response.Item2));
            }
            else if (response.Item1 == HttpStatusCode.BadRequest)
            {
                return(renameFileRequest.ResponseBadRequest(response.Item2));
            }
            else if (response.Item1 == HttpStatusCode.OK)
            {
                return(renameFileRequest.ResponseOK(response.Item2));
            }
            else
            {
                return(renameFileRequest.ResponseServerError(string.Format("Unknown HTTPStatusCode from WopiFileRepository.RenameFile: {0}", response.Item1)));
            }
        }
Пример #3
0
        public Response RenameFile(RenameFileRequest renameFileRequest)
        {
            var service  = CreateChanel();
            var response = service.RenameFile(renameFileRequest);

            return(response);
        }
Пример #4
0
        /// <summary>
        ///     Rename the given file
        /// </summary>
        /// <param name="libraryId">The id of the library the file is in</param>
        /// <param name="filePath">The full path of the file</param>
        /// <param name="newName">The new name of the file</param>
        /// <returns>A value which indicates if the action was successful</returns>
        public async Task <bool> RenameFile(string libraryId, string filePath, string newName)
        {
            libraryId.ThrowOnNull(nameof(libraryId));
            filePath.ThrowOnNull(nameof(filePath));
            newName.ThrowOnNull(nameof(newName));

            var request = new RenameFileRequest(AuthToken, libraryId, filePath, newName);

            return(await _webConnection.SendRequestAsync(ServerUri, request));
        }
Пример #5
0
        private void SendFileData(FileActionData data)
        {
            Logger.Logger.Log($"About to send FileData = {data}");
            try
            {
                Response response;
                switch (data.FileActionType)
                {
                case FileActionType.Create:
                {
                    var createRequest = GetCreateFileRequest(data);
                    response = _receiverService.CreateFile(createRequest);
                    break;
                }

                case FileActionType.Update:
                {
                    var updateRequest = GetCreateFileRequest(data);
                    response = _receiverService.UpdateFile(updateRequest);
                    break;
                }

                case FileActionType.Delete:
                {
                    var deleteRequest = new FileRequestBase
                    {
                        FileName = data.FileName,
                    };
                    response = _receiverService.DeleteFile(deleteRequest);
                    break;
                }

                case FileActionType.ChangeName:
                {
                    var renameRequest = new RenameFileRequest
                    {
                        FileName    = data.FileName,
                        NewFileName = data.NewFileName
                    };
                    response = _receiverService.RenameFile(renameRequest);
                    break;
                }

                default:
                    return;
                }

                Logger.Logger.Log($"FileData = {data} has been sent with response = {response}");
            }
            catch (Exception ex)
            {
                Logger.Logger.Log(
                    $"Exception with FileData = {data}, exception is {ex.Message}, inner exception is {ex.InnerException}");
            }
        }
 public HttpResponseMessage RenameFile(RenameFileRequest request)
 {
     try
     {
         var itemViewModel = DigitalAssetsController.RenameFile(request.FileId, request.NewFileName);
         return(Request.CreateResponse(HttpStatusCode.OK, itemViewModel));
     }
     catch (FileAlreadyExistsException ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex));
     }
 }
Пример #7
0
        public override async Task <WopiResponse> RenameFile(RenameFileRequest renameFileRequest)
        {
            WopiResponse wopiResponse = null;
            var          file         = DocumentDBRepository <DetailedFileModel> .GetItem("Files", i => i.id.ToString() == renameFileRequest.ResourceId);

            // Check for null file
            if (file != null)
            {
                // Make sure the X-WOPI-RequestedName header is included
                if (renameFileRequest.RequestedName != null)
                {
                    // Ensure the file isn't locked
                    if (String.IsNullOrEmpty(file.LockValue) ||
                        (file.LockExpires != null &&
                         file.LockExpires < DateTime.Now))
                    {
                        // Update the file with a LockValue and LockExpiration
                        file.LockValue    = renameFileRequest.Lock;
                        file.LockExpires  = DateTime.Now.AddMinutes(30);
                        file.BaseFileName = renameFileRequest.RequestedName;
                        await DocumentDBRepository <FileModel> .UpdateItemAsync("Files", file.id.ToString(), (FileModel)file);

                        // Return success 200
                        wopiResponse = renameFileRequest.ResponseOK(renameFileRequest.RequestedName);
                    }
                    else if (file.LockValue == renameFileRequest.Lock)
                    {
                        // File lock matches existing lock, so we can change the name
                        file.LockExpires  = DateTime.Now.AddMinutes(30);
                        file.BaseFileName = renameFileRequest.RequestedName;
                        await DocumentDBRepository <FileModel> .UpdateItemAsync("Files", file.id.ToString(), (FileModel)file);

                        // Return success 200
                        wopiResponse = renameFileRequest.ResponseOK(renameFileRequest.RequestedName);
                    }
                    else
                    {
                        // The file is locked by someone else...return mismatch
                        wopiResponse = renameFileRequest.ResponseLockConflict(file.LockValue, String.Format("File locked by {0}", file.LockValue));
                    }
                }
                else
                {
                    // X-WOPI-RequestedName header wasn't included
                    wopiResponse = renameFileRequest.ResponseBadRequest("X-WOPI-RequestedName header wasn't included in request");
                }
            }
            else
            {
                wopiResponse = renameFileRequest.ResponseNotFound();
            }
            return(wopiResponse);
        }
Пример #8
0
        private static Response CheckFileRequest(RenameFileRequest file)
        {
            var baseStatus = CheckFileRequest((FileRequestBase)file);

            if (baseStatus.ResponseStatus == false)
            {
                return(baseStatus);
            }

            return(!string.IsNullOrWhiteSpace(file.NewFileName)
                ? CreateResponse(file.FileName, "File Is Valid", true)
                : CreateResponse(file.FileName, "New file name can not be null", false));
        }
        public JsonResult RenameFile(RenameFileRequest body)
        {
            _log.WriteInfo("开始请求接口【file/rename】,请求参数:" + JsonConvert.SerializeObject(body));
            WPSBaseModel result = new WPSBaseModel();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);

                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    #region 在测试环境暂时不要将此块房开,由于上面获取文件名是固定的,成功更改文件成功后,不能打开文件
                    //var fileName = request.FileId == "1000" ? "TestFile.docx" : (request.FileId == "1001" ? "TestFile_v1.docx" : "TestFile_v2.docx");

                    ////原文件的物理路径
                    //string filePath = Server.MapPath($"/Files/{fileName}");

                    //// 移动到的新位置的物理路径(如果还是当前文件夹, 则会重命名文件)
                    //string fileTargetPath = Server.MapPath($"/Files/{body.name}");

                    ////判断到的新地址是否存在重命名文件
                    //if (System.IO.File.Exists(fileTargetPath))
                    //{
                    //    result.code = (int)Enumerator.ErrorCode.文件已存在;
                    //    result.message = EnumExtension.GetDescription(Enumerator.ErrorCode.文件已存在);
                    //}
                    //System.IO.File.Move(filePath, fileTargetPath);//2个文件在不同目录则是移动,如果在相同目录下则是重命名
                    #endregion
                    result.code = (int)Enumerator.ErrorCode.OK;
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }
            _log.WriteInfo("请求接口【file/rename】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
Пример #10
0
        public Task <WPSBaseModel> RenameFile(RenameFileRequest body)
        {
            return(Task.Run(() =>
            {
                var request = FilterRequestForWPS(Request);
                if (!request.Status)
                {
                    return new WPSBaseModel {
                        code = request.code, msg = request.msg
                    };
                }

                var result = new WPSBaseModel
                {
                    code = 200,
                    msg = "success"
                };
                return result;
            }));
        }
 public abstract Task <WopiResponse> RenameFile(RenameFileRequest renameFileRequest);
Пример #12
0
        public HttpResponseMessage RenameFile(RenameFileRequest request)
        {
            var itemViewModel = DigitalAssetsController.RenameFile(request.FileId, request.NewFileName);

            return(Request.CreateResponse(HttpStatusCode.OK, itemViewModel));
        }
Пример #13
0
 /// <summary>
 /// Rename a file or folder
 /// </summary>
 public async Task RenameFile(RenameFileRequest request)
 {
     await _apiClient.ExecutePostAsync("files/rename", request);
 }