mirror of
				https://github.com/NicolasConstant/BirdsiteLive
				synced 2025-06-05 21:49:16 +02:00 
			
		
		
		
	fix actor serialization
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using JsonConverter = Newtonsoft.Json.JsonConverter;
 | 
			
		||||
 | 
			
		||||
namespace BirdsiteLive.ActivityPub
 | 
			
		||||
{
 | 
			
		||||
@@ -8,7 +9,8 @@ namespace BirdsiteLive.ActivityPub
 | 
			
		||||
    {
 | 
			
		||||
        //[JsonPropertyName("@context")]
 | 
			
		||||
        [JsonProperty("@context")]
 | 
			
		||||
        public object[] context { get; set; } = new[] {"https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1" };
 | 
			
		||||
        [JsonConverter(typeof(ContextArrayConverter))]
 | 
			
		||||
        public string[] context { get; set; } = new[] { "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1" };
 | 
			
		||||
        public string id { get; set; }
 | 
			
		||||
        public string type { get; set; }
 | 
			
		||||
        public string preferredUsername { get; set; }
 | 
			
		||||
@@ -20,4 +22,37 @@ namespace BirdsiteLive.ActivityPub
 | 
			
		||||
        public Image icon { get; set; }
 | 
			
		||||
        public Image image { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class ContextArrayConverter : JsonConverter
 | 
			
		||||
    {
 | 
			
		||||
        public override bool CanWrite { get { return false; } }
 | 
			
		||||
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
 | 
			
		||||
        {
 | 
			
		||||
            throw new NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 | 
			
		||||
        {
 | 
			
		||||
            var result = new List<string>();
 | 
			
		||||
 | 
			
		||||
            var list = serializer.Deserialize<List<object>>(reader);
 | 
			
		||||
            foreach (var l in list)
 | 
			
		||||
            {
 | 
			
		||||
                if (l is string s)
 | 
			
		||||
                    result.Add(s);
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    var str = JsonConvert.SerializeObject(l);
 | 
			
		||||
                    result.Add(str);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return result.ToArray();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override bool CanConvert(Type objectType)
 | 
			
		||||
        {
 | 
			
		||||
            throw new NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -73,7 +73,7 @@ namespace BirdsiteLive.Controllers
 | 
			
		||||
 | 
			
		||||
        private Dictionary<string, string> RequestHeaders(IHeaderDictionary header)
 | 
			
		||||
        {
 | 
			
		||||
            return header.ToDictionary<KeyValuePair<string, StringValues>, string, string>(h => h.Key, h => h.Value);
 | 
			
		||||
            return header.ToDictionary<KeyValuePair<string, StringValues>, string, string>(h => h.Key.ToLowerInvariant(), h => h.Value);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -16,6 +16,20 @@ namespace BirdsiteLive.ActivityPub.Tests
 | 
			
		||||
            var actor = JsonConvert.DeserializeObject<Actor>(json);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [TestMethod]
 | 
			
		||||
        public void Serialize()
 | 
			
		||||
        {
 | 
			
		||||
            var obj = new Actor
 | 
			
		||||
            {
 | 
			
		||||
                type = "Person",
 | 
			
		||||
                id = "id"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            var json = JsonConvert.SerializeObject(obj);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user