/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public Task <object> Get(GetGeneralImage request) { var filename = string.Equals(request.Type, "primary", StringComparison.OrdinalIgnoreCase) ? "folder" : request.Type; var paths = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(_appPaths.GeneralPath, request.Name, filename + i)).ToList(); var path = paths.FirstOrDefault(_fileSystem.FileExists) ?? paths.FirstOrDefault(); return(_resultFactory.GetStaticFileResult(Request, path)); }
public async Task <object> Get(GetShareImage request) { var share = _sharingManager.GetShareInfo(request.Id); if (share == null) { throw new ResourceNotFoundException(); } if (share.ExpirationDate <= DateTime.UtcNow) { throw new ResourceNotFoundException(); } var item = _libraryManager.GetItemById(share.ItemId); var image = item.GetImageInfo(ImageType.Primary, 0); if (image != null) { if (image.IsLocalFile) { return(await _resultFactory.GetStaticFileResult(Request, image.Path).ConfigureAwait(false)); } try { // Don't fail the request over this var updatedImage = await _libraryManager.ConvertImageToLocal(item, image, 0).ConfigureAwait(false); return(await _resultFactory.GetStaticFileResult(Request, updatedImage.Path).ConfigureAwait(false)); } catch { } } // Grab a dlna icon if nothing else is available using (var response = _dlnaManager.GetIcon("logo240.jpg")) { using (var ms = new MemoryStream()) { response.Stream.CopyTo(ms); ms.Position = 0; var bytes = ms.ToArray(); return(ResultFactory.GetResult(bytes, "image/" + response.Format.ToString().ToLower())); } } }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public async Task <object> Get(GetDashboardResource request) { if (!_appConfig.HostWebClient() || DashboardUIPath == null) { throw new ResourceNotFoundException(); } var path = request.ResourceName; var contentType = MimeTypes.GetMimeType(path); var basePath = DashboardUIPath; // Bounce them to the startup wizard if it hasn't been completed yet if (!_serverConfigurationManager.Configuration.IsStartupWizardCompleted && Request.RawUrl.IndexOf("wizard", StringComparison.OrdinalIgnoreCase) == -1 && PackageCreator.IsCoreHtml(path)) { // But don't redirect if an html import is being requested. if (path.IndexOf("bower_components", StringComparison.OrdinalIgnoreCase) == -1) { Request.Response.Redirect("index.html?start=wizard#!/wizardstart.html"); return(null); } } var localizationCulture = GetLocalizationCulture(); // Don't cache if not configured to do so // But always cache images to simulate production if (!_serverConfigurationManager.Configuration.EnableDashboardResponseCaching && !contentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase) && !contentType.StartsWith("font/", StringComparison.OrdinalIgnoreCase)) { var stream = await GetResourceStream(basePath, path, localizationCulture).ConfigureAwait(false); return(_resultFactory.GetResult(Request, stream, contentType)); } TimeSpan?cacheDuration = null; // Cache images unconditionally - updates to image files will require new filename // If there's a version number in the query string we can cache this unconditionally if (contentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase) || contentType.StartsWith("font/", StringComparison.OrdinalIgnoreCase) || !string.IsNullOrEmpty(request.V)) { cacheDuration = TimeSpan.FromDays(365); } var cacheKey = (_appHost.ApplicationVersionString + (localizationCulture ?? string.Empty) + path).GetMD5(); // html gets modified on the fly if (contentType.StartsWith("text/html", StringComparison.OrdinalIgnoreCase)) { return(await _resultFactory.GetStaticResult(Request, cacheKey, null, cacheDuration, contentType, () => GetResourceStream(basePath, path, localizationCulture)).ConfigureAwait(false)); } return(await _resultFactory.GetStaticFileResult(Request, _resourceFileManager.GetResourcePath(basePath, path)).ConfigureAwait(false)); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSwaggerResource request) { var runningDirectory = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); var swaggerDirectory = Path.Combine(runningDirectory, "swagger-ui"); var requestedFile = Path.Combine(swaggerDirectory, request.ResourceName.Replace('/', '\\')); return(HttpResultFactory.GetStaticFileResult(RequestContext, requestedFile)); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public async Task <object> Get(GetDashboardResource request) { if (!_appConfig.HostWebClient() || DashboardUIPath == null) { throw new ResourceNotFoundException(); } var path = request?.ResourceName; var basePath = DashboardUIPath; // Bounce them to the startup wizard if it hasn't been completed yet if (!_serverConfigurationManager.Configuration.IsStartupWizardCompleted && !Request.RawUrl.Contains("wizard", StringComparison.OrdinalIgnoreCase) && Request.RawUrl.Contains("index", StringComparison.OrdinalIgnoreCase)) { Request.Response.Redirect("index.html?start=wizard#!/wizardstart.html"); return(null); } return(await _resultFactory.GetStaticFileResult(Request, _resourceFileManager.GetResourcePath(basePath, path)).ConfigureAwait(false)); }
public Task <object> GetStaticFileResult(IRequest request, string basePath, string virtualPath, string contentType, TimeSpan?cacheDuration) { return(_resultFactory.GetStaticFileResult(request, GetResourcePath(basePath, virtualPath))); }