mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Federate status language in and out (#2366)
* [feature] Federate status language in + out * go fmt * tests, little fix * improve comments * unnest a bit * avoid unnecessary nil check * use more descriptive variable for contentMap * prefer instance languages when selecting from contentMap * update docs to reflect lang selection * rename rdfLangString -> rdfLangs * update comments to mention Pollable * iter through slice instead of map
This commit is contained in:
@ -631,27 +631,34 @@ func ExtractPublicKey(i WithPublicKey) (
|
||||
return nil, nil, nil, gtserror.New("couldn't find public key")
|
||||
}
|
||||
|
||||
// ExtractContent returns a string representation of the
|
||||
// given interface's Content property, or an empty string
|
||||
// if no Content is found.
|
||||
func ExtractContent(i WithContent) string {
|
||||
contentProperty := i.GetActivityStreamsContent()
|
||||
if contentProperty == nil {
|
||||
return ""
|
||||
// ExtractContent returns an intermediary representation of
|
||||
// the given interface's Content and/or ContentMap property.
|
||||
func ExtractContent(i WithContent) gtsmodel.Content {
|
||||
content := gtsmodel.Content{}
|
||||
|
||||
contentProp := i.GetActivityStreamsContent()
|
||||
if contentProp == nil {
|
||||
// No content at all.
|
||||
return content
|
||||
}
|
||||
|
||||
for iter := contentProperty.Begin(); iter != contentProperty.End(); iter = iter.Next() {
|
||||
for iter := contentProp.Begin(); iter != contentProp.End(); iter = iter.Next() {
|
||||
switch {
|
||||
// Content may be parsed as IRI, depending on
|
||||
// how it's formatted, so account for this.
|
||||
case iter.IsXMLSchemaString():
|
||||
return iter.GetXMLSchemaString()
|
||||
case iter.IsIRI():
|
||||
return iter.GetIRI().String()
|
||||
case iter.IsRDFLangString() &&
|
||||
len(content.ContentMap) == 0:
|
||||
content.ContentMap = iter.GetRDFLangString()
|
||||
|
||||
case iter.IsXMLSchemaString() &&
|
||||
content.Content == "":
|
||||
content.Content = iter.GetXMLSchemaString()
|
||||
|
||||
case iter.IsIRI() &&
|
||||
content.Content == "":
|
||||
content.Content = iter.GetIRI().String()
|
||||
}
|
||||
}
|
||||
|
||||
return ""
|
||||
return content
|
||||
}
|
||||
|
||||
// ExtractAttachments attempts to extract barebones MediaAttachment objects from given AS interface type.
|
||||
|
Reference in New Issue
Block a user