public void TestMoveBetweenFileSystems_WhereSourceIsShare() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { using (var streamWriter = new StreamWriter(_fileSystem.File.Create(tempFilePath))) { streamWriter.WriteLine("Test"); } } var moveToFilePath = _fileSystem.Path.Combine(directory, tempFileName); _fileSystem.File.Move(tempFilePath, moveToFilePath); Assert.True(_fileSystem.File.Exists(moveToFilePath)); Assert.False(_fileSystem.File.Exists(tempFilePath)); _fileSystem.File.Delete(moveToFilePath); }
static void Main(string[] args) { var domain = "domain"; var username = "******"; var password = "******"; var sharePath = "valid_unc/smb_share_path"; //ie. \\host\sharename or smb://host/sharename ISMBCredentialProvider credentialProvider = new SMBCredentialProvider(); ISMBClientFactory clientFactory = new SMB2ClientFactory(); IFileSystem fileSystem = new SMBFileSystem(clientFactory, credentialProvider, 65536u); //var path = _fileSystem.Path.Combine(sharePath, "test.txt"); using (var credential = new SMBCredential(domain, username, password, sharePath, credentialProvider)) // NOTE: You can interchange path with sharePath here. { // SMBCredential will parse the share path from path //FileInfo //_fileSystem.FileInfo.FromFileName(path) //DirectoryInfo //_fileSystem.DirectoryInfo.FromDirectoryName(path) //Stream //using (var stream = _fileSystem.File.Open(path, System.IO.FileMode.Open)) //{ //} } }
public void CheckStreamLength() { var tempFileName = $"temp-CheckStreamLength-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.LocalTempDirectory, tempFileName); var byteArray = new byte[100]; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { using (var stream = _fileSystem.File.Create(tempFilePath)) { stream.Write(byteArray, 0, 100); } } var fileInfo = _fileSystem.FileInfo.FromFileName(tempFilePath); var fileSize = fileInfo.Length; var destinationFilePath = _fileSystem.Path.Combine(directory, tempFileName); fileInfo = fileInfo.CopyTo(destinationFilePath); Assert.True(fileInfo.Exists); using (var stream = fileInfo.OpenRead()) { Assert.Equal(stream.Length, fileSize); } _fileSystem.File.Delete(fileInfo.FullName); }
public void CheckDeleteCompletes() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.LocalTempDirectory, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { using (var streamWriter = new StreamWriter(_fileSystem.File.Create(tempFilePath))) { streamWriter.WriteLine("Test"); } } var fileInfo = _fileSystem.FileInfo.FromFileName(tempFilePath); fileInfo = fileInfo.CopyTo(_fileSystem.Path.Combine(directory, tempFileName)); fileInfo.Delete(); _fileSystem.File.Delete(tempFilePath); }
public void TestExistsForDirectory() { var credentials = _fixture.ShareCredentials; var filePath = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); Assert.False(_fileSystem.File.Exists(filePath)); }
public void CheckDirectoryExists() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); Assert.True(_fileSystem.Directory.Exists(directory)); }
public void TestFileOpenOnExistingFile() { var credentials = _fixture.ShareCredentials; var filePath = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Files.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); using var fileStream = _fileSystem.File.Open(filePath, FileMode.Open); fileStream.Close(); }
public void TestExistsForNonExistingFile() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); Assert.False(_fileSystem.File.Exists(tempFilePath)); }
public void DoNotSetDomainNameFromUserNameIfNotNull() { var domain = "domain"; var userName = "******"; var combinedUserName = $"{domain}\\{userName}"; var credential = new SMBCredential(domain, combinedUserName, "password", path, A.Fake<ISMBCredentialProvider>()); Assert.Equal(domain, credential.Domain); Assert.Equal(combinedUserName, credential.UserName); }
public void CanEnumerateFilesRootDirectory() { var credentials = _fixture.ShareCredentials; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); var files = _fileSystem.Directory.EnumerateFiles(_fixture.RootPath, "*").ToList(); Assert.True(files.Count >= 0); //Include 0 in case directory is empty. If an exception is thrown, the test will fail. }
public void CanEnumerateFileSystemEntries() { var credentials = _fixture.ShareCredentials; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); var fileSystemEntries = _fileSystem.Directory.EnumerateFileSystemEntries(_fixture.RootPath).ToList(); Assert.True(fileSystemEntries.Count >= 0); }
public void CanCreateNewDirectoryInfo() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var directoryInfo = _fileSystem.DirectoryInfo.FromDirectoryName(directory); Assert.NotNull(directoryInfo); }
public void CanEnumerateFilesRootDirectory_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; var files = _fileSystem.Directory.EnumerateFiles($"{_fixture.RootPath}{trailingSeparator}", "*").ToList(); Assert.True(files.Count >= 0); //Include 0 in case directory is empty. If an exception is thrown, the test will fail. }
public void CanEnumerateFileSystemEntries_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; var fileSystemEntries = _fileSystem.Directory.EnumerateFileSystemEntries($"{_fixture.RootPath}{trailingSeparator}").ToList(); Assert.True(fileSystemEntries.Count >= 0); }
public void CheckDirectoryExists_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; Assert.True(_fileSystem.Directory.Exists($"{directory}{trailingSeparator}")); }
public void CheckFullNameMatches() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var filePath = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Files.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var fullName = _fileSystem.FileInfo.FromFileName(filePath).FullName; Assert.Equal(filePath, fullName); }
public void CheckFileExists() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var filePath = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Files.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var exists = _fileSystem.FileInfo.FromFileName(filePath).Exists; Assert.True(exists); }
public void CanCreateDirectoryInRootDirectory() { var credentials = _fixture.ShareCredentials; createdTestDirectoryPath = _fileSystem.Path.Combine(_fixture.RootPath, $"test_directory-{DateTime.Now.ToFileTimeUtc()}"); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, createdTestDirectoryPath, _fixture.SMBCredentialProvider); var directoryInfo = _fileSystem.Directory.CreateDirectory(createdTestDirectoryPath); Assert.True(_fileSystem.Directory.Exists(createdTestDirectoryPath)); }
public void CanCreateNewDirectoryInfo_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()) + trailingSeparator; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var directoryInfo = _fileSystem.DirectoryInfo.FromDirectoryName(directory); Assert.NotNull(directoryInfo); }
public void CanCreateDirectoryInRootDirectory_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; createdTestDirectoryPath = _fileSystem.Path.Combine(_fixture.RootPath, $"test_directory-{DateTime.Now.ToFileTimeUtc()}") + trailingSeparator; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, createdTestDirectoryPath, _fixture.SMBCredentialProvider); var directoryInfo = _fileSystem.Directory.CreateDirectory(createdTestDirectoryPath); Assert.True(_fileSystem.Directory.Exists(createdTestDirectoryPath)); }
public void CheckCreateDirectoryForExistingDirectory() { var credentials = _fixture.ShareCredentials; var existingDirectory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, existingDirectory, _fixture.SMBCredentialProvider); var existingDirectoryInfo = _fileSystem.DirectoryInfo.FromDirectoryName(existingDirectory); var directoryInfo = _fileSystem.Directory.CreateDirectory(existingDirectory); Assert.Equal(existingDirectoryInfo.FullName, directoryInfo.FullName); }
public void TestFileOpen_FileModeOpenOrCreate() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); using var fileStream = _fileSystem.File.Open(tempFilePath, FileMode.OpenOrCreate); fileStream.Close(); _fileSystem.File.Delete(tempFilePath); }
public void CheckReplaceWithBackup() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var originalFileTime = DateTime.Now.ToFileTimeUtc(); var originalFilePath = _fileSystem.Path.Combine(directory, $"replace-file-{originalFileTime}.txt"); var originalFileBackupPath = _fileSystem.Path.Combine(directory, $"replace-file-{originalFileTime}.bak"); if (!_fileSystem.File.Exists(originalFilePath)) { using (var streamWriter = new StreamWriter(_fileSystem.File.Create(originalFilePath))) { streamWriter.WriteLine($"{originalFileTime}"); } } var newFileTime = DateTime.Now.ToFileTimeUtc(); var newFilePath = _fileSystem.Path.Combine(_fixture.RootPath, $"replace-file-{newFileTime}.txt"); if (!_fileSystem.File.Exists(newFilePath)) { using (var streamWriter = new StreamWriter(_fileSystem.File.Create(newFilePath))) { streamWriter.WriteLine($"{newFileTime}"); } } var newFileInfo = _fileSystem.FileInfo.FromFileName(newFilePath); newFileInfo = newFileInfo.Replace(originalFilePath, originalFileBackupPath); Assert.Equal(originalFilePath, newFileInfo.FullName); Assert.False(_fileSystem.File.Exists(newFilePath)); Assert.True(_fileSystem.File.Exists(originalFileBackupPath)); using (var streamReader = new StreamReader(_fileSystem.File.OpenRead(newFileInfo.FullName))) { var line = streamReader.ReadLine(); Assert.Equal(newFileTime.ToString(), line); } _fileSystem.File.Delete(originalFilePath); _fileSystem.File.Delete(originalFileBackupPath); }
public void CheckMoveDirectory() { var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var newDirectory = _fileSystem.Path.Combine(directory, $"{DateTime.Now.ToFileTimeUtc()}"); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var createDirectoryPath = _fileSystem.Path.Combine(_fixture.RootPath, $"test-move-local-directory-{DateTime.Now.ToFileTimeUtc()}"); var directoryInfo = _fileSystem.Directory.CreateDirectory(createDirectoryPath); directoryInfo.MoveTo(newDirectory); Assert.True(_fileSystem.Directory.Exists(newDirectory)); _fileSystem.Directory.Delete(newDirectory); }
public void CanSetCreationTime() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { using (var stream = _fileSystem.File.Create(tempFilePath)) { } } _fileSystem.File.SetCreationTime(tempFilePath, DateTime.Now.AddMinutes(10)); _fileSystem.File.Delete(tempFilePath); }
public void CheckMoveDirectory_WithTrailingSeparator() { var credentials = _fixture.ShareCredentials; var trailingSeparator = (_fixture.PathType == PathType.SmbUri || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? '/' : '\\'; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()) + trailingSeparator; var newDirectory = _fileSystem.Path.Combine(directory, $"{DateTime.Now.ToFileTimeUtc()}") + trailingSeparator; using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); var createDirectoryPath = _fileSystem.Path.Combine(_fixture.RootPath, $"test-move-local-directory-{DateTime.Now.ToFileTimeUtc()}"); var directoryInfo = _fileSystem.Directory.CreateDirectory(createDirectoryPath); directoryInfo.MoveTo(newDirectory); Assert.True(_fileSystem.Directory.Exists(newDirectory)); _fileSystem.Directory.Delete(newDirectory); }
public void FileOpsInContext() { var path = "valid_unc/smb_path"; using (var credential = new SMBCredential("domain", "username", "password", path, _credentialProvider)) { //FileInfo //_fileSystem.FileInfo.FromFileName(path) //DirectoryInfo //_fileSystem.DirectoryInfo.FromDirectoryName(path) //Stream //using (var stream = _fileSystem.File.Open(path, System.IO.FileMode.Open)) //{ //} } }
public void TestFileOpenOnCreatedFile() { var tempFileName = $"temp-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var directory = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Directories.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, directory, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { using (var streamWriter = new StreamWriter(_fileSystem.File.Create(tempFilePath))) { streamWriter.WriteLine("Test"); } } using var fileStream = _fileSystem.File.Open(tempFilePath, FileMode.Open); fileStream.Close(); _fileSystem.File.Delete(tempFilePath); }
public void TestCopyWithOverride() { var tempFileName = $"temp-copyto-override-{DateTime.Now.ToFileTimeUtc()}.txt"; var credentials = _fixture.ShareCredentials; var testFilePath = _fileSystem.Path.Combine(_fixture.RootPath, _fixture.Files.First()); var tempFilePath = _fileSystem.Path.Combine(_fixture.RootPath, tempFileName); using var credential = new SMBCredential(credentials.Domain, credentials.Username, credentials.Password, _fixture.RootPath, _fixture.SMBCredentialProvider); if (!_fileSystem.File.Exists(tempFilePath)) { var stream = _fileSystem.File.Create(tempFilePath); stream.Close(); } var testFileInfo = _fileSystem.FileInfo.FromFileName(testFilePath); testFileInfo.CopyTo(tempFilePath, overwrite: true); Assert.True(_fileSystem.File.Exists(tempFilePath)); _fileSystem.File.Delete(tempFilePath); }
public async Task <IActionResult> td([FromBody] DocumentModel[] docs) { if (docs.Length == 0) { return(new NoContentResult()); } SMB2Client client = new SMB2Client(); string site = docs[0].site; string url = _baseurl + "sites/" + site; string listname = docs[0].list; Guid listGuid = new Guid(listname); using (ClientContext cc = AuthHelper.GetClientContextForUsernameAndPassword(url, _username, _password)) try { SMBCredential SMBCredential = new SMBCredential() { username = Environment.GetEnvironmentVariable("smb_username"), password = Environment.GetEnvironmentVariable("smb_password"), domain = Environment.GetEnvironmentVariable("domain"), ipaddr = Environment.GetEnvironmentVariable("ipaddr"), share = Environment.GetEnvironmentVariable("share"), }; var serverAddress = System.Net.IPAddress.Parse(SMBCredential.ipaddr); bool success = client.Connect(serverAddress, SMBTransportType.DirectTCPTransport); NTStatus nts = client.Login(SMBCredential.domain, SMBCredential.username, SMBCredential.password); ISMBFileStore fileStore = client.TreeConnect(SMBCredential.share, out nts); List list = cc.Web.Lists.GetById(listGuid); List <Metadata> fields = SharePointHelper.GetFields(cc, list); //List list = cc.Web.Lists.GetByTitle(listname); for (int i = 0; i < docs.Length; i++) { string filename = docs[i].filename; string file_url = docs[i].file_url; var inputFields = docs[i].fields; var taxFields = docs[i].taxFields; FileCreationInformation newFile = SharePointHelper.GetFileCreationInformation(file_url, filename, SMBCredential, client, nts, fileStore); ///FileCreationInformation newFile = SharePointHelper.GetFileCreationInformation(file_url, filename); if (newFile == null) { _logger.LogError("Failed to upload. Skip: " + filename); continue; } File uploadFile; if (docs[i].foldername == null) { uploadFile = list.RootFolder.Files.Add(newFile); } else { string foldername = docs[i].foldername; string sitecontent = docs[i].sitecontent; //Folder folder = list.RootFolder.Folders.GetByUrl(foldername); Folder folder = SharePointHelper.GetFolder(cc, list, foldername); if (folder == null && taxFields != null) { folder = SharePointHelper.CreateDocumentSetWithTaxonomy(cc, list, sitecontent, foldername, inputFields, fields, taxFields); } else if (folder == null) { folder = SharePointHelper.CreateFolder(cc, list, sitecontent, foldername, inputFields, fields); } //cc.ExecuteQuery(); uploadFile = folder.Files.Add(newFile); } _logger.LogInformation("Upload file: " + newFile.Url); ListItem item = uploadFile.ListItemAllFields; if (taxFields != null) { var clientRuntimeContext = item.Context; for (int t = 0; t < taxFields.Count; t++) { var inputField = taxFields.ElementAt(t); var fieldValue = inputField.Value; var field = list.Fields.GetByInternalNameOrTitle(inputField.Key); cc.Load(field); cc.ExecuteQuery(); var taxKeywordField = clientRuntimeContext.CastTo <TaxonomyField>(field); Guid _id = taxKeywordField.TermSetId; string _termID = TermHelper.GetTermIdByName(cc, fieldValue, _id); TaxonomyFieldValue termValue = new TaxonomyFieldValue() { Label = fieldValue.ToString(), TermGuid = _termID, }; taxKeywordField.SetFieldValueByValue(item, termValue); taxKeywordField.Update(); } } DateTime dtMin = new DateTime(1900, 1, 1); Regex regex = new Regex(@"~t.*"); if (inputFields != null) { foreach (KeyValuePair <string, string> inputField in inputFields) { if (inputField.Value == null || inputField.Value == "") { continue; } string fieldValue = inputField.Value; Match match = regex.Match(fieldValue); Metadata field = fields.Find(x => x.InternalName.Equals(inputField.Key)); if (field.TypeAsString.Equals("User")) { int uid = SharePointHelper.GetUserId(cc, fieldValue); item[inputField.Key] = new FieldUserValue { LookupId = uid }; } //endre hard koding else if (inputField.Key.Equals("Modified_x0020_By") || inputField.Key.Equals("Created_x0020_By") || inputField.Key.Equals("Dokumentansvarlig")) { StringBuilder sb = new StringBuilder("i:0#.f|membership|"); sb.Append(fieldValue); item[inputField.Key] = sb; } else if (match.Success) { fieldValue = fieldValue.Replace("~t", ""); if (DateTime.TryParse(fieldValue, out DateTime dt)) { if (dtMin <= dt) { item[inputField.Key] = dt; _logger.LogInformation("Set field " + inputField.Key + "to " + dt); } else { continue; } } } else { item[inputField.Key] = fieldValue; _logger.LogInformation("Set " + inputField.Key + " to " + fieldValue); } } item.Update(); } try { await cc.ExecuteQueryAsync(); Console.WriteLine("Successfully uploaded " + newFile.Url + " and updated metadata"); } catch (System.Exception e) { _logger.LogError("Failed to update metadata."); Console.WriteLine(e); continue; } } } catch (System.Exception) { throw; } finally { client.Logoff(); client.Disconnect(); } return(new NoContentResult()); }