| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- using MediaBrowser.Common.IO;
 
- using MediaBrowser.Controller.Net;
 
- using MediaBrowser.Controller.Themes;
 
- using MediaBrowser.Model.Themes;
 
- using ServiceStack;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.Linq;
 
- namespace MediaBrowser.Api
 
- {
 
-     [Route("/Themes", "GET", Summary = "Gets a list of available themes for an app")]
 
-     public class GetAppThemes : IReturn<List<AppThemeInfo>>
 
-     {
 
-         [ApiMember(Name = "App", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string App { get; set; }
 
-     }
 
-     [Route("/Themes/Info", "GET", Summary = "Gets an app theme")]
 
-     public class GetAppTheme : IReturn<AppTheme>
 
-     {
 
-         [ApiMember(Name = "App", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string App { get; set; }
 
-         [ApiMember(Name = "Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string Name { get; set; }
 
-     }
 
-     [Route("/Themes/Images", "GET", Summary = "Gets an app theme")]
 
-     public class GetAppThemeImage
 
-     {
 
-         [ApiMember(Name = "App", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string App { get; set; }
 
-         [ApiMember(Name = "Theme", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string Theme { get; set; }
 
-         [ApiMember(Name = "Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string Name { get; set; }
 
-         [ApiMember(Name = "CacheTag", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string CacheTag { get; set; }
 
-     }
 
-     [Route("/Themes", "POST", Summary = "Saves a theme")]
 
-     public class SaveTheme : AppTheme, IReturnVoid
 
-     {
 
-     }
 
-     [Authenticated]
 
-     public class AppThemeService : BaseApiService
 
-     {
 
-         private readonly IAppThemeManager _themeManager;
 
-         private readonly IFileSystem _fileSystem;
 
-         public AppThemeService(IAppThemeManager themeManager, IFileSystem fileSystem)
 
-         {
 
-             _themeManager = themeManager;
 
-             _fileSystem = fileSystem;
 
-         }
 
-         public object Get(GetAppThemes request)
 
-         {
 
-             var result = _themeManager.GetThemes(request.App).ToList();
 
-             return ToOptimizedResult(result);
 
-         }
 
-         public object Get(GetAppTheme request)
 
-         {
 
-             var result = _themeManager.GetTheme(request.App, request.Name);
 
-             return ToOptimizedResult(result);
 
-         }
 
-         public void Post(SaveTheme request)
 
-         {
 
-             _themeManager.SaveTheme(request);
 
-         }
 
-         public object Get(GetAppThemeImage request)
 
-         {
 
-             var info = _themeManager.GetImageImageInfo(request.App, request.Theme, request.Name);
 
-             var cacheGuid = new Guid(info.CacheTag);
 
-             TimeSpan? cacheDuration = null;
 
-             if (!string.IsNullOrEmpty(request.CacheTag) && cacheGuid == new Guid(request.CacheTag))
 
-             {
 
-                 cacheDuration = TimeSpan.FromDays(365);
 
-             }
 
-             var contentType = MimeTypes.GetMimeType(info.Path);
 
-             return ResultFactory.GetCachedResult(Request, cacheGuid, null, cacheDuration, () => _fileSystem.GetFileStream(info.Path, FileMode.Open, FileAccess.Read, FileShare.Read), contentType);
 
-         }
 
-     }
 
- }
 
 
  |