aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Devices/DeviceService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/Devices/DeviceService.cs')
-rw-r--r--MediaBrowser.Api/Devices/DeviceService.cs87
1 files changed, 47 insertions, 40 deletions
diff --git a/MediaBrowser.Api/Devices/DeviceService.cs b/MediaBrowser.Api/Devices/DeviceService.cs
index c375e272a..9cc16b4a1 100644
--- a/MediaBrowser.Api/Devices/DeviceService.cs
+++ b/MediaBrowser.Api/Devices/DeviceService.cs
@@ -7,6 +7,8 @@ using MediaBrowser.Model.Session;
using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Model.Services;
+using MediaBrowser.Controller.Security;
+using MediaBrowser.Controller.Session;
namespace MediaBrowser.Api.Devices
{
@@ -16,6 +18,22 @@ namespace MediaBrowser.Api.Devices
{
}
+ [Route("/Devices/Info", "GET", Summary = "Gets info for a device")]
+ [Authenticated(Roles = "Admin")]
+ public class GetDeviceInfo : IReturn<DeviceInfo>
+ {
+ [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string Id { get; set; }
+ }
+
+ [Route("/Devices/Options", "GET", Summary = "Gets options for a device")]
+ [Authenticated(Roles = "Admin")]
+ public class GetDeviceOptions : IReturn<DeviceOptions>
+ {
+ [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string Id { get; set; }
+ }
+
[Route("/Devices", "DELETE", Summary = "Deletes a device")]
public class DeleteDevice
{
@@ -35,37 +53,21 @@ namespace MediaBrowser.Api.Devices
[Authenticated]
public class PostCameraUpload : IRequiresRequestStream, IReturnVoid
{
- [ApiMember(Name = "DeviceId", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ [ApiMember(Name = "DeviceId", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string DeviceId { get; set; }
- [ApiMember(Name = "Album", Description = "Album", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ [ApiMember(Name = "Album", Description = "Album", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Album { get; set; }
- [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Name { get; set; }
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Id { get; set; }
public Stream RequestStream { get; set; }
}
- [Route("/Devices/Info", "GET", Summary = "Gets device info")]
- [Authenticated]
- public class GetDeviceInfo : IReturn<DeviceInfo>
- {
- [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
- public string Id { get; set; }
- }
-
- [Route("/Devices/Capabilities", "GET", Summary = "Gets device capabilities")]
- [Authenticated]
- public class GetDeviceCapabilities : IReturn<ClientCapabilities>
- {
- [ApiMember(Name = "Id", Description = "Device Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
- public string Id { get; set; }
- }
-
[Route("/Devices/Options", "POST", Summary = "Updates device options")]
[Authenticated(Roles = "Admin")]
public class PostDeviceOptions : DeviceOptions, IReturnVoid
@@ -77,34 +79,34 @@ namespace MediaBrowser.Api.Devices
public class DeviceService : BaseApiService
{
private readonly IDeviceManager _deviceManager;
+ private readonly IAuthenticationRepository _authRepo;
+ private readonly ISessionManager _sessionManager;
- public DeviceService(IDeviceManager deviceManager)
+ public DeviceService(IDeviceManager deviceManager, IAuthenticationRepository authRepo, ISessionManager sessionManager)
{
_deviceManager = deviceManager;
+ _authRepo = authRepo;
+ _sessionManager = sessionManager;
}
public void Post(PostDeviceOptions request)
{
- _deviceManager.UpdateDeviceInfo(request.Id, new DeviceOptions
- {
- CustomName = request.CustomName,
- CameraUploadPath = request.CameraUploadPath
- });
+ _deviceManager.UpdateDeviceOptions(request.Id, request);
}
- public object Get(GetDeviceInfo request)
+ public object Get(GetDevices request)
{
- return ToOptimizedResult(_deviceManager.GetDevice(request.Id));
+ return ToOptimizedResult(_deviceManager.GetDevices(request));
}
- public object Get(GetDeviceCapabilities request)
+ public object Get(GetDeviceInfo request)
{
- return ToOptimizedResult(_deviceManager.GetCapabilities(request.Id));
+ return _deviceManager.GetDevice(request.Id);
}
- public object Get(GetDevices request)
+ public object Get(GetDeviceOptions request)
{
- return ToOptimizedResult(_deviceManager.GetDevices(request));
+ return _deviceManager.GetDeviceOptions(request.Id);
}
public object Get(GetCameraUploads request)
@@ -114,10 +116,19 @@ namespace MediaBrowser.Api.Devices
public void Delete(DeleteDevice request)
{
- _deviceManager.DeleteDevice(request.Id);
+ var sessions = _authRepo.Get(new AuthenticationInfoQuery
+ {
+ DeviceId = request.Id
+
+ }).Items;
+
+ foreach (var session in sessions)
+ {
+ _sessionManager.Logout(session);
+ }
}
- public void Post(PostCameraUpload request)
+ public Task Post(PostCameraUpload request)
{
var deviceId = Request.QueryString["DeviceId"];
var album = Request.QueryString["Album"];
@@ -126,29 +137,25 @@ namespace MediaBrowser.Api.Devices
if (Request.ContentType.IndexOf("multi", StringComparison.OrdinalIgnoreCase) == -1)
{
- var task = _deviceManager.AcceptCameraUpload(deviceId, request.RequestStream, new LocalFileInfo
+ return _deviceManager.AcceptCameraUpload(deviceId, request.RequestStream, new LocalFileInfo
{
MimeType = Request.ContentType,
Album = album,
Name = name,
Id = id
});
-
- Task.WaitAll(task);
}
else
{
var file = Request.Files.Length == 0 ? null : Request.Files[0];
- var task = _deviceManager.AcceptCameraUpload(deviceId, file.InputStream, new LocalFileInfo
+ return _deviceManager.AcceptCameraUpload(deviceId, file.InputStream, new LocalFileInfo
{
MimeType = file.ContentType,
Album = album,
Name = name,
Id = id
});
-
- Task.WaitAll(task);
}
}
}