mirror of https://github.com/jellyfin/jellyfin.git
fixed configuration saving issues
This commit is contained in:
parent
e17b515697
commit
cd69bd7c7d
|
@ -1,12 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Api
|
|
||||||
{
|
|
||||||
class Api
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1126,7 +1126,29 @@ var ApiClient = {
|
||||||
|
|
||||||
var url = ApiClient.getUrl("System/Configuration");
|
var url = ApiClient.getUrl("System/Configuration");
|
||||||
|
|
||||||
return $.post(url, JSON.stringify(configuration));
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(configuration),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates plugin security info
|
||||||
|
*/
|
||||||
|
updatePluginSecurityInfo: function (info) {
|
||||||
|
|
||||||
|
var url = ApiClient.getUrl("Plugins/SecurityInfo");
|
||||||
|
|
||||||
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(info),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1141,7 +1163,13 @@ var ApiClient = {
|
||||||
|
|
||||||
var url = ApiClient.getUrl("Users");
|
var url = ApiClient.getUrl("Users");
|
||||||
|
|
||||||
return $.post(url, JSON.stringify(user));
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(user),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1156,7 +1184,13 @@ var ApiClient = {
|
||||||
|
|
||||||
var url = ApiClient.getUrl("Users/" + user.Id);
|
var url = ApiClient.getUrl("Users/" + user.Id);
|
||||||
|
|
||||||
return $.post(url, JSON.stringify(user));
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(user),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1176,7 +1210,13 @@ var ApiClient = {
|
||||||
|
|
||||||
var url = ApiClient.getUrl("ScheduledTasks/" + id + "/Triggers");
|
var url = ApiClient.getUrl("ScheduledTasks/" + id + "/Triggers");
|
||||||
|
|
||||||
return $.post(url, JSON.stringify(triggers));
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(triggers),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1196,7 +1236,13 @@ var ApiClient = {
|
||||||
|
|
||||||
var url = ApiClient.getUrl("Plugins/" + id + "/Configuration");
|
var url = ApiClient.getUrl("Plugins/" + id + "/Configuration");
|
||||||
|
|
||||||
return $.post(url, JSON.stringify(configuration));
|
return $.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: JSON.stringify(configuration),
|
||||||
|
dataType: "json",
|
||||||
|
contentType: "application/json"
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -106,13 +106,8 @@ namespace MediaBrowser.Api
|
||||||
/// Class UpdatePluginSecurityInfo
|
/// Class UpdatePluginSecurityInfo
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/Plugins/SecurityInfo", "POST")]
|
[Route("/Plugins/SecurityInfo", "POST")]
|
||||||
public class UpdatePluginSecurityInfo : IReturnVoid, IRequiresRequestStream
|
public class UpdatePluginSecurityInfo : PluginSecurityInfo, IReturnVoid
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -227,7 +222,7 @@ namespace MediaBrowser.Api
|
||||||
/// <param name="request">The request.</param>
|
/// <param name="request">The request.</param>
|
||||||
public void Post(UpdatePluginSecurityInfo request)
|
public void Post(UpdatePluginSecurityInfo request)
|
||||||
{
|
{
|
||||||
var info = _jsonSerializer.DeserializeFromStream<PluginSecurityInfo>(request.RequestStream);
|
var info = request;
|
||||||
|
|
||||||
_securityManager.SupporterKey = info.SupporterKey;
|
_securityManager.SupporterKey = info.SupporterKey;
|
||||||
_securityManager.LegacyKey = info.LegacyKey;
|
_securityManager.LegacyKey = info.LegacyKey;
|
||||||
|
|
|
@ -64,19 +64,13 @@ namespace MediaBrowser.Api.ScheduledTasks
|
||||||
/// Class UpdateScheduledTaskTriggers
|
/// Class UpdateScheduledTaskTriggers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/ScheduledTasks/{Id}/Triggers", "POST")]
|
[Route("/ScheduledTasks/{Id}/Triggers", "POST")]
|
||||||
public class UpdateScheduledTaskTriggers : IRequiresRequestStream
|
public class UpdateScheduledTaskTriggers : List<TaskTriggerInfo>, IReturnVoid
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the task id.
|
/// Gets or sets the task id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The task id.</value>
|
/// <value>The task id.</value>
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -202,7 +196,7 @@ namespace MediaBrowser.Api.ScheduledTasks
|
||||||
throw new ResourceNotFoundException("Task not found");
|
throw new ResourceNotFoundException("Task not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
var triggerInfos = _jsonSerializer.DeserializeFromStream<TaskTriggerInfo[]>(request.RequestStream);
|
var triggerInfos = request;
|
||||||
|
|
||||||
task.Triggers = triggerInfos.Select(ScheduledTaskHelpers.GetTrigger);
|
task.Triggers = triggerInfos.Select(ScheduledTaskHelpers.GetTrigger);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,13 +49,8 @@ namespace MediaBrowser.Api
|
||||||
/// Class UpdateConfiguration
|
/// Class UpdateConfiguration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/System/Configuration", "POST")]
|
[Route("/System/Configuration", "POST")]
|
||||||
public class UpdateConfiguration : IRequiresRequestStream
|
public class UpdateConfiguration : ServerConfiguration, IReturnVoid
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -160,9 +155,13 @@ namespace MediaBrowser.Api
|
||||||
/// <param name="request">The request.</param>
|
/// <param name="request">The request.</param>
|
||||||
public void Post(UpdateConfiguration request)
|
public void Post(UpdateConfiguration request)
|
||||||
{
|
{
|
||||||
var serverConfig = _jsonSerializer.DeserializeFromStream<ServerConfiguration>(request.RequestStream);
|
// Silly, but we need to serialize and deserialize or the XmlSerializer will write the xml with an element name of UpdateConfiguration
|
||||||
|
|
||||||
_configurationManager.ReplaceConfiguration(serverConfig);
|
var json = _jsonSerializer.SerializeToString(request);
|
||||||
|
|
||||||
|
var config = _jsonSerializer.DeserializeFromString<ServerConfiguration>(json);
|
||||||
|
|
||||||
|
_configurationManager.ReplaceConfiguration(config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,25 +62,13 @@ namespace MediaBrowser.Api.UserLibrary
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/Users/{UserId}/Items/{Id}/DisplayPreferences", "POST")]
|
[Route("/Users/{UserId}/Items/{Id}/DisplayPreferences", "POST")]
|
||||||
[ServiceStack.ServiceHost.Api(("Updates a user's display preferences for an item"))]
|
[ServiceStack.ServiceHost.Api(("Updates a user's display preferences for an item"))]
|
||||||
public class UpdateDisplayPreferences : IReturnVoid, IRequiresRequestStream
|
public class UpdateDisplayPreferences : DisplayPreferences, IReturnVoid
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the user id.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The user id.</value>
|
|
||||||
public Guid UserId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the id.
|
/// Gets or sets the id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The id.</value>
|
/// <value>The id.</value>
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -434,7 +422,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||||
|
|
||||||
var item = (Folder)DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id);
|
var item = (Folder)DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id);
|
||||||
|
|
||||||
var displayPreferences = _jsonSerializer.DeserializeFromStream<DisplayPreferences>(request.RequestStream);
|
var displayPreferences = request;
|
||||||
|
|
||||||
var task = _libraryManager.SaveDisplayPreferencesForFolder(user, item, displayPreferences);
|
var task = _libraryManager.SaveDisplayPreferencesForFolder(user, item, displayPreferences);
|
||||||
|
|
||||||
|
|
|
@ -102,32 +102,16 @@ namespace MediaBrowser.Api
|
||||||
/// Class UpdateUser
|
/// Class UpdateUser
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/Users/{Id}", "POST")]
|
[Route("/Users/{Id}", "POST")]
|
||||||
public class UpdateUser : IRequiresRequestStream, IReturnVoid
|
public class UpdateUser : UserDto, IReturnVoid
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the id.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The id.</value>
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class CreateUser
|
/// Class CreateUser
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("/Users", "POST")]
|
[Route("/Users", "POST")]
|
||||||
public class CreateUser : IRequiresRequestStream, IReturn<UserDto>
|
public class CreateUser : UserDto, IReturn<UserDto>
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The raw Http Request Input Stream
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The request stream.</value>
|
|
||||||
public Stream RequestStream { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -292,7 +276,7 @@ namespace MediaBrowser.Api
|
||||||
var pathInfo = PathInfo.Parse(Request.PathInfo);
|
var pathInfo = PathInfo.Parse(Request.PathInfo);
|
||||||
var id = new Guid(pathInfo.GetArgumentValue<string>(1));
|
var id = new Guid(pathInfo.GetArgumentValue<string>(1));
|
||||||
|
|
||||||
var dtoUser = _jsonSerializer.DeserializeFromStream<UserDto>(request.RequestStream);
|
var dtoUser = request;
|
||||||
|
|
||||||
var user = _userManager.GetUserById(id);
|
var user = _userManager.GetUserById(id);
|
||||||
|
|
||||||
|
@ -310,7 +294,7 @@ namespace MediaBrowser.Api
|
||||||
/// <returns>System.Object.</returns>
|
/// <returns>System.Object.</returns>
|
||||||
public object Post(CreateUser request)
|
public object Post(CreateUser request)
|
||||||
{
|
{
|
||||||
var dtoUser = _jsonSerializer.DeserializeFromStream<UserDto>(request.RequestStream);
|
var dtoUser = request;
|
||||||
|
|
||||||
var newUser = _userManager.CreateUser(dtoUser.Name).Result;
|
var newUser = _userManager.CreateUser(dtoUser.Name).Result;
|
||||||
|
|
||||||
|
|
|
@ -22,22 +22,6 @@ namespace MediaBrowser.Common.Implementations.Serialization
|
||||||
netSerializer.Serialize(writer, obj);
|
netSerializer.Serialize(writer, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Deserializes from stream.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T"></typeparam>
|
|
||||||
/// <param name="stream">The stream.</param>
|
|
||||||
/// <returns>``0.</returns>
|
|
||||||
public T DeserializeFromStream<T>(Stream stream)
|
|
||||||
{
|
|
||||||
using (var reader = new XmlTextReader(stream))
|
|
||||||
{
|
|
||||||
var netSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
|
|
||||||
|
|
||||||
return (T)netSerializer.Deserialize(reader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deserializes from stream.
|
/// Deserializes from stream.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -67,20 +51,6 @@ namespace MediaBrowser.Common.Implementations.Serialization
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Deserializes from file.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T"></typeparam>
|
|
||||||
/// <param name="file">The file.</param>
|
|
||||||
/// <returns>``0.</returns>
|
|
||||||
public T DeserializeFromFile<T>(string file)
|
|
||||||
{
|
|
||||||
using (var stream = File.OpenRead(file))
|
|
||||||
{
|
|
||||||
return DeserializeFromStream<T>(stream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serializes to file.
|
/// Serializes to file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -5,14 +5,6 @@ namespace MediaBrowser.Model.Serialization
|
||||||
{
|
{
|
||||||
public interface IXmlSerializer
|
public interface IXmlSerializer
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Deserializes from stream.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T"></typeparam>
|
|
||||||
/// <param name="stream">The stream.</param>
|
|
||||||
/// <returns>``0.</returns>
|
|
||||||
T DeserializeFromStream<T>(Stream stream);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deserializes from stream.
|
/// Deserializes from stream.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -28,14 +20,6 @@ namespace MediaBrowser.Model.Serialization
|
||||||
/// <param name="stream">The stream.</param>
|
/// <param name="stream">The stream.</param>
|
||||||
void SerializeToStream(object obj, Stream stream);
|
void SerializeToStream(object obj, Stream stream);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Deserializes from file.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T"></typeparam>
|
|
||||||
/// <param name="file">The file.</param>
|
|
||||||
/// <returns>``0.</returns>
|
|
||||||
T DeserializeFromFile<T>(string file);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serializes to file.
|
/// Serializes to file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -37,9 +37,7 @@
|
||||||
LegacyKey: legacyKey
|
LegacyKey: legacyKey
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = ApiClient.getUrl("Plugins/SecurityInfo");
|
ApiClient.updateSecurityInfo(info).done(function () {
|
||||||
console.log(url);
|
|
||||||
$.post(url, JSON.stringify(info)).done(function () {
|
|
||||||
Dashboard.resetPluginSecurityInfo();
|
Dashboard.resetPluginSecurityInfo();
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
SupporterPage.load();
|
SupporterPage.load();
|
||||||
|
|
Loading…
Reference in New Issue