diff --git a/Json-Rpc/AustinHarris.JsonRpc.csproj b/Json-Rpc/AustinHarris.JsonRpc.csproj
index 2f48389..f6a680d 100644
--- a/Json-Rpc/AustinHarris.JsonRpc.csproj
+++ b/Json-Rpc/AustinHarris.JsonRpc.csproj
@@ -4,7 +4,7 @@
Austin Harris
Json-Rpc.Net Core
Core functionality for JsonRpc.Net
- 1.2.2
+ 1.2.3
$(VersionSuffix)
Austin Harris
https://github.com/Astn/JSON-RPC.NET
diff --git a/Json-Rpc/AustinHarris.JsonRpc.nuspec b/Json-Rpc/AustinHarris.JsonRpc.nuspec
index 0922df6..ad36f62 100644
--- a/Json-Rpc/AustinHarris.JsonRpc.nuspec
+++ b/Json-Rpc/AustinHarris.JsonRpc.nuspec
@@ -12,7 +12,7 @@
false
The fastest .Net JSON RPC Server
JSON-RPC.Net is a high performance Json-Rpc 2.0 server, leveraging the popular JSON.NET library. Easily create a JSON RPC server for your Angular javascript apps, also supports sockets and pipes, oh my!
- Named Parameters via attributes -rommar. Fix nuget dependency requirements -jbreens. Cleaner service registration -xmedeko
+ Optional JsonSerializer Settings - @hovi. ProcessSync is now public - @astn
en-US
fast json rpc server socket javascript json-rpc.net json-rpc jsonrpc json.net web services webapi service angular server angularjs
diff --git a/Json-Rpc/Handler.cs b/Json-Rpc/Handler.cs
index 1c746b5..095bacb 100644
--- a/Json-Rpc/Handler.cs
+++ b/Json-Rpc/Handler.cs
@@ -492,7 +492,7 @@ private object CleanUpParameter(object p, SMDAdditionalParameters metaData)
private JsonRpcException PreProcess(JsonRequest request, object context)
{
- return externalPreProcessingHandler == null ? null : externalPreProcessingHandler(request, context);
+ return externalPreProcessingHandler?.Invoke(request, context);
}
private JsonResponse PostProcess(JsonRequest request, JsonResponse response, object context)
diff --git a/Json-Rpc/JsonRpcProcessor.cs b/Json-Rpc/JsonRpcProcessor.cs
index 1d7e1a7..5020e88 100644
--- a/Json-Rpc/JsonRpcProcessor.cs
+++ b/Json-Rpc/JsonRpcProcessor.cs
@@ -13,34 +13,41 @@ namespace AustinHarris.JsonRpc
{
public static class JsonRpcProcessor
{
- public static void Process(JsonRpcStateAsync async, object context = null)
+ public static void Process(JsonRpcStateAsync async, object context = null,
+ JsonSerializerSettings settings = null)
{
- Process(Handler.DefaultSessionId(), async, context);
+ Process(Handler.DefaultSessionId(), async, context, settings);
}
- public static void Process(string sessionId, JsonRpcStateAsync async, object context = null)
+ public static void Process(string sessionId, JsonRpcStateAsync async, object context = null,
+ JsonSerializerSettings settings = null)
{
- Process(sessionId, async.JsonRpc, context)
+ Process(sessionId, async.JsonRpc, context, settings)
.ContinueWith(t =>
- {
- async.Result = t.Result;
- async.SetCompleted();
- });
+ {
+ async.Result = t.Result;
+ async.SetCompleted();
+ });
}
- public static Task Process(string jsonRpc, object context = null)
+
+ public static Task Process(string jsonRpc, object context = null,
+ JsonSerializerSettings settings = null)
{
- return Process(Handler.DefaultSessionId(), jsonRpc, context);
+ return Process(Handler.DefaultSessionId(), jsonRpc, context, settings);
}
- public static Task Process(string sessionId, string jsonRpc, object context = null)
- {
+
+ public static Task Process(string sessionId, string jsonRpc, object context = null,
+ JsonSerializerSettings settings = null)
+ {
return Task.Factory.StartNew((_) =>
{
- var tuple = (Tuple)_;
- return ProcessInternal(tuple.Item1, tuple.Item2, tuple.Item3);
- }, new Tuple(sessionId, jsonRpc, context));
+ var tuple = (Tuple)_;
+ return ProcessSync(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4);
+ }, new Tuple(sessionId, jsonRpc, context, settings));
}
- private static string ProcessInternal(string sessionId, string jsonRpc, object jsonRpcContext)
+ public static string ProcessSync(string sessionId, string jsonRpc, object jsonRpcContext,
+ JsonSerializerSettings settings = null)
{
var handler = Handler.GetSessionHandler(sessionId);
@@ -50,12 +57,12 @@ private static string ProcessInternal(string sessionId, string jsonRpc, object j
{
if (isSingleRpc(jsonRpc))
{
- var foo = JsonConvert.DeserializeObject(jsonRpc);
+ var foo = JsonConvert.DeserializeObject(jsonRpc, settings);
batch = new[] { foo };
}
else
{
- batch = JsonConvert.DeserializeObject(jsonRpc);
+ batch = JsonConvert.DeserializeObject(jsonRpc, settings);
}
}
catch (Exception ex)
@@ -63,7 +70,7 @@ private static string ProcessInternal(string sessionId, string jsonRpc, object j
return Newtonsoft.Json.JsonConvert.SerializeObject(new JsonResponse
{
Error = handler.ProcessParseException(jsonRpc, new JsonRpcException(-32700, "Parse error", ex))
- });
+ }, settings);
}
if (batch.Length == 0)
@@ -72,7 +79,7 @@ private static string ProcessInternal(string sessionId, string jsonRpc, object j
{
Error = handler.ProcessParseException(jsonRpc,
new JsonRpcException(3200, "Invalid Request", "Batch of calls was empty."))
- });
+ }, settings);
}
var singleBatch = batch.Length == 1;
@@ -131,11 +138,11 @@ private static string ProcessInternal(string sessionId, string jsonRpc, object j
}
if (jsonResponse.Error != null)
{
- writer.WritePropertyName("error"); writer.WriteRawValue(JsonConvert.SerializeObject(jsonResponse.Error));
+ writer.WritePropertyName("error"); writer.WriteRawValue(JsonConvert.SerializeObject(jsonResponse.Error, settings));
}
else
{
- writer.WritePropertyName("result"); writer.WriteRawValue(JsonConvert.SerializeObject(jsonResponse.Result));
+ writer.WritePropertyName("result"); writer.WriteRawValue(JsonConvert.SerializeObject(jsonResponse.Result, settings));
}
writer.WritePropertyName("id"); writer.WriteValue(jsonResponse.Id);
writer.WriteEndObject();
@@ -156,7 +163,7 @@ private static string ProcessInternal(string sessionId, string jsonRpc, object j
sbResult = new StringBuilder("[");
}
- sbResult.Append(JsonConvert.SerializeObject(jsonResponse));
+ sbResult.Append(JsonConvert.SerializeObject(jsonResponse, settings));
if (i < batch.Length - 1)
{
sbResult.Append(',');