// ^ ^ ^ ^ = = = = = = = = = = = = = = = = = = public async Task <IActionResult> Suggest(string t) { if (string.IsNullOrEmpty(t)) { CacheControlOverwrite.SetExpiresResponseHeaders(Request); // 4 weeks } var model = await _suggest.SearchSuggest(t); return(Json(model)); }
[ProducesResponseType(500)] // "Thumbnail generation failed" public async Task <IActionResult> DownloadPhoto(string f, bool isThumbnail = true, bool cache = true) { // f = subpath/filepath if (f.Contains("?isthumbnail")) { return(NotFound("please use &isthumbnail = " + "instead of ?isthumbnail= ")); } var fileIndexItem = await _query.GetObjectByFilePathAsync(f); if (fileIndexItem == null) { return(NotFound("not in index " + f)); } if (!_iStorage.ExistFile(fileIndexItem.FilePath)) { return(NotFound($"source image missing {fileIndexItem.FilePath}")); } // Return full image if (!isThumbnail) { if (cache) { CacheControlOverwrite.SetExpiresResponseHeaders(Request); } var fileStream = _iStorage.ReadStream(fileIndexItem.FilePath); // Return the right mime type (enableRangeProcessing = needed for safari and mp4) return(File(fileStream, MimeHelper.GetMimeTypeByFileName(fileIndexItem.FilePath), true)); } if (!_thumbnailStorage.ExistFolder("/")) { return(NotFound("ThumbnailTempFolder not found")); } var data = new ThumbnailSizesExistStatusModel { Small = _thumbnailStorage.ExistFile( ThumbnailNameHelper.Combine(fileIndexItem.FileHash, ThumbnailSize.Small)), Large = _thumbnailStorage.ExistFile( ThumbnailNameHelper.Combine(fileIndexItem.FileHash, ThumbnailSize.Large)), ExtraLarge = _thumbnailStorage.ExistFile( ThumbnailNameHelper.Combine(fileIndexItem.FileHash, ThumbnailSize.ExtraLarge)) }; if (!data.Small || !data.Large || !data.ExtraLarge) { await new Thumbnail(_iStorage, _thumbnailStorage, _logger).CreateThumb(fileIndexItem.FilePath, fileIndexItem.FileHash); if (!_thumbnailStorage.ExistFile( ThumbnailNameHelper.Combine(fileIndexItem.FileHash, ThumbnailSize.Large))) { Response.StatusCode = 500; return(Json("Thumbnail generation failed")); } } var thumbnailFs = _thumbnailStorage.ReadStream( ThumbnailNameHelper.Combine(fileIndexItem.FileHash, ThumbnailSize.Large)); return(File(thumbnailFs, "image/jpeg")); }