aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/ConnectService.cs45
-rw-r--r--MediaBrowser.Api/Devices/DeviceService.cs45
-rw-r--r--MediaBrowser.Api/Session/SessionsService.cs4
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,