diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs
index f8379a8103..297a131557 100644
--- a/MediaBrowser.Api/BaseApiService.cs
+++ b/MediaBrowser.Api/BaseApiService.cs
@@ -84,7 +84,6 @@ namespace MediaBrowser.Api
/// Gets the session.
///
/// SessionInfo.
- /// Session not found.
protected SessionInfo GetSession()
{
var session = SessionContext.GetSession(Request);
diff --git a/MediaBrowser.Api/ConfigurationService.cs b/MediaBrowser.Api/ConfigurationService.cs
index f6edea86e2..5fe606e16e 100644
--- a/MediaBrowser.Api/ConfigurationService.cs
+++ b/MediaBrowser.Api/ConfigurationService.cs
@@ -9,7 +9,6 @@ using MediaBrowser.Model.Serialization;
using ServiceStack;
using ServiceStack.Text.Controller;
using ServiceStack.Web;
-using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -33,18 +32,18 @@ namespace MediaBrowser.Api
[ApiMember(Name = "Key", Description = "Key", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Key { get; set; }
}
-
+
///
/// Class UpdateConfiguration
///
[Route("/System/Configuration", "POST", Summary = "Updates application configuration")]
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class UpdateConfiguration : ServerConfiguration, IReturnVoid
{
}
[Route("/System/Configuration/{Key}", "POST", Summary = "Updates named configuration")]
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class UpdateNamedConfiguration : IReturnVoid, IRequiresRequestStream
{
[ApiMember(Name = "Key", Description = "Key", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
@@ -52,23 +51,23 @@ namespace MediaBrowser.Api
public Stream RequestStream { get; set; }
}
-
+
[Route("/System/Configuration/MetadataOptions/Default", "GET", Summary = "Gets a default MetadataOptions object")]
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class GetDefaultMetadataOptions : IReturn
{
}
[Route("/System/Configuration/MetadataPlugins", "GET", Summary = "Gets all available metadata plugins")]
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class GetMetadataPlugins : IReturn>
{
}
[Route("/System/Configuration/MetadataPlugins/Autoset", "POST")]
- [Authenticated]
+ [Authenticated(Roles = "Admin", AllowBeforeStartupWizard = true)]
public class AutoSetMetadataOptions : IReturnVoid
{
@@ -149,7 +148,7 @@ namespace MediaBrowser.Api
var configurationType = _configurationManager.GetConfigurationType(key);
var configuration = _jsonSerializer.DeserializeFromStream(request.RequestStream, configurationType);
-
+
_configurationManager.SaveConfiguration(key, configuration);
}
diff --git a/MediaBrowser.Api/Devices/DeviceService.cs b/MediaBrowser.Api/Devices/DeviceService.cs
index b873c6a712..0d86d6a5c0 100644
--- a/MediaBrowser.Api/Devices/DeviceService.cs
+++ b/MediaBrowser.Api/Devices/DeviceService.cs
@@ -12,6 +12,7 @@ using System.Threading.Tasks;
namespace MediaBrowser.Api.Devices
{
[Route("/Devices", "GET", Summary = "Gets all devices")]
+ [Authenticated(Roles = "Admin")]
public class GetDevices : IReturn>
{
[ApiMember(Name = "SupportsContentUploading", Description = "SupportsContentUploading", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -26,6 +27,7 @@ namespace MediaBrowser.Api.Devices
}
[Route("/Devices/CameraUploads", "GET", Summary = "Gets camera upload history for a device")]
+ [Authenticated]
public class GetCameraUploads : IReturn
{
[ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -33,6 +35,7 @@ namespace MediaBrowser.Api.Devices
}
[Route("/Devices/CameraUploads", "POST", Summary = "Uploads content")]
+ [Authenticated]
public class PostCameraUpload : IRequiresRequestStream, IReturnVoid
{
[ApiMember(Name = "DeviceId", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -51,6 +54,7 @@ namespace MediaBrowser.Api.Devices
}
[Route("/Devices/Info", "GET", Summary = "Gets device info")]
+ [Authenticated]
public class GetDeviceInfo : IReturn
{
[ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
@@ -58,6 +62,7 @@ namespace MediaBrowser.Api.Devices
}
[Route("/Devices/Capabilities", "GET", Summary = "Gets device capabilities")]
+ [Authenticated]
public class GetDeviceCapabilities : IReturn
{
[ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
@@ -65,13 +70,13 @@ namespace MediaBrowser.Api.Devices
}
[Route("/Devices/Options", "POST", Summary = "Updates device options")]
+ [Authenticated(Roles = "Admin")]
public class PostDeviceOptions : DeviceOptions, IReturnVoid
{
[ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
public string Id { get; set; }
}
-
- [Authenticated]
+
public class DeviceService : BaseApiService
{
private readonly IDeviceManager _deviceManager;
diff --git a/MediaBrowser.Api/DisplayPreferencesService.cs b/MediaBrowser.Api/DisplayPreferencesService.cs
index 9f3a6134e9..72b12020d0 100644
--- a/MediaBrowser.Api/DisplayPreferencesService.cs
+++ b/MediaBrowser.Api/DisplayPreferencesService.cs
@@ -24,9 +24,6 @@ namespace MediaBrowser.Api
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public Guid UserId { get; set; }
-
- [ApiMember(Name = "Client", Description = "Client", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
- public string Client { get; set; }
}
[Route("/DisplayPreferences/{Id}", "GET", Summary = "Gets a user's display preferences for an item")]
diff --git a/MediaBrowser.Api/Dlna/DlnaService.cs b/MediaBrowser.Api/Dlna/DlnaService.cs
index fec6d698ae..b6c4f5dfba 100644
--- a/MediaBrowser.Api/Dlna/DlnaService.cs
+++ b/MediaBrowser.Api/Dlna/DlnaService.cs
@@ -43,7 +43,7 @@ namespace MediaBrowser.Api.Dlna
{
}
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class DlnaService : BaseApiService
{
private readonly IDlnaManager _dlnaManager;
diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs
index 590deff5a7..4265d0f9fc 100644
--- a/MediaBrowser.Api/EnvironmentService.cs
+++ b/MediaBrowser.Api/EnvironmentService.cs
@@ -87,7 +87,7 @@ namespace MediaBrowser.Api
///
/// Class EnvironmentService
///
- [Authenticated]
+ [Authenticated(Roles = "Admin")]
public class EnvironmentService : BaseApiService
{
const char UncSeparator = '\\';
diff --git a/MediaBrowser.Api/Images/ImageByNameService.cs b/MediaBrowser.Api/Images/ImageByNameService.cs
index 99d2f144b1..b4d5a99497 100644
--- a/MediaBrowser.Api/Images/ImageByNameService.cs
+++ b/MediaBrowser.Api/Images/ImageByNameService.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Dto;
using ServiceStack;
using System;
@@ -14,8 +15,7 @@ namespace MediaBrowser.Api.Images
///
/// Class GetGeneralImage
///
- [Route("/Images/General/{Name}/{Type}", "GET")]
- [Api(Description = "Gets a general image by name")]
+ [Route("/Images/General/{Name}/{Type}", "GET", Summary = "Gets a general image by name")]
public class GetGeneralImage
{
///
@@ -32,8 +32,7 @@ namespace MediaBrowser.Api.Images
///
/// Class GetRatingImage
///
- [Route("/Images/Ratings/{Theme}/{Name}", "GET")]
- [Api(Description = "Gets a rating image by name")]
+ [Route("/Images/Ratings/{Theme}/{Name}", "GET", Summary = "Gets a rating image by name")]
public class GetRatingImage
{
///
@@ -54,8 +53,7 @@ namespace MediaBrowser.Api.Images
///
/// Class GetMediaInfoImage
///
- [Route("/Images/MediaInfo/{Theme}/{Name}", "GET")]
- [Api(Description = "Gets a media info image by name")]
+ [Route("/Images/MediaInfo/{Theme}/{Name}", "GET", Summary = "Gets a media info image by name")]
public class GetMediaInfoImage
{
///
@@ -73,20 +71,20 @@ namespace MediaBrowser.Api.Images
public string Theme { get; set; }
}
- [Route("/Images/MediaInfo", "GET")]
- [Api(Description = "Gets all media info image by name")]
+ [Route("/Images/MediaInfo", "GET", Summary = "Gets all media info image by name")]
+ [Authenticated]
public class GetMediaInfoImages : IReturn>
{
}
- [Route("/Images/Ratings", "GET")]
- [Api(Description = "Gets all rating images by name")]
+ [Route("/Images/Ratings", "GET", Summary = "Gets all rating images by name")]
+ [Authenticated]
public class GetRatingImages : IReturn>
{
}
- [Route("/Images/General", "GET")]
- [Api(Description = "Gets all general images by name")]
+ [Route("/Images/General", "GET", Summary = "Gets all general images by name")]
+ [Authenticated]
public class GetGeneralImages : IReturn>
{
}
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 3262537957..561ce4a5cd 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -24,8 +24,7 @@ namespace MediaBrowser.Api.Images
///
/// Class GetItemImage
///
- [Route("/Items/{Id}/Images", "GET")]
- [Api(Description = "Gets information about an item's images")]
+ [Route("/Items/{Id}/Images", "GET", Summary = "Gets information about an item's images")]
[Authenticated]
public class GetItemImageInfos : IReturn>
{
@@ -43,7 +42,6 @@ namespace MediaBrowser.Api.Images
[Route("/Items/{Id}/Images/{Type}/{Index}", "HEAD")]
[Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}", "GET")]
[Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}", "HEAD")]
- [Api(Description = "Gets an item image")]
public class GetItemImage : ImageRequest
{
///
@@ -57,8 +55,7 @@ namespace MediaBrowser.Api.Images
///
/// Class UpdateItemImageIndex
///
- [Route("/Items/{Id}/Images/{Type}/{Index}/Index", "POST")]
- [Api(Description = "Updates the index for an item image")]
+ [Route("/Items/{Id}/Images/{Type}/{Index}/Index", "POST", Summary = "Updates the index for an item image")]
[Authenticated]
public class UpdateItemImageIndex : IReturnVoid
{
@@ -122,7 +119,6 @@ namespace MediaBrowser.Api.Images
[Route("/Studios/{Name}/Images/{Type}/{Index}", "HEAD")]
[Route("/Years/{Year}/Images/{Type}", "HEAD")]
[Route("/Years/{Year}/Images/{Type}/{Index}", "HEAD")]
- [Api(Description = "Gets an item by name image")]
public class GetItemByNameImage : ImageRequest
{
///
@@ -140,7 +136,6 @@ namespace MediaBrowser.Api.Images
[Route("/Users/{Id}/Images/{Type}/{Index}", "GET")]
[Route("/Users/{Id}/Images/{Type}", "HEAD")]
[Route("/Users/{Id}/Images/{Type}/{Index}", "HEAD")]
- [Api(Description = "Gets a user image")]
public class GetUserImage : ImageRequest
{
///
@@ -156,7 +151,6 @@ namespace MediaBrowser.Api.Images
///
[Route("/Items/{Id}/Images/{Type}", "DELETE")]
[Route("/Items/{Id}/Images/{Type}/{Index}", "DELETE")]
- [Api(Description = "Deletes an item image")]
[Authenticated]
public class DeleteItemImage : DeleteImageRequest, IReturnVoid
{
@@ -173,7 +167,6 @@ namespace MediaBrowser.Api.Images
///
[Route("/Users/{Id}/Images/{Type}", "DELETE")]
[Route("/Users/{Id}/Images/{Type}/{Index}", "DELETE")]
- [Api(Description = "Deletes a user image")]
[Authenticated]
public class DeleteUserImage : DeleteImageRequest, IReturnVoid
{
@@ -190,7 +183,6 @@ namespace MediaBrowser.Api.Images
///
[Route("/Users/{Id}/Images/{Type}", "POST")]
[Route("/Users/{Id}/Images/{Type}/{Index}", "POST")]
- [Api(Description = "Posts a user image")]
[Authenticated]
public class PostUserImage : DeleteImageRequest, IRequiresRequestStream, IReturnVoid
{
diff --git a/MediaBrowser.Api/Images/RemoteImageService.cs b/MediaBrowser.Api/Images/RemoteImageService.cs
index 235f18296a..6d2579ea9f 100644
--- a/MediaBrowser.Api/Images/RemoteImageService.cs
+++ b/MediaBrowser.Api/Images/RemoteImageService.cs
@@ -5,11 +5,11 @@ using MediaBrowser.Controller;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
using ServiceStack;
-using ServiceStack.Text.Controller;
using System;
using System.Collections.Generic;
using System.IO;
@@ -45,8 +45,8 @@ namespace MediaBrowser.Api.Images
public bool IncludeAllLanguages { get; set; }
}
- [Route("/Items/{Id}/RemoteImages", "GET")]
- [Api(Description = "Gets available remote images for an item")]
+ [Route("/Items/{Id}/RemoteImages", "GET", Summary = "Gets available remote images for an item")]
+ [Authenticated]
public class GetRemoteImages : BaseRemoteImageRequest
{
///
@@ -57,25 +57,8 @@ namespace MediaBrowser.Api.Images
public string Id { get; set; }
}
- [Route("/Artists/{Name}/RemoteImages", "GET")]
- [Route("/Genres/{Name}/RemoteImages", "GET")]
- [Route("/GameGenres/{Name}/RemoteImages", "GET")]
- [Route("/MusicGenres/{Name}/RemoteImages", "GET")]
- [Route("/Persons/{Name}/RemoteImages", "GET")]
- [Route("/Studios/{Name}/RemoteImages", "GET")]
- [Api(Description = "Gets available remote images for an item")]
- public class GetItemByNameRemoteImages : BaseRemoteImageRequest
- {
- ///
- /// Gets or sets the id.
- ///
- /// The id.
- [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Name { get; set; }
- }
-
- [Route("/Items/{Id}/RemoteImages/Providers", "GET")]
- [Api(Description = "Gets available remote image providers for an item")]
+ [Route("/Items/{Id}/RemoteImages/Providers", "GET", Summary = "Gets available remote image providers for an item")]
+ [Authenticated]
public class GetRemoteImageProviders : IReturn>
{
///
@@ -86,23 +69,6 @@ namespace MediaBrowser.Api.Images
public string Id { get; set; }
}
- [Route("/Artists/{Name}/RemoteImages/Providers", "GET")]
- [Route("/Genres/{Name}/RemoteImages/Providers", "GET")]
- [Route("/GameGenres/{Name}/RemoteImages/Providers", "GET")]
- [Route("/MusicGenres/{Name}/RemoteImages/Providers", "GET")]
- [Route("/Persons/{Name}/RemoteImages/Providers", "GET")]
- [Route("/Studios/{Name}/RemoteImages/Providers", "GET")]
- [Api(Description = "Gets available remote image providers for an item")]
- public class GetItemByNameRemoteImageProviders : IReturn>
- {
- ///
- /// Gets or sets the id.
- ///
- /// The id.
- [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Name { get; set; }
- }
-
public class BaseDownloadRemoteImage : IReturnVoid
{
[ApiMember(Name = "Type", Description = "The image type", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -115,8 +81,8 @@ namespace MediaBrowser.Api.Images
public string ImageUrl { get; set; }
}
- [Route("/Items/{Id}/RemoteImages/Download", "POST")]
- [Api(Description = "Downloads a remote image for an item")]
+ [Route("/Items/{Id}/RemoteImages/Download", "POST", Summary = "Downloads a remote image for an item")]
+ [Authenticated(Roles="Admin")]
public class DownloadRemoteImage : BaseDownloadRemoteImage
{
///
@@ -127,25 +93,7 @@ namespace MediaBrowser.Api.Images
public string Id { get; set; }
}
- [Route("/Artists/{Name}/RemoteImages/Download", "POST")]
- [Route("/Genres/{Name}/RemoteImages/Download", "POST")]
- [Route("/GameGenres/{Name}/RemoteImages/Download", "POST")]
- [Route("/MusicGenres/{Name}/RemoteImages/Download", "POST")]
- [Route("/Persons/{Name}/RemoteImages/Download", "POST")]
- [Route("/Studios/{Name}/RemoteImages/Download", "POST")]
- [Api(Description = "Downloads a remote image for an item")]
- public class DownloadItemByNameRemoteImage : BaseDownloadRemoteImage
- {
- ///
- /// Gets or sets the id.
- ///
- /// The id.
- [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public string Name { get; set; }
- }
-
- [Route("/Images/Remote", "GET")]
- [Api(Description = "Gets a remote image")]
+ [Route("/Images/Remote", "GET", Summary = "Gets a remote image")]
public class GetRemoteImage
{
[ApiMember(Name = "ImageUrl", Description = "The image url", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
@@ -182,18 +130,6 @@ namespace MediaBrowser.Api.Images
return ToOptimizedSerializedResultUsingCache(result);
}
- public object Get(GetItemByNameRemoteImageProviders request)
- {
- var pathInfo = PathInfo.Parse(Request.PathInfo);
- var type = pathInfo.GetArgumentValue(0);
-
- var item = GetItemByName(request.Name, type, _libraryManager);
-
- var result = GetImageProviders(item);
-
- return ToOptimizedSerializedResultUsingCache(result);
- }
-
private List GetImageProviders(BaseItem item)
{
return _providerManager.GetRemoteImageProviderInfo(item).ToList();
@@ -206,16 +142,6 @@ namespace MediaBrowser.Api.Images
return await GetRemoteImageResult(item, request).ConfigureAwait(false);
}
- public async Task