goap/variousTypes.go
2024-07-29 10:01:49 +02:00

72 lines
1.2 KiB
Go

package goap
type PublicKey struct {
Id string
Owner string
Pem string
}
type Attachment struct {
Type string
Value string
Name string
}
type Media struct {
Type string
MediaType string
Url string
}
type Tag struct {
Type string
Href string
Name string
}
type IdValue struct {
Id string
}
type ValueValue[T any] struct {
Type *string
Value T
}
func (p PublicKey) Marshal() map[string]any {
return map[string]any{
KEY_ID: p.Id,
KEY_W3_SECURITY_OWNER: IdValue{Id: p.Owner}.Marshal(),
}
}
func (a Attachment) Marshal() map[string]any {
return map[string]any{
KEY_TYPE: []string{KEY_SCHEMA_PROPERTYVALUE},
KEY_SCHEMA_VALUE: ValueValue[string]{Value: a.Value}.Marshal(),
}
}
func (t Tag) Marshal() map[string]any {
return map[string]any{
KEY_TYPE: t.Type,
KEY_ACTIVITYSTREAMS_NAME: t.Name,
KEY_ACTIVITYSTREAMS_HREF: IdValue{Id: t.Href}.Marshal(),
}
}
func (i IdValue) Marshal() map[string]any {
return map[string]any{
KEY_ID: i.Id,
}
}
func (v ValueValue[T]) Marshal() map[string]any {
m := map[string]any{
KEY_VALUE: v.Value,
}
if v.Type != nil {
m[KEY_TYPE] = *v.Type
}
return m
}