public void RunCommand(string server, string vault, string username, string password, string file, Int32 fileversion, string outputfile, Boolean printerror) { SecurityService secSrv = new SecurityService(); secSrv.SecurityHeaderValue = new VaultFileRetrieve.Security.SecurityHeader(); secSrv.Url = "http://" + server + "/AutodeskDM/Services/SecurityService.asmx"; try { secSrv.SignIn(username, password, vault); DocumentService docSrv = new DocumentService(); docSrv.SecurityHeaderValue = new VaultFileRetrieve.Document.SecurityHeader(); docSrv.SecurityHeaderValue.UserId = secSrv.SecurityHeaderValue.UserId; docSrv.SecurityHeaderValue.Ticket = secSrv.SecurityHeaderValue.Ticket; docSrv.Url = "http://" + server + "/AutodeskDM/Services/DocumentService.asmx"; Folder root = docSrv.GetFolderRoot(); string filepath = System.IO.Path.GetDirectoryName(file); filepath = filepath.Replace("\\", "/"); Folder filefolder = docSrv.GetFolderByPath(filepath); GetFilesInFolder(filefolder, docSrv, file, fileversion, outputfile); } catch (Exception ex) { Console.WriteLine("Error retrieving file"); if (printerror) { Console.WriteLine(ex.ToString()); } return; } }
private void GetFilesInFolder(Folder parentFolder, DocumentService docSvc, string filepath, Int32 fileversion, string outputfile) { File[] files = docSvc.GetLatestFilesByFolderId(parentFolder.Id, false); if (files != null && files.Length > 0) { foreach (File file in files) { if (parentFolder.FullName + "/" + file.Name == filepath) { for (int vernum = file.VerNum; vernum >= 1; vernum--) { File verFile = docSvc.GetFileByVersion(file.MasterId, vernum); if (vernum == fileversion) { Console.WriteLine(String.Format("{0,12:0,0}", verFile.FileSize) + " " + parentFolder.FullName + "/" + verFile.Name + " (Version " + vernum.ToString() + ")"); Console.WriteLine("Writing to " + outputfile); byte[] bytes; for (int counter = 0; counter < outputfile.Length; counter++) { if (outputfile.Substring(counter,1) == "\\") { try { System.IO.Directory.CreateDirectory(outputfile.Substring(0,counter)); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.WriteLine(outputfile.Substring(0, counter)); } } } string fileName = docSvc.DownloadFile(verFile.Id, true, out bytes); System.IO.File.WriteAllBytes(outputfile, bytes); } } } } } }