|
@@ -166,7 +166,7 @@ namespace InABox.API
|
|
|
/// <returns></returns>
|
|
|
private IResponseBuilder GetNotify(IRequest request)
|
|
|
{
|
|
|
- var requestObj = Serialization.Deserialize<NotifyRequest>(request.Content);
|
|
|
+ var requestObj = Deserialize<NotifyRequest>(request.Content, true);
|
|
|
if (!CredentialsCache.SessionExists(requestObj.Credentials.Session))
|
|
|
{
|
|
|
return request.Respond().Status(ResponseStatus.NotFound);
|
|
@@ -186,7 +186,7 @@ namespace InABox.API
|
|
|
|
|
|
private IResponseBuilder Validate(IRequest request)
|
|
|
{
|
|
|
- var requestObj = Serialization.Deserialize<ValidateRequest>(request.Content);
|
|
|
+ var requestObj = Deserialize<ValidateRequest>(request.Content, true);
|
|
|
var response = RestService.Validate(requestObj);
|
|
|
|
|
|
var serialized = Serialization.Serialize(response);
|
|
@@ -197,7 +197,7 @@ namespace InABox.API
|
|
|
|
|
|
private IResponseBuilder Check2FA(IRequest request)
|
|
|
{
|
|
|
- var requestObj = Serialization.Deserialize<Check2FARequest>(request.Content);
|
|
|
+ var requestObj = Deserialize<Check2FARequest>(request.Content, true);
|
|
|
var response = RestService.Check2FA(requestObj);
|
|
|
|
|
|
var serialized = Serialization.Serialize(response);
|
|
@@ -225,42 +225,37 @@ namespace InABox.API
|
|
|
|
|
|
private static QueryResponse<T> List<T>(IRequest request) where T : Entity, new()
|
|
|
{
|
|
|
- var requestObject = Deserialize<QueryRequest<T>>(request.Content);
|
|
|
+ var requestObject = Deserialize<QueryRequest<T>>(request.Content, true);
|
|
|
return RestService<T>.List(requestObject);
|
|
|
}
|
|
|
private static SaveResponse<T> Save<T>(IRequest request) where T : Entity, new()
|
|
|
{
|
|
|
- var requestObject = Deserialize<SaveRequest<T>>(request.Content);
|
|
|
+ var requestObject = Deserialize<SaveRequest<T>>(request.Content, true);
|
|
|
return RestService<T>.Save(requestObject);
|
|
|
}
|
|
|
private static DeleteResponse<T> Delete<T>(IRequest request) where T : Entity, new()
|
|
|
{
|
|
|
- var requestObject = Deserialize<DeleteRequest<T>>(request.Content);
|
|
|
+ var requestObject = Deserialize<DeleteRequest<T>>(request.Content, true);
|
|
|
return RestService<T>.Delete(requestObject);
|
|
|
}
|
|
|
private static MultiSaveResponse<T> MultiSave<T>(IRequest request) where T : Entity, new()
|
|
|
{
|
|
|
- var requestObject = Deserialize<MultiSaveRequest<T>>(request.Content);
|
|
|
+ var requestObject = Deserialize<MultiSaveRequest<T>>(request.Content, true);
|
|
|
return RestService<T>.MultiSave(requestObject);
|
|
|
}
|
|
|
private static MultiDeleteResponse<T> MultiDelete<T>(IRequest request) where T : Entity, new()
|
|
|
{
|
|
|
- var requestObject = Deserialize<MultiDeleteRequest<T>>(request.Content);
|
|
|
+ var requestObject = Deserialize<MultiDeleteRequest<T>>(request.Content, true);
|
|
|
return RestService<T>.MultiDelete(requestObject);
|
|
|
}
|
|
|
|
|
|
- private static T Deserialize<T>(Stream stream)
|
|
|
+ private static T Deserialize<T>(Stream? stream, bool strict = false)
|
|
|
{
|
|
|
+ if (stream is null)
|
|
|
+ throw new Exception("Stream is null");
|
|
|
var str = new StreamReader(stream).ReadToEnd();
|
|
|
- try
|
|
|
- {
|
|
|
- return Serialization.Deserialize<T>(str);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- Logger.Send(LogType.Information, "", $"Error while deserializing MultiQueryRequest: {e.Message}\nJSON: {str}");
|
|
|
- throw new Exception("Deserialization Error");
|
|
|
- }
|
|
|
+ return Serialization.Deserialize<T>(str, strict)
|
|
|
+ ?? throw new Exception("Deserialization failed");
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -271,10 +266,9 @@ namespace InABox.API
|
|
|
private ValueTask<IResponse?> HandleDatabaseRequest(IRequest request)
|
|
|
{
|
|
|
var endpoint = request.Target.Current.Value;
|
|
|
- var entityIndex = 0;
|
|
|
if (endpoint.StartsWith("QueryMultiple"))
|
|
|
{
|
|
|
- var requestObject = Deserialize<MultiQueryRequest>(request.Content);
|
|
|
+ var requestObject = Deserialize<MultiQueryRequest>(request.Content, true);
|
|
|
|
|
|
var result = RestService.QueryMultiple(requestObject, false);
|
|
|
var serialized = Serialization.Serialize(result);
|