diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/ConnectService.cs | 45 | ||||
| -rw-r--r-- | MediaBrowser.Api/Devices/DeviceService.cs | 45 | ||||
| -rw-r--r-- | MediaBrowser.Api/Session/SessionsService.cs | 4 |
3 files changed, 91 insertions, 3 deletions
diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index 9ea75d4ac..3a863316b 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -1,6 +1,8 @@ using MediaBrowser.Controller.Connect; using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Connect; using ServiceStack; +using System.Collections.Generic; using System.Threading.Tasks; namespace MediaBrowser.Api @@ -22,6 +24,30 @@ namespace MediaBrowser.Api public string Id { get; set; } } + [Route("/Connect/Invite", "POST", Summary = "Creates a Connect link for a user")] + public class CreateConnectInvite : IReturn<UserLinkResult> + { + [ApiMember(Name = "ConnectUsername", Description = "Connect username", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + public string ConnectUsername { get; set; } + + [ApiMember(Name = "SendingUserId", Description = "Sending User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")] + public string SendingUserId { get; set; } + } + + + [Route("/Connect/Pending", "GET", Summary = "Creates a Connect link for a user")] + public class GetPendingGuests : IReturn<List<ConnectAuthorization>> + { + } + + + [Route("/Connect/Pending", "DELETE", Summary = "Deletes a Connect link for a user")] + public class DeleteAuthorization : IReturnVoid + { + [ApiMember(Name = "Id", Description = "Authorization Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")] + public string Id { get; set; } + } + [Authenticated(Roles = "Admin")] public class ConnectService : BaseApiService { @@ -37,11 +63,30 @@ namespace MediaBrowser.Api return _connectManager.LinkUser(request.Id, request.ConnectUsername); } + public object Post(CreateConnectInvite request) + { + return _connectManager.InviteUser(request.SendingUserId, request.ConnectUsername); + } + public void Delete(DeleteConnectLink request) { var task = _connectManager.RemoveLink(request.Id); Task.WaitAll(task); } + + public async Task<object> Get(GetPendingGuests request) + { + var result = await _connectManager.GetPendingGuests().ConfigureAwait(false); + + return ToOptimizedResult(result); + } + + public void Delete(DeleteAuthorization request) + { + var task = _connectManager.CancelAuthorization(request.Id); + + Task.WaitAll(task); + } } } diff --git a/MediaBrowser.Api/Devices/DeviceService.cs b/MediaBrowser.Api/Devices/DeviceService.cs index 87419e440..bb8d8eda3 100644 --- a/MediaBrowser.Api/Devices/DeviceService.cs +++ b/MediaBrowser.Api/Devices/DeviceService.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Devices; +using MediaBrowser.Model.Session; using ServiceStack; using ServiceStack.Web; using System.Collections.Generic; @@ -49,6 +50,27 @@ namespace MediaBrowser.Api.Devices public Stream RequestStream { get; set; } } + [Route("/Devices/Info", "GET", Summary = "Gets device info")] + 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")] + 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")] + 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 { @@ -59,6 +81,27 @@ namespace MediaBrowser.Api.Devices _deviceManager = deviceManager; } + public void Post(PostDeviceOptions request) + { + var task = _deviceManager.UpdateDeviceInfo(request.Id, new DeviceOptions + { + CustomName = request.CustomName, + CameraUploadPath = request.CameraUploadPath + }); + + Task.WaitAll(task); + } + + public object Get(GetDeviceInfo request) + { + return ToOptimizedResult(_deviceManager.GetDevice(request.Id)); + } + + public object Get(GetDeviceCapabilities request) + { + return ToOptimizedResult(_deviceManager.GetCapabilities(request.Id)); + } + public object Get(GetDevices request) { var devices = _deviceManager.GetDevices(); @@ -67,7 +110,7 @@ namespace MediaBrowser.Api.Devices { var val = request.SupportsContentUploading.Value; - devices = devices.Where(i => i.Capabilities.SupportsContentUploading == val); + devices = devices.Where(i => _deviceManager.GetCapabilities(i.Id).SupportsContentUploading == val); } return ToOptimizedResult(devices.ToList()); diff --git a/MediaBrowser.Api/Session/SessionsService.cs b/MediaBrowser.Api/Session/SessionsService.cs index 014bedbd9..74dccb7af 100644 --- a/MediaBrowser.Api/Session/SessionsService.cs +++ b/MediaBrowser.Api/Session/SessionsService.cs @@ -499,9 +499,9 @@ namespace MediaBrowser.Api.Session } _sessionManager.ReportCapabilities(request.Id, new ClientCapabilities { - PlayableMediaTypes = request.PlayableMediaTypes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), + PlayableMediaTypes = (request.PlayableMediaTypes ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), - SupportedCommands = request.SupportedCommands.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), + SupportedCommands = (request.SupportedCommands ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), SupportsMediaControl = request.SupportsMediaControl, |
