public PhotosController( IUserRepository userRepository, IPhotoRepository photoRepository, INRAKOLogger logger, AmazonS3Tools amazonS3Tools, IMutationActionFactorySelector mutationActionFactorySelector) { _photoRepository = photoRepository; _userRepository = userRepository; _logger = logger; _amazonS3Tools = amazonS3Tools; _mutationActionFactorySelector = mutationActionFactorySelector; }
internal static byte[] PerformMutations(string photoUrl, string extension, IEnumerable <MutationAction> actions, Microsoft.AspNetCore.Http.HttpRequest request, IMutationActionFactorySelector mutationActionFactorySelector) { byte[] fileBytes; using (WebClient webClient = new WebClient()) { if (photoUrl.StartsWith("~")) { photoUrl = $"{request.Scheme}://{request.Host}{photoUrl.TrimStart('~')}"; } byte[] data = webClient.DownloadData(photoUrl); using (MemoryStream mem = new MemoryStream(data)) { MemoryStream ms = new MemoryStream(); using (Image <Rgba32> image = Image.Load <Rgba32>(mem)) { foreach (var action in actions) { mutationActionFactorySelector.GetMutationActionFactory(action).GetMutationAction().Mutate(image); } image.Save(ms, ResolveImageEncoder(extension)); } fileBytes = ms.ToArray(); ms.Close(); } } return(fileBytes); }