瀏覽代碼

Re-work appstore registration to pass-thru parameters

Eric Reed 9 年之前
父節點
當前提交
5d74fcbb87

+ 3 - 19
MediaBrowser.Api/PluginService.cs

@@ -122,24 +122,8 @@ namespace MediaBrowser.Api
     [Authenticated]
     public class RegisterAppstoreSale
     {
-        [ApiMember(Name = "Store", Description = "Store Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Store { get; set; }
-        [ApiMember(Name = "Application", Description = "Application id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Application { get; set; }
-        [ApiMember(Name = "Product", Description = "Product id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Product { get; set; }
-        [ApiMember(Name = "Type", Description = "Type of product (Product or Subscription)", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Type { get; set; }
-        [ApiMember(Name = "StoreId", Description = "Store User Id (if needed)", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string StoreId { get; set; }
-        [ApiMember(Name = "StoreToken", Description = "Unique ID for this purchase in the store", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string StoreToken { get; set; }
-        [ApiMember(Name = "Feature", Description = "Emby Feature Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Feature { get; set; }
-        [ApiMember(Name = "Email", Description = "Email address for purchase", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Email { get; set; }
-        [ApiMember(Name = "Amount", Description = "String representation of price (can have currency sign)", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
-        public string Amount { get; set; }
+        [ApiMember(Name = "Parameters", Description = "Java representation of parameters to pass through to admin server", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
+        public string Parameters { get; set; }
     }
 
     /// <summary>
@@ -296,7 +280,7 @@ namespace MediaBrowser.Api
         /// <returns></returns>
         public async Task Post(RegisterAppstoreSale request)
         {
-            await _securityManager.RegisterAppStoreSale(request.Store, request.Application, request.Product, request.Feature, request.Type, request.StoreId, request.StoreToken, request.Email, request.Amount);
+            await _securityManager.RegisterAppStoreSale(request.Parameters);
         }
 
         /// <summary>

+ 7 - 27
MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs

@@ -190,43 +190,23 @@ namespace MediaBrowser.Common.Implementations.Security
         /// Register an app store sale with our back-end.  It will validate the transaction with the store
         /// and then register the proper feature and then fill in the supporter key on success.
         /// </summary>
-        /// <param name="store"></param>
-        /// <param name="application"></param>
-        /// <param name="product"></param>
-        /// <param name="feature"></param>
-        /// <param name="type"></param>
-        /// <param name="storeId"></param>
-        /// <param name="storeToken"></param>
-        /// <param name="email"></param>
-        /// <param name="amt"></param>
-        public async Task RegisterAppStoreSale(string store, string application, string product, string feature,
-            string type, string storeId, string storeToken, string email, string amt)
+        /// <param name="parameters">Json parameters to send to admin server</param>
+        public async Task RegisterAppStoreSale(string parameters)
         {
-            var data = new Dictionary<string, string>()
-                       {
-                           {"store", store},
-                           {"application", application},
-                           {"product", product},
-                           {"feature", feature},
-                           {"type", type},
-                           {"storeId", storeId},
-                           {"token", storeToken},
-                           {"email", email},
-                           {"amt", amt}
-                       };
-
             var options = new HttpRequestOptions()
             {
                 Url = AppstoreRegUrl,
                 CancellationToken = CancellationToken.None
             };
             options.RequestHeaders.Add("X-Emby-Token", /*_appHost.SystemId*/ "08606E86D043");
+            options.RequestContent = parameters;
+            options.RequestContentType = "application/json";
 
             try
             {
-                using (var json = await _httpClient.Post(options, data).ConfigureAwait(false))
+                using (var response = await _httpClient.Post(options).ConfigureAwait(false))
                 {
-                    var reg = _jsonSerializer.DeserializeFromStream<RegRecord>(json);
+                    var reg = _jsonSerializer.DeserializeFromStream<RegRecord>(response.Content);
                     if (!String.IsNullOrEmpty(reg.key))
                     {
                         SupporterKey = reg.key;
@@ -236,7 +216,7 @@ namespace MediaBrowser.Common.Implementations.Security
             }
             catch (Exception e)
             {
-                _logger.ErrorException("Error registering appstore purchase {0}", e, _jsonSerializer.SerializeToString(data));
+                _logger.ErrorException("Error registering appstore purchase {0}", e, parameters);
                 //TODO - really need to write this to a file so we can re-try it automatically
                 throw new ApplicationException("Error registering store sale");
             }

+ 2 - 11
MediaBrowser.Common/Security/ISecurityManager.cs

@@ -50,16 +50,7 @@ namespace MediaBrowser.Common.Security
         /// <summary>
         /// Register and app store sale with our back-end
         /// </summary>
-        /// <param name="store"></param>
-        /// <param name="application"></param>
-        /// <param name="product"></param>
-        /// <param name="feature"></param>
-        /// <param name="type"></param>
-        /// <param name="storeId"></param>
-        /// <param name="storeToken"></param>
-        /// <param name="email"></param>
-        /// <param name="amt"></param>
-        Task RegisterAppStoreSale(string store, string application, string product, string feature,
-        string type, string storeId, string storeToken, string email, string amt);
+        /// <param name="parameters">Json parameters to pass to admin server</param>
+        Task RegisterAppStoreSale(string parameters);
     }
 }