summaryrefslogtreecommitdiff
path: root/internal/ap/extract.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-10-31 12:05:17 +0100
committerLibravatar GitHub <noreply@github.com>2023-10-31 11:05:17 +0000
commit51d0a0bba5cc7c5c170b2137f169d65e49966c84 (patch)
treed668b90bafab3c66b79c2a0f9b39f8702186a4c8 /internal/ap/extract.go
parent[bugfix] Allow blocked accounts to show in precise search (#2321) (diff)
downloadgotosocial-51d0a0bba5cc7c5c170b2137f169d65e49966c84.tar.xz
[bugfix] Relax `Mention` parsing, allowing either href or name (#2320)
Diffstat (limited to 'internal/ap/extract.go')
-rw-r--r--internal/ap/extract.go27
1 files changed, 13 insertions, 14 deletions
diff --git a/internal/ap/extract.go b/internal/ap/extract.go
index 6d224e9a8..74c4497b3 100644
--- a/internal/ap/extract.go
+++ b/internal/ap/extract.go
@@ -32,7 +32,6 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/text"
- "github.com/superseriousbusiness/gotosocial/internal/util"
)
// ExtractObjects will extract object vocab.Types from given implementing interface.
@@ -841,27 +840,27 @@ func ExtractMentions(i WithTag) ([]*gtsmodel.Mention, error) {
// ExtractMention extracts a minimal gtsmodel.Mention from a Mentionable.
func ExtractMention(i Mentionable) (*gtsmodel.Mention, error) {
+ // See if a name has been set in the
+ // format `@someone@example.org`.
nameString := ExtractName(i)
- if nameString == "" {
- return nil, gtserror.New("name prop empty")
- }
-
- // Ensure namestring is valid so we
- // can handle it properly later on.
- if _, _, err := util.ExtractNamestringParts(nameString); err != nil {
- return nil, err
- }
// The href prop should be the AP URI
- // of the target account.
+ // of the target account; it could also
+ // be the URL, but we'll check this later.
+ var href string
hrefProp := i.GetActivityStreamsHref()
- if hrefProp == nil || !hrefProp.IsIRI() {
- return nil, gtserror.New("no href prop")
+ if hrefProp != nil && hrefProp.IsIRI() {
+ href = hrefProp.GetIRI().String()
+ }
+
+ // One of nameString and hrefProp must be set.
+ if nameString == "" && href == "" {
+ return nil, gtserror.Newf("neither Name nor Href were set")
}
return &gtsmodel.Mention{
NameString: nameString,
- TargetAccountURI: hrefProp.GetIRI().String(),
+ TargetAccountURI: href,
}, nil
}