package mastodon import ( "time" "git.mstar.dev/mstar/goap" ) type Person struct { Id string Devices string Discoverable bool Featured string FeaturedTags string Indexable bool Memorial bool Inbox string PublicKey goap.PublicKey AlsoKnownAs string Attachments []goap.Attachment Endpoints map[string]string Followers string Following string Icon goap.Media Image goap.Media ApprovesFollowers bool Name string Outbox string PreferredUsername string Published time.Time Summary string Tags []goap.Tag Url string } func PersonFromChain(base goap.BaseApChain) (*Person, error) { id, ok := goap.FindAttribute[*goap.UDIdData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ID} } devices, ok := goap.FindAttribute[*goap.MastoDevicesData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_DEVICES} } discoverable, ok := goap.FindAttribute[*goap.MastoDiscoverableData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_DISCOVERABLE} } featured, ok := goap.FindAttribute[*goap.MastoFeaturedData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_FEATURED} } featuredTags, ok := goap.FindAttribute[*goap.MastoFeaturedTagsData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_FEATURED_TAGS} } Indexable, ok := goap.FindAttribute[*goap.MastoIndexableData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_INDEXABLE} } memorial, ok := goap.FindAttribute[*goap.MastoMemorialData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_MASTO_MEMORIAL} } inbox, ok := goap.FindAttribute[*goap.W3InboxData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_W3_INBOX} } publicKey, ok := goap.FindAttribute[*goap.W3SecurityPublicKeyData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_W3_SECURITY_PUBLICKEY} } alsoKnownAs, ok := goap.FindAttribute[*goap.ASAlsoKnownAsData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_ALSOKNOWNAS} } attachments, ok := goap.FindAttribute[*goap.ASAttachmentsData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_ATTACHMENTS} } endpoints, ok := goap.FindAttribute[*goap.ASEndpointsData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_ENDPOINTS} } followers, ok := goap.FindAttribute[*goap.ASFollowersData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_FOLLOWERS} } following, ok := goap.FindAttribute[*goap.ASFollowingData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_FOLLOWING} } icon, ok := goap.FindAttribute[*goap.ASIconData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_ICON} } image, ok := goap.FindAttribute[*goap.ASImageData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_IMAGE_ATTRIBUTE} } approvesFollowers, ok := goap.FindAttribute[*goap.ASRestrictedFollowData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_RESTRICTED_FOLLOW} } name, ok := goap.FindAttribute[*goap.ASNameData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_NAME} } outbox, ok := goap.FindAttribute[*goap.ASOutboxData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_OUTBOX} } preferredUsername, ok := goap.FindAttribute[*goap.ASPreferredNameData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_PREFFEREDUSERNAME} } published, ok := goap.FindAttribute[*goap.ASPublishedData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_PUBLISHED} } summary, ok := goap.FindAttribute[*goap.ASSummaryData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_SUMMARY} } tags, ok := goap.FindAttribute[*goap.ASTagData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_TAG} } url, ok := goap.FindAttribute[*goap.ASUrlData](base) if !ok { return nil, goap.NoRequiredFieldError{FieldName: goap.KEY_ACTIVITYSTREAMS_URL} } return &Person{ Id: id.Id, Devices: devices.Id, Discoverable: discoverable.Value.Value, Featured: featured.Id, FeaturedTags: featuredTags.Id, Indexable: Indexable.Value.Value, Memorial: memorial.Value.Value, Inbox: inbox.Id, PublicKey: goap.PublicKey{ Id: publicKey.Id, Owner: publicKey.Owner, Pem: publicKey.Key, }, AlsoKnownAs: alsoKnownAs.Id, Attachments: attachments.Attachments, Endpoints: endpoints.Endpoints, Followers: followers.Id, Following: following.Id, Icon: icon.Media, Image: image.Media, ApprovesFollowers: approvesFollowers.Value.Value, Name: name.Value.Value, Outbox: outbox.Id, PreferredUsername: preferredUsername.Value.Value, Published: published.Timestamp, Summary: summary.Value.Value, Tags: tags.Tags, Url: url.Id, }, nil }