public async Task<Stream> CreateProgramPackageForExport(string programName)
{
var streamResult = new MemoryStream();
var tempPath = Path.Combine(StorageConstants.TempProgramExportPath, programName);
var programFolderPath = Path.Combine(StorageConstants.ProgramsPath, programName);
var programCodePath = Path.Combine(tempPath, StorageConstants.ProgramCodePath);
using (var storage = StorageSystem.GetStorage())
{
await storage.DeleteDirectoryAsync(tempPath);
await storage.CopyDirectoryAsync(programFolderPath, tempPath);
var programCode = await storage.ReadTextFileAsync(programCodePath);
var converterResult = await CatrobatVersionConverter.
ConvertToXmlVersion(programCode, XmlConstants.TargetOutputVersion);
if (converterResult.Error != CatrobatVersionConverter.VersionConverterStatus.NoError)
return null;
}
var zipService = new ZipService();
await zipService.ZipCatrobatPackage(streamResult, tempPath);
streamResult.Seek(0, SeekOrigin.Begin);
return streamResult;
}