goap/nsOstatus.go
Melody 7a8579bc0e All parsers for the different elements done
Now to make a parser to combine all of them into one for a giant chain
2024-08-26 14:01:19 +02:00

89 lines
2.1 KiB
Go

package goap
type OstatusAtomUriData struct {
Next BaseApChain
Uri ValueValue[string]
}
func (atomurivalue *OstatusAtomUriData) GetSelfOrBase() (BaseApChain, bool) {
return atomurivalue.Next, true
}
func (atomurivalue *OstatusAtomUriData) MarshalToMap() map[string]any {
return appendWithKey(
atomurivalue.Next.MarshalToMap(),
KEY_OSTATUS_ATOMURI,
[]map[string]any{atomurivalue.Uri.Marshal()},
)
}
func ParseOstatusAtomUriData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
rawData1, ok := raw[KEY_OSTATUS_ATOMURI]
if !ok {
return nil, NoRequiredFieldError{KEY_OSTATUS_ATOMURI}
}
data1, ok := rawData1.([]map[string]any)
if !ok {
return nil, BadFieldValueError[[]map[string]any]{
KEY_OSTATUS_ATOMURI,
rawData1,
data1,
}
}
if len(data1) != 1 {
return nil, BadFieldArrayLengthError{KEY_OSTATUS_ATOMURI, 1, len(data1)}
}
tmp, err := ParseValueValue[string](data1[0])
if err != nil {
return nil, err
}
delete(raw, KEY_OSTATUS_ATOMURI)
return &OstatusAtomUriData{
Next: next,
Uri: *tmp,
}, nil
}
type OstatusConversationData struct {
Next BaseApChain
Uri ValueValue[string]
}
func (atomurivalue *OstatusConversationData) GetSelfOrBase() (BaseApChain, bool) {
return atomurivalue.Next, true
}
func (atomurivalue *OstatusConversationData) MarshalToMap() map[string]any {
return appendWithKey(
atomurivalue.Next.MarshalToMap(),
KEY_OSTATUS_CONVERSATION,
[]map[string]any{atomurivalue.Uri.Marshal()},
)
}
func ParseOstatusConversationData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
rawData1, ok := raw[KEY_OSTATUS_CONVERSATION]
if !ok {
return nil, NoRequiredFieldError{KEY_OSTATUS_CONVERSATION}
}
data1, ok := rawData1.([]map[string]any)
if !ok {
return nil, BadFieldValueError[[]map[string]any]{
KEY_OSTATUS_CONVERSATION,
rawData1,
data1,
}
}
if len(data1) != 1 {
return nil, BadFieldArrayLengthError{KEY_OSTATUS_CONVERSATION, 1, len(data1)}
}
tmp, err := ParseValueValue[string](data1[0])
if err != nil {
return nil, err
}
delete(raw, KEY_OSTATUS_CONVERSATION)
return &OstatusConversationData{
Next: next,
Uri: *tmp,
}, nil
}