public async Task <IActionResult> FindEntryMedia(Guid entryId, [FromHeader(Name = "If-Match")] string ifMatch, [FromHeader(Name = "Content-Disposition")] string contentDisposition) { if (string.IsNullOrWhiteSpace(ifMatch)) { return(NotFound()); } ifMatch = ifMatch.Replace("\"", string.Empty); string fileName = HeaderUtilityHelper.TryGetContentDispositionFileName(contentDisposition); EntryMedia result = string.IsNullOrWhiteSpace(fileName) ? await _mediaSearchStrategy.Find(entryId, ifMatch) : await _mediaSearchStrategy.Find(entryId, ifMatch, fileName); if (result == null) { return(NotFound()); } return(NoContent()); }
public async Task <EntryMedia> PersistArticleEntryMediaAsync(ArticleEntryMediaRequest entryMediaRequest) { if (entryMediaRequest == null) { throw new ArgumentNullException(nameof(entryMediaRequest)); } var searchTask = _searchStrategy.Find(entryMediaRequest.EntryId, entryMediaRequest.MD5Base64Hash); var articleEntryMedia = await _createEntryMediaCoordinator.CreateArticleEntryMedia(entryMediaRequest); if (articleEntryMedia != null) { var existingMediaMatch = await searchTask; return(existingMediaMatch != null ? await StoreBlobUriAndMarkUploadSuccess(articleEntryMedia, StringUtilities.FromBase64(existingMediaMatch.BlobUrl)) : await UploadMediaContent(entryMediaRequest, articleEntryMedia)); } return(articleEntryMedia); }