public async Task DeleteFile(string name, FileServerClient client) { var requestPath = client.GetRequestPath(name); var ftpRequest = (FtpWebRequest)WebRequest.Create(requestPath); ftpRequest.Credentials = new NetworkCredential(client.Login, client.Password); ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile; var response = (FtpWebResponse)await ftpRequest.GetResponseAsync(); client.GetResponseCode(response.StatusDescription); }
public FileServerService(IUserRepository userRepository, IUserSharedFileRepository userSharedFileRepository, IFileSharedGroupRepository fileSharedGroupRepository, IFileRepository fileRepository, ISemesterSubjectFileRepository semesterSubjectFileRepository, IUnitOfWork unitOfWork) { _ftpClient = new FtpClient(LogicConstants.FtpServerAddress, LogicConstants.FtpUserLogin, LogicConstants.FtpUserPassword); //_fileServer = new FtpServer(LogicConstants.FtpServerAddress); //_fileServerUser = new FtpUser(LogicConstants.FtpUserLogin, LogicConstants.FtpUserPassword, _fileServer); _userRepository = userRepository; _fileSharedGroupRepository = fileSharedGroupRepository; _userSharedFileRepository = userSharedFileRepository; _fileRepository = fileRepository; _semesterSubjectFileRepository = semesterSubjectFileRepository; _unitOfWork = unitOfWork; }
public async Task UploadFile(File file, FileServerClient client) { var requestPath = client.GetRequestPath(file.Name); var ftpRequest = (FtpWebRequest)WebRequest.Create(requestPath); ftpRequest.Credentials = new NetworkCredential(client.Login, client.Password); ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; ftpRequest.ContentLength = file.Content.Length; using (Stream ftpUploadStream = ftpRequest.GetRequestStream()) { await ftpUploadStream.WriteAsync(file.Content, 0, file.Content.Length); } client.GetResponseCode(((FtpWebResponse)ftpRequest.GetResponse()).StatusDescription); if (client.ServerResponse != ServerResponseCode.FileUploaded) { client.ServerResponse = ServerResponseCode.GlobalError; } }
public void GoToOrCreatePath(string path, FileServerClient client) { var pathDirectories = ConvertDirectoryListingToList(path); for (int i = 1; i < pathDirectories.Count; i++) { ChangeCurrentDirectoryOrCreateDirectory(pathDirectories[i], client); if (client.ServerResponse == ServerResponseCode.FolderCreated || client.ServerResponse == ServerResponseCode.FolderExists) { continue; } client.ServerResponse = ServerResponseCode.GlobalError; return; } client.ServerResponse = ServerResponseCode.CommandsExecutedSuccessfully; }
public string GetNewNameForFile(string oldName, FileServerClient client) { var newName = new StringBuilder(oldName); var nameForCheck = newName.ToString(); while (FileOrDirectoryAlreadyExists(nameForCheck, client)) { var nameComponents = nameForCheck.Split(new[] {"."}, StringSplitOptions.RemoveEmptyEntries);// cos.tam.name_1.txt => cos | tam || name_1 | txt var noneExtension = nameComponents[nameComponents.Length - 2]; // name_1 var noneExtensionDevidedBySeparator = noneExtension.Split(new[] {"_"}, // split name by _ => name | 1 length:2 StringSplitOptions.RemoveEmptyEntries); if (noneExtensionDevidedBySeparator.Length > 1) { int number; int appendPossition = 0; var enumeratorPart = "1"; int.TryParse(noneExtensionDevidedBySeparator.Last(), out number); if (number != 0) { number++; enumeratorPart = number.ToString(); appendPossition++; } newName.Clear(); for (int i = 0; i < nameComponents.Length - 2; i++) { newName.Append(nameComponents[i]); newName.Append("."); } for (int i = 0; i < noneExtensionDevidedBySeparator.Length - appendPossition; i++) { newName.Append(noneExtensionDevidedBySeparator[i]); newName.Append("_"); } newName.Append(enumeratorPart); newName.Append("."); newName.Append(nameComponents.Last()); } else { newName.Clear(); for (int i = 0; i < nameComponents.Length - 2; i++) { newName.Append(nameComponents[i]); newName.Append("."); } for (int i = 0; i < noneExtensionDevidedBySeparator.Length; i++) { newName.Append(noneExtensionDevidedBySeparator[i]); newName.Append("_"); } newName.Append("1"); newName.Append("."); newName.Append(nameComponents.Last()); } nameForCheck = newName.ToString(); } return nameForCheck; }
public bool FileOrDirectoryAlreadyExists(string fileName, FileServerClient client) { var directoriesList = GetDirectoriesList(client); return directoriesList.Contains(fileName); }
private List<string> GetDirectoriesList(FileServerClient client) { var requestPath = client.GetRequestPath(); var ftpRequest = (FtpWebRequest)WebRequest.Create(requestPath); ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; ftpRequest.Credentials = new NetworkCredential(client.Login, client.Password); var response = (FtpWebResponse)ftpRequest.GetResponse(); using (var responseStream = response.GetResponseStream()) { var responseReader = new StreamReader(responseStream); var separator = Environment.NewLine.ToCharArray(); var result = responseReader.ReadToEnd().Split(separator).ToList(); result.RemoveAll(IsEmptyString); return result.ToList(); } }
private void ChangeCurrentDirectoryOrCreateDirectory(string directory, FileServerClient client) { List<string> directories = GetDirectoriesList(client); if (!directories.Contains(directory)) { var requestPath = client.GetRequestPath(directory); var ftpRequest = (FtpWebRequest) WebRequest.Create(requestPath); ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory; ftpRequest.Credentials = new NetworkCredential(client.Login, client.Password); var response = (FtpWebResponse) ftpRequest.GetResponse(); client.GetResponseCode(response.StatusDescription); if (client.ServerResponse == ServerResponseCode.FolderCreated) { client.CurrentLocation += ("/" + directory); } } else { client.CurrentLocation += ("/" + directory); client.ServerResponse = ServerResponseCode.FolderExists; } }
private void ChangeCurrentDirectory(string directory, FileServerClient client) { List<string> directories = GetDirectoriesList(client); if (!directories.Contains(directory)) { client.ServerResponse = ServerResponseCode.FileDoesntExist; } else { client.CurrentLocation += ("/" + directory); client.ServerResponse = ServerResponseCode.CommandsExecutedSuccessfully; } }