mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 02:27:18 -04:00 
			
		
		
		
	Move ItemRefreshService.cs to Jellyfin.Api
This commit is contained in:
		
							parent
							
								
									0011e8df47
								
							
						
					
					
						commit
						276750f310
					
				
							
								
								
									
										89
									
								
								Jellyfin.Api/Controllers/ItemRefreshController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								Jellyfin.Api/Controllers/ItemRefreshController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | |||||||
|  | #nullable enable | ||||||
|  | #pragma warning disable CA1801 | ||||||
|  | 
 | ||||||
|  | using System.ComponentModel; | ||||||
|  | using MediaBrowser.Controller.Library; | ||||||
|  | using MediaBrowser.Controller.Providers; | ||||||
|  | using MediaBrowser.Model.IO; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Http; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | 
 | ||||||
|  | namespace Jellyfin.Api.Controllers | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// Item Refresh Controller. | ||||||
|  |     /// </summary> | ||||||
|  |     /// [Authenticated] | ||||||
|  |     [Route("/Items")] | ||||||
|  |     [Authorize] | ||||||
|  |     public class ItemRefreshController : BaseJellyfinApiController | ||||||
|  |     { | ||||||
|  |         private readonly ILibraryManager _libraryManager; | ||||||
|  |         private readonly IProviderManager _providerManager; | ||||||
|  |         private readonly IFileSystem _fileSystem; | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// Initializes a new instance of the <see cref="ItemRefreshController"/> class. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="libraryManager">Instance of <see cref="ILibraryManager"/> interface.</param> | ||||||
|  |         /// <param name="providerManager">Instance of <see cref="IProviderManager"/> interface.</param> | ||||||
|  |         /// <param name="fileSystem">Instance of <see cref="IFileSystem"/> interface.</param> | ||||||
|  |         public ItemRefreshController( | ||||||
|  |             ILibraryManager libraryManager, | ||||||
|  |             IProviderManager providerManager, | ||||||
|  |             IFileSystem fileSystem) | ||||||
|  |         { | ||||||
|  |             _libraryManager = libraryManager; | ||||||
|  |             _providerManager = providerManager; | ||||||
|  |             _fileSystem = fileSystem; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// Refreshes metadata for an item. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="id">Item id.</param> | ||||||
|  |         /// <param name="metadataRefreshMode">(Optional) Specifies the metadata refresh mode.</param> | ||||||
|  |         /// <param name="imageRefreshMode">(Optional) Specifies the image refresh mode.</param> | ||||||
|  |         /// <param name="replaceAllMetadata">(Optional) Determines if metadata should be replaced. Only applicable if mode is FullRefresh.</param> | ||||||
|  |         /// <param name="replaceAllImages">(Optional) Determines if images should be replaced. Only applicable if mode is FullRefresh.</param> | ||||||
|  |         /// <param name="recursive">(Unused) Indicates if the refresh should occur recursively.</param> | ||||||
|  |         /// <response code="200">Item metadata refresh queued.</response> | ||||||
|  |         /// <response code="404">Item to refresh not found.</response> | ||||||
|  |         /// <returns>An <see cref="OkResult"/> on success, or a <see cref="NotFoundResult"/> if the item could not be found.</returns> | ||||||
|  |         [HttpPost("{Id}/Refresh")] | ||||||
|  |         [Description("Refreshes metadata for an item.")] | ||||||
|  |         [ProducesResponseType(StatusCodes.Status200OK)] | ||||||
|  |         [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||||
|  |         public ActionResult Post( | ||||||
|  |             [FromRoute] string id, | ||||||
|  |             [FromQuery] MetadataRefreshMode metadataRefreshMode = MetadataRefreshMode.None, | ||||||
|  |             [FromQuery] MetadataRefreshMode imageRefreshMode = MetadataRefreshMode.None, | ||||||
|  |             [FromQuery] bool replaceAllMetadata = false, | ||||||
|  |             [FromQuery] bool replaceAllImages = false, | ||||||
|  |             [FromQuery] bool recursive = false) | ||||||
|  |         { | ||||||
|  |             var item = _libraryManager.GetItemById(id); | ||||||
|  |             if (item == null) | ||||||
|  |             { | ||||||
|  |                 return NotFound(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var refreshOptions = new MetadataRefreshOptions(new DirectoryService(_fileSystem)) | ||||||
|  |             { | ||||||
|  |                 MetadataRefreshMode = metadataRefreshMode, | ||||||
|  |                 ImageRefreshMode = imageRefreshMode, | ||||||
|  |                 ReplaceAllImages = replaceAllImages, | ||||||
|  |                 ReplaceAllMetadata = replaceAllMetadata, | ||||||
|  |                 ForceSave = metadataRefreshMode == MetadataRefreshMode.FullRefresh | ||||||
|  |                     || imageRefreshMode == MetadataRefreshMode.FullRefresh | ||||||
|  |                     || replaceAllImages | ||||||
|  |                     || replaceAllMetadata, | ||||||
|  |                 IsAutomated = false | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             _providerManager.QueueRefresh(item.Id, refreshOptions, RefreshPriority.High); | ||||||
|  |             return Ok(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,83 +0,0 @@ | |||||||
| using MediaBrowser.Controller.Configuration; |  | ||||||
| using MediaBrowser.Controller.Library; |  | ||||||
| using MediaBrowser.Controller.Net; |  | ||||||
| using MediaBrowser.Controller.Providers; |  | ||||||
| using MediaBrowser.Model.IO; |  | ||||||
| using MediaBrowser.Model.Services; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| 
 |  | ||||||
| namespace MediaBrowser.Api |  | ||||||
| { |  | ||||||
|     public class BaseRefreshRequest : IReturnVoid |  | ||||||
|     { |  | ||||||
|         [ApiMember(Name = "MetadataRefreshMode", Description = "Specifies the metadata refresh mode", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] |  | ||||||
|         public MetadataRefreshMode MetadataRefreshMode { get; set; } |  | ||||||
| 
 |  | ||||||
|         [ApiMember(Name = "ImageRefreshMode", Description = "Specifies the image refresh mode", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] |  | ||||||
|         public MetadataRefreshMode ImageRefreshMode { get; set; } |  | ||||||
| 
 |  | ||||||
|         [ApiMember(Name = "ReplaceAllMetadata", Description = "Determines if metadata should be replaced. Only applicable if mode is FullRefresh", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] |  | ||||||
|         public bool ReplaceAllMetadata { get; set; } |  | ||||||
| 
 |  | ||||||
|         [ApiMember(Name = "ReplaceAllImages", Description = "Determines if images should be replaced. Only applicable if mode is FullRefresh", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] |  | ||||||
|         public bool ReplaceAllImages { get; set; } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     [Route("/Items/{Id}/Refresh", "POST", Summary = "Refreshes metadata for an item")] |  | ||||||
|     public class RefreshItem : BaseRefreshRequest |  | ||||||
|     { |  | ||||||
|         [ApiMember(Name = "Recursive", Description = "Indicates if the refresh should occur recursively.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "POST")] |  | ||||||
|         public bool Recursive { get; set; } |  | ||||||
| 
 |  | ||||||
|         [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] |  | ||||||
|         public string Id { get; set; } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     [Authenticated] |  | ||||||
|     public class ItemRefreshService : BaseApiService |  | ||||||
|     { |  | ||||||
|         private readonly ILibraryManager _libraryManager; |  | ||||||
|         private readonly IProviderManager _providerManager; |  | ||||||
|         private readonly IFileSystem _fileSystem; |  | ||||||
| 
 |  | ||||||
|         public ItemRefreshService( |  | ||||||
|             ILogger<ItemRefreshService> logger, |  | ||||||
|             IServerConfigurationManager serverConfigurationManager, |  | ||||||
|             IHttpResultFactory httpResultFactory, |  | ||||||
|             ILibraryManager libraryManager, |  | ||||||
|             IProviderManager providerManager, |  | ||||||
|             IFileSystem fileSystem) |  | ||||||
|             : base(logger, serverConfigurationManager, httpResultFactory) |  | ||||||
|         { |  | ||||||
|             _libraryManager = libraryManager; |  | ||||||
|             _providerManager = providerManager; |  | ||||||
|             _fileSystem = fileSystem; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Posts the specified request. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="request">The request.</param> |  | ||||||
|         public void Post(RefreshItem request) |  | ||||||
|         { |  | ||||||
|             var item = _libraryManager.GetItemById(request.Id); |  | ||||||
| 
 |  | ||||||
|             var options = GetRefreshOptions(request); |  | ||||||
| 
 |  | ||||||
|             _providerManager.QueueRefresh(item.Id, options, RefreshPriority.High); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         private MetadataRefreshOptions GetRefreshOptions(RefreshItem request) |  | ||||||
|         { |  | ||||||
|             return new MetadataRefreshOptions(new DirectoryService(_fileSystem)) |  | ||||||
|             { |  | ||||||
|                 MetadataRefreshMode = request.MetadataRefreshMode, |  | ||||||
|                 ImageRefreshMode = request.ImageRefreshMode, |  | ||||||
|                 ReplaceAllImages = request.ReplaceAllImages, |  | ||||||
|                 ReplaceAllMetadata = request.ReplaceAllMetadata, |  | ||||||
|                 ForceSave = request.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || request.ImageRefreshMode == MetadataRefreshMode.FullRefresh || request.ReplaceAllImages || request.ReplaceAllMetadata, |  | ||||||
|                 IsAutomated = false |  | ||||||
|             }; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user