|  | @@ -6,6 +6,7 @@ using MediaBrowser.Controller.Localization;
 | 
	
		
			
				|  |  |  using MediaBrowser.Controller.Net;
 | 
	
		
			
				|  |  |  using MediaBrowser.Controller.Providers;
 | 
	
		
			
				|  |  |  using MediaBrowser.Model.Dto;
 | 
	
		
			
				|  |  | +using MediaBrowser.Model.Entities;
 | 
	
		
			
				|  |  |  using ServiceStack;
 | 
	
		
			
				|  |  |  using System;
 | 
	
		
			
				|  |  |  using System.Collections.Generic;
 | 
	
	
		
			
				|  | @@ -28,6 +29,16 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |          [ApiMember(Name = "ItemId", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
 | 
	
		
			
				|  |  |          public string ItemId { get; set; }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [Route("/Items/{ItemId}/ContentType", "POST", Summary = "Updates an item's content type")]
 | 
	
		
			
				|  |  | +    public class UpdateItemContentType : IReturnVoid
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        [ApiMember(Name = "ItemId", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
 | 
	
		
			
				|  |  | +        public string ItemId { get; set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [ApiMember(Name = "ContentType", Description = "The content type of the item", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
 | 
	
		
			
				|  |  | +        public string ContentType { get; set; }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      [Authenticated]
 | 
	
		
			
				|  |  |      public class ItemUpdateService : BaseApiService
 | 
	
	
		
			
				|  | @@ -55,9 +66,102 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |                  Cultures = _localizationManager.GetCultures().ToList()
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            var locationType = item.LocationType;
 | 
	
		
			
				|  |  | +            if (locationType == LocationType.FileSystem ||
 | 
	
		
			
				|  |  | +                locationType == LocationType.Offline)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var collectionType = _libraryManager.GetInheritedContentType(item);
 | 
	
		
			
				|  |  | +                if (string.IsNullOrWhiteSpace(collectionType))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    info.ContentTypeOptions = GetContentTypeOptions(true);
 | 
	
		
			
				|  |  | +                    info.ContentType = _libraryManager.GetContentType(item);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              return ToOptimizedResult(info);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        public void Post(UpdateItemContentType request)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private List<NameValuePair> GetContentTypeOptions(bool isForItem)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var list = new List<NameValuePair>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (isForItem)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    Name = "FolderTypeInherit",
 | 
	
		
			
				|  |  | +                    Value = ""
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypeMovies",
 | 
	
		
			
				|  |  | +                Value = "movies"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypeMusic",
 | 
	
		
			
				|  |  | +                Value = "music"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypeTvShows",
 | 
	
		
			
				|  |  | +                Value = "tvshows"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (!isForItem)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    Name = "FolderTypeBooks",
 | 
	
		
			
				|  |  | +                    Value = "books"
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    Name = "FolderTypeGames",
 | 
	
		
			
				|  |  | +                    Value = "games"
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypeHomeVideos",
 | 
	
		
			
				|  |  | +                Value = "homevideos"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypeMusicVideos",
 | 
	
		
			
				|  |  | +                Value = "musicvideos"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Name = "FolderTypePhotos",
 | 
	
		
			
				|  |  | +                Value = "photos"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (!isForItem)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                list.Add(new NameValuePair
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    Name = "FolderTypeMixed",
 | 
	
		
			
				|  |  | +                    Value = ""
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            foreach (var val in list)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                val.Name = _localizationManager.GetLocalizedString(val.Name);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return list;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          public void Post(UpdateItem request)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              var task = UpdateItem(request);
 |