Browse Source

fixed configuration saving issues

LukePulverenti 12 năm trước cách đây
mục cha
commit
cd69bd7c7d

+ 0 - 12
MediaBrowser.Api/Api.cs

@@ -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
-    {
-    }
-}

+ 51 - 5
MediaBrowser.Api/Javascript/ApiClient.js

@@ -1126,7 +1126,29 @@ var ApiClient = {
 
         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");
 
-        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);
 
-        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");
 
-        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");
 
-        return $.post(url, JSON.stringify(configuration));
+        return $.ajax({
+            type: "POST",
+            url: url,
+            data: JSON.stringify(configuration),
+            dataType: "json",
+            contentType: "application/json"
+        });
     },
 
     /**

+ 2 - 7
MediaBrowser.Api/PluginService.cs

@@ -106,13 +106,8 @@ namespace MediaBrowser.Api
     /// Class UpdatePluginSecurityInfo
     /// </summary>
     [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>
@@ -227,7 +222,7 @@ namespace MediaBrowser.Api
         /// <param name="request">The request.</param>
         public void Post(UpdatePluginSecurityInfo request)
         {
-            var info = _jsonSerializer.DeserializeFromStream<PluginSecurityInfo>(request.RequestStream);
+            var info = request;
 
             _securityManager.SupporterKey = info.SupporterKey;
             _securityManager.LegacyKey = info.LegacyKey;

+ 2 - 8
MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs

@@ -64,19 +64,13 @@ namespace MediaBrowser.Api.ScheduledTasks
     /// Class UpdateScheduledTaskTriggers
     /// </summary>
     [Route("/ScheduledTasks/{Id}/Triggers", "POST")]
-    public class UpdateScheduledTaskTriggers : IRequiresRequestStream
+    public class UpdateScheduledTaskTriggers : List<TaskTriggerInfo>, IReturnVoid
     {
         /// <summary>
         /// Gets or sets the task id.
         /// </summary>
         /// <value>The task id.</value>
         public Guid Id { get; set; }
-
-        /// <summary>
-        /// The raw Http Request Input Stream
-        /// </summary>
-        /// <value>The request stream.</value>
-        public Stream RequestStream { get; set; }
     }
 
     /// <summary>
@@ -202,7 +196,7 @@ namespace MediaBrowser.Api.ScheduledTasks
                 throw new ResourceNotFoundException("Task not found");
             }
 
-            var triggerInfos = _jsonSerializer.DeserializeFromStream<TaskTriggerInfo[]>(request.RequestStream);
+            var triggerInfos = request;
 
             task.Triggers = triggerInfos.Select(ScheduledTaskHelpers.GetTrigger);
         }

+ 7 - 8
MediaBrowser.Api/SystemService.cs

@@ -49,13 +49,8 @@ namespace MediaBrowser.Api
     /// Class UpdateConfiguration
     /// </summary>
     [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>
@@ -160,9 +155,13 @@ namespace MediaBrowser.Api
         /// <param name="request">The request.</param>
         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
+
+            var json = _jsonSerializer.SerializeToString(request);
+
+            var config = _jsonSerializer.DeserializeFromString<ServerConfiguration>(json);
 
-            _configurationManager.ReplaceConfiguration(serverConfig);
+            _configurationManager.ReplaceConfiguration(config);
         }
     }
 }

+ 2 - 14
MediaBrowser.Api/UserLibrary/UserLibraryService.cs

@@ -62,25 +62,13 @@ namespace MediaBrowser.Api.UserLibrary
     /// </summary>
     [Route("/Users/{UserId}/Items/{Id}/DisplayPreferences", "POST")]
     [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>
         /// Gets or sets the id.
         /// </summary>
         /// <value>The id.</value>
         public string Id { get; set; }
-
-        /// <summary>
-        /// The raw Http Request Input Stream
-        /// </summary>
-        /// <value>The request stream.</value>
-        public Stream RequestStream { get; set; }
     }
 
     /// <summary>
@@ -434,7 +422,7 @@ namespace MediaBrowser.Api.UserLibrary
 
             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);
 

+ 4 - 20
MediaBrowser.Api/UserService.cs

@@ -102,32 +102,16 @@ namespace MediaBrowser.Api
     /// Class UpdateUser
     /// </summary>
     [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>
     /// Class CreateUser
     /// </summary>
     [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>
@@ -292,7 +276,7 @@ namespace MediaBrowser.Api
             var pathInfo = PathInfo.Parse(Request.PathInfo);
             var id = new Guid(pathInfo.GetArgumentValue<string>(1));
 
-            var dtoUser = _jsonSerializer.DeserializeFromStream<UserDto>(request.RequestStream);
+            var dtoUser = request;
 
             var user = _userManager.GetUserById(id);
 
@@ -310,7 +294,7 @@ namespace MediaBrowser.Api
         /// <returns>System.Object.</returns>
         public object Post(CreateUser request)
         {
-            var dtoUser = _jsonSerializer.DeserializeFromStream<UserDto>(request.RequestStream);
+            var dtoUser = request;
 
             var newUser = _userManager.CreateUser(dtoUser.Name).Result;
 

+ 0 - 30
MediaBrowser.Common.Implementations/Serialization/XmlSerializer.cs

@@ -22,22 +22,6 @@ namespace MediaBrowser.Common.Implementations.Serialization
             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>
         /// Deserializes from stream.
         /// </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>
         /// Serializes to file.
         /// </summary>

+ 0 - 16
MediaBrowser.Model/Serialization/IXmlSerializer.cs

@@ -5,14 +5,6 @@ namespace MediaBrowser.Model.Serialization
 {
     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>
         /// Deserializes from stream.
         /// </summary>
@@ -28,14 +20,6 @@ namespace MediaBrowser.Model.Serialization
         /// <param name="stream">The stream.</param>
         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>
         /// Serializes to file.
         /// </summary>

+ 1 - 3
MediaBrowser.WebDashboard/Html/scripts/SupporterKeyPage.js

@@ -37,9 +37,7 @@
                 LegacyKey: legacyKey
             };
 
-            var url = ApiClient.getUrl("Plugins/SecurityInfo");
-            console.log(url);
-            $.post(url, JSON.stringify(info)).done(function () {
+            ApiClient.updateSecurityInfo(info).done(function () {
                 Dashboard.resetPluginSecurityInfo();
                 Dashboard.hideLoadingMsg();
                 SupporterPage.load();