handle exception in deserializer

This commit is contained in:
Nicolas Constant 2020-07-22 19:27:49 -04:00
parent 10104187d5
commit 66630324d7
No known key found for this signature in database
GPG key ID: 1E9F677FB01A5688

View file

@ -1,4 +1,5 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
namespace BirdsiteLive.ActivityPub namespace BirdsiteLive.ActivityPub
{ {
@ -6,41 +7,48 @@ namespace BirdsiteLive.ActivityPub
{ {
public static Activity ProcessActivity(string json) public static Activity ProcessActivity(string json)
{ {
var activity = JsonConvert.DeserializeObject<Activity>(json); try
switch (activity.type)
{ {
case "Follow": var activity = JsonConvert.DeserializeObject<Activity>(json);
return JsonConvert.DeserializeObject<ActivityFollow>(json); switch (activity.type)
case "Undo": {
var a = JsonConvert.DeserializeObject<ActivityUndo>(json); case "Follow":
if(a.apObject.type == "Follow") return JsonConvert.DeserializeObject<ActivityFollow>(json);
return JsonConvert.DeserializeObject<ActivityUndoFollow>(json); case "Undo":
break; var a = JsonConvert.DeserializeObject<ActivityUndo>(json);
case "Accept": if(a.apObject.type == "Follow")
var accept = JsonConvert.DeserializeObject<ActivityAccept>(json); return JsonConvert.DeserializeObject<ActivityUndoFollow>(json);
//var acceptType = JsonConvert.DeserializeObject<Activity>(accept.apObject); break;
switch ((accept.apObject as dynamic).type.ToString()) case "Accept":
{ var accept = JsonConvert.DeserializeObject<ActivityAccept>(json);
case "Follow": //var acceptType = JsonConvert.DeserializeObject<Activity>(accept.apObject);
var acceptFollow = new ActivityAcceptFollow() switch ((accept.apObject as dynamic).type.ToString())
{ {
type = accept.type, case "Follow":
id = accept.id, var acceptFollow = new ActivityAcceptFollow()
actor = accept.actor,
context = accept.context,
apObject = new ActivityFollow()
{ {
id = (accept.apObject as dynamic).id?.ToString(), type = accept.type,
type = (accept.apObject as dynamic).type?.ToString(), id = accept.id,
actor = (accept.apObject as dynamic).actor?.ToString(), actor = accept.actor,
context = (accept.apObject as dynamic).context?.ToString(), context = accept.context,
apObject = (accept.apObject as dynamic).@object?.ToString() apObject = new ActivityFollow()
} {
}; id = (accept.apObject as dynamic).id?.ToString(),
return acceptFollow; type = (accept.apObject as dynamic).type?.ToString(),
break; actor = (accept.apObject as dynamic).actor?.ToString(),
} context = (accept.apObject as dynamic).context?.ToString(),
break; apObject = (accept.apObject as dynamic).@object?.ToString()
}
};
return acceptFollow;
break;
}
break;
}
}
catch (Exception e)
{
Console.WriteLine(e);
} }
return null; return null;