public async void RecoverFilesMergeDecryptSeparateFolder(List <string> cidArray) { //We connect var ipfs = new IpfsClient(ipfsServer); if (cidArray.Count >= 0) { // First need to get the right folder. For ease of test, the part of the file are downloaded // on a folder filename-extension, i.e. test.txt to blockget/test-txt string fileName = Path.GetFileNameWithoutExtension(cidArray[0]); string extensionPt = Path.GetExtension(cidArray[0]); //string extension = extensionPt.Skip(1).ToArray(); string extension = extensionPt.Remove(0, 1); string inputFolder = Globals.BLOCKGET_FILE_FOLDER + fileName + "-" + extension + "\\"; string[] SplittedFilesArray = new string[Globals.SPLIT_NB]; string baseFileName = Path.GetFileNameWithoutExtension(cidArray[0]); int i = 0; foreach (string s in cidArray.Skip(1)) // We want to skip the first (contre intuitive, not 0) { try { //SplittedFilesArray[i] = inputFolder + baseFileName + "." + // i.ToString().PadLeft(5, Convert.ToChar("0")) + extensionPt + ".tmp"; SplittedFilesArray[i] = inputFolder + baseFileName + extensionPt + ".aes." + i.ToString().PadLeft(5, Convert.ToChar("0")) + ".tmp"; //We download bytes => File Stream result = await ipfs.FileSystem.ReadFileAsync(s); //We want to save them in the SaveFolder + cidArray folder //Could also try: Stream result = await ipfs.FileSystem.ReadFileAsync(s).Result; using (FileStream DestinationStream = File.Create(SplittedFilesArray[i])) //TODO ERROR: System.IO.DirectoryNotFoundException: 'Could not find a part of the path 'C:\Blockget\ifmalesuperfherodresedlikewomen-jpg\ifmalesuperfherodresedlikewomen.jpg.aes.00000.tmp'.' { await result.CopyToAsync(DestinationStream); } i++; } //System.Net.Http.HttpRequestException: 'invalid path "": path does not begin with '/'' catch (HttpRequestException e) { Console.WriteLine(e.Message); Console.WriteLine("FAIL! Don't forget to run IPFS on your computer"); break; } } // We merge Split.MergeFile(inputFolder); //We decrypt //string pathEncryptedFile = inputFolder + fileName + ".aes"; //Globals.BLOCKGET_FILE_FOLDER + "\\" + cidArray[0]; string pathEncryptedFile = inputFolder + baseFileName + extensionPt + ".aes"; Encryption.DecryptFile(pathEncryptedFile); } else { Console.WriteLine("Problem this entry is empty"); } }
//Split and Merge Encrypted Text public static void testSplitMergeEncryptedText() { string encryptedFile = Encryption.EncryptTextFile("C:\\Blockget\\test.txt"); Console.WriteLine("TEST: Encrypted file: {0}", encryptedFile); string[] splittedFiles = Split.SplitFile("C:\\Blockget\\test.txt.aes"); foreach (string s in splittedFiles) { Console.WriteLine("TEST: Splitted Files paths are {0}", s); } string outputMerge = Split.MergeFile("C:\\Blockget\\test-txt\\"); Console.WriteLine("TEST: Output of merged file is {0}", outputMerge); string resultDecrypt = Encryption.DecryptTextFile("C:\\Blockget\\test-txt\\test.txt.aes"); Console.WriteLine("TEST: Decryped file is {0}", resultDecrypt); }
/// <summary> /// Recover the files from the array of CID and filename: download, merge and decrypt /// </summary> /// <param name="cidArray"></param> private async void RecoverFilesMergeDecrypt(string[] cidArray) { //We connect var ipfs = new IpfsClient(ipfsServer); foreach (string s in cidArray.Skip(0)) { //We download string result = await ipfs.FileSystem.ReadAllTextAsync(s); //We want to save them in the SaveFolder + cidArray folder } // We merge string inputFolder = Globals.BLOCKGET_FILE_FOLDER + "\\" + cidArray[0] + "\\"; Split.MergeFile(inputFolder); //We decrypt string pathFile = Globals.BLOCKGET_FILE_FOLDER + "\\" + cidArray[0]; Encryption.DecryptFile(pathFile + ".aes"); }
private async void RecoverTextMergeDecrypt(List <string> cidArray) { //We connect var ipfs = new IpfsClient(ipfsServer); if (cidArray.Count >= 0) { // First need to get the right folder. For ease of test, the part of the file are downloaded // on a folder filename-extension, i.e. test.txt to blockget/test-txt string fileName = Path.GetFileNameWithoutExtension(cidArray[0]); string extensionPt = Path.GetExtension(cidArray[0]); string extension = extensionPt.Remove(0, 1); string inputFolder = Globals.BLOCKGET_FILE_FOLDER + fileName + "-" + extension + "\\"; string[] SplittedFilesArray = new string[Globals.SPLIT_NB]; string baseFileName = Path.GetFileNameWithoutExtension(cidArray[0]); int i = 0; foreach (string s in cidArray.Skip(1)) // We want to skip the first (contre intuitive, not 0) { SplittedFilesArray[i] = inputFolder + baseFileName + extensionPt + ".aes." + i.ToString().PadLeft(5, Convert.ToChar("0")) + ".tmp"; //We download text => string string result = await ipfs.FileSystem.ReadAllTextAsync(s); System.IO.File.WriteAllText(SplittedFilesArray[i], result); i++; } // We merge Split.MergeFile(inputFolder); //We decrypt string pathEncryptedFile = inputFolder + baseFileName + extensionPt + ".aes"; Encryption.DecryptFileSeparateFolder(pathEncryptedFile); } else { Console.WriteLine("Problem this entry is empty"); } }