using System.Collections.Generic;
using System.Threading.Tasks;
public interface IImageDownloader {
public Task<Uri> BuildDirectoryWithImages(IEnumerable<string> images);
public class ImageDownloader : IImageDownloader {
public Task<Uri> BuildDirectoryWithImages(IEnumerable<string> images) {
WebClient webClient = new WebClient();
Func<IEnumerable<string>,string> selector = x => x.First();
var imageName = selector(images).Substring(images.First().LastIndexOf("/") + 1);
dynamic location = "images/imagesDirectory_" + imageName;
DirectoryInfo directoryInfo() { return Directory.CreateDirectory(location); };
Uri directoryLocation = new Uri(directoryInfo().FullName);
foreach (object image in images.ToList().AsEnumerable()) {
imageName = ((string)image).Substring(image.ToString().LastIndexOf("/") + 1);
webClient.DownloadFile(image as string, location + "/" + imageName);
return Task.FromResult(directoryLocation);
internal static class Program {
static readonly IImageDownloader imageDownloader = new ImageDownloader();
private static void Main() {
List<string> enumerable = new List<string> {
"https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png",
"https://spartez.com/site/themes/spartez/img/logos/Platinum-Marketplace-Partner.svg",
"https://wac-cdn-2.atlassian.com/image/upload/f_auto,q_auto/dam/jcr:616e6748-ad8c-48d9-ae93-e49019ed5259/Atlassian-horizontal-blue-rgb.svg?cdnVersion=309"
Console.WriteLine(imageDownloader.BuildDirectoryWithImages(enumerable).GetAwaiter().GetResult());