protected void SaveMetadata(object metadata, string path) { try { Log.Debug("Saving metadata {@Metadata}", metadata); var dirName = Path.GetDirectoryName(path); FileSystemOperations.EnsureDirectoryExists(dirName); File.WriteAllText(path, JsonConvert.SerializeObject(metadata, Formatting.Indented)); } catch (Exception e) { Log.Error(e, "Cannot save metadata {Metadata} to {Path}", metadata, path); } }
public async Task Execute(string url, string destination) { if (FileSystemOperations.DirectoryExists(destination)) { Log.Warning("{Url} already downloaded. Skipping download.", url); return; } FileSystemOperations.EnsureDirectoryExists(Path.GetDirectoryName(destination)); using (var stream = await downloader.GetStream(url, progress)) using (var file = FileSystemOperations.OpenForWrite(destination)) { stream.Position = 0; await stream.CopyToAsync(file); } }