2026-10-01 17:49:22 +02:00
|
|
|
using MongoDB.Entities;
|
|
|
|
|
|
|
|
|
|
namespace PrivaPub.Models.Federation
|
|
|
|
|
{
|
|
|
|
|
public class ObjectRecord : Entity
|
|
|
|
|
{
|
|
|
|
|
public string ObjectURI { get; set; }
|
|
|
|
|
public string PostId { get; set; }
|
|
|
|
|
public string ObjectType { get; set; }
|
|
|
|
|
public string Host { get; set; }
|
|
|
|
|
|
|
|
|
|
public string Raw { get; set; }//the object exactly as it reached us, unless it was larger than MaxRawBytes
|
|
|
|
|
public string RawHash { get; set; }//sha-256 of the raw bytes, hex
|
|
|
|
|
public int RawBytes { get; set; }
|
|
|
|
|
public bool RawTruncated { get; set; }
|
|
|
|
|
public string ActivityContext { get; set; }//the delivering activity's @context, which an embedded object does not repeat
|
|
|
|
|
|
|
|
|
|
public ObjectPath Path { get; set; }
|
|
|
|
|
public bool Refetched { get; set; }//delivered, but read again from its origin because it came embedded from another one
|
|
|
|
|
public string ActivityId { get; set; }//the activity that brought it, or that caused the fetch
|
|
|
|
|
public string ActivityType { get; set; }
|
|
|
|
|
public string ActivityActorURI { get; set; }
|
|
|
|
|
public string Inbox { get; set; }//"shared" or "personal" when delivered
|
|
|
|
|
public string SignatureScheme { get; set; }
|
|
|
|
|
public string KeyId { get; set; }
|
|
|
|
|
public string Algorithm { get; set; }
|
|
|
|
|
public List<string> SignedHeaders { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
public DateTime ReceivedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
|
public DateTime? Published { get; set; }
|
|
|
|
|
public DateTime? Updated { get; set; }
|
|
|
|
|
public List<ObjectRevision> Revisions { get; set; } = new();
|
2026-10-03 11:15:21 +02:00
|
|
|
public List<string> Extensions { get; set; }//ObjectFeatures, stored for statistics; null on records older than v1.16
|
|
|
|
|
public List<string> ContextNamespaces { get; set; }
|
2026-10-01 17:49:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class ObjectRevision
|
|
|
|
|
{
|
|
|
|
|
public string Raw { get; set; }
|
|
|
|
|
public string RawHash { get; set; }
|
|
|
|
|
public bool RawTruncated { get; set; }
|
|
|
|
|
public string ActivityId { get; set; }
|
|
|
|
|
public DateTime? Updated { get; set; }
|
|
|
|
|
public DateTime ReceivedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum ObjectPath
|
|
|
|
|
{
|
|
|
|
|
Delivered,
|
|
|
|
|
Fetched
|
|
|
|
|
}
|
|
|
|
|
}
|