diff options
author | 2021-11-13 17:29:43 +0100 | |
---|---|---|
committer | 2021-11-13 17:29:43 +0100 | |
commit | 09ef9e639efa1b01005dcb7fc044611f277ad618 (patch) | |
tree | bef200f444b7ddd90f2b9f0fcff644da7cd85a11 /internal/ap | |
parent | update dependencies (#296) (diff) | |
download | gotosocial-09ef9e639efa1b01005dcb7fc044611f277ad618.tar.xz |
move to ssb gofed fork (#298)
Diffstat (limited to 'internal/ap')
-rw-r--r-- | internal/ap/extract.go | 20 | ||||
-rw-r--r-- | internal/ap/extract_test.go | 10 | ||||
-rw-r--r-- | internal/ap/extractattachments_test.go | 2 | ||||
-rw-r--r-- | internal/ap/extractsensitive_test.go | 42 | ||||
-rw-r--r-- | internal/ap/interfaces.go | 6 |
5 files changed, 72 insertions, 8 deletions
diff --git a/internal/ap/extract.go b/internal/ap/extract.go index f6ba555a8..b96079dec 100644 --- a/internal/ap/extract.go +++ b/internal/ap/extract.go @@ -31,7 +31,7 @@ import ( "strings" "time" - "github.com/go-fed/activity/pub" + "github.com/superseriousbusiness/activity/pub" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/util" ) @@ -671,3 +671,21 @@ func isFollowers(uris []*url.URL, followersURI string) bool { } return false } + +// ExtractSensitive extracts whether or not an item is 'sensitive'. +// If no sensitive property is set on the item at all, or if this property +// isn't a boolean, then false will be returned by default. +func ExtractSensitive(withSensitive WithSensitive) bool { + sensitiveProp := withSensitive.GetActivityStreamsSensitive() + if sensitiveProp == nil { + return false + } + + for iter := sensitiveProp.Begin(); iter != sensitiveProp.End(); iter = iter.Next() { + if iter.IsXMLSchemaBoolean() { + return iter.Get() + } + } + + return false +} diff --git a/internal/ap/extract_test.go b/internal/ap/extract_test.go index 1b5c1f11f..5a3907ef7 100644 --- a/internal/ap/extract_test.go +++ b/internal/ap/extract_test.go @@ -22,10 +22,10 @@ import ( "context" "encoding/json" - "github.com/go-fed/activity/pub" - "github.com/go-fed/activity/streams" - "github.com/go-fed/activity/streams/vocab" "github.com/stretchr/testify/suite" + "github.com/superseriousbusiness/activity/pub" + "github.com/superseriousbusiness/activity/streams" + "github.com/superseriousbusiness/activity/streams/vocab" "github.com/superseriousbusiness/gotosocial/internal/ap" "github.com/superseriousbusiness/gotosocial/testrig" ) @@ -49,6 +49,10 @@ func document1() vocab.ActivityStreamsDocument { dBlurhash.Set("UxQ0EkRP_4tRxtRjWBt7%hozM_ayV@oLf6WB") d.SetTootBlurhash(dBlurhash) + dSensitive := streams.NewActivityStreamsSensitiveProperty() + dSensitive.AppendXMLSchemaBoolean(true) + d.SetActivityStreamsSensitive(dSensitive) + return d } diff --git a/internal/ap/extractattachments_test.go b/internal/ap/extractattachments_test.go index 3be340cc5..e6262b5aa 100644 --- a/internal/ap/extractattachments_test.go +++ b/internal/ap/extractattachments_test.go @@ -21,8 +21,8 @@ package ap_test import ( "testing" - "github.com/go-fed/activity/streams" "github.com/stretchr/testify/suite" + "github.com/superseriousbusiness/activity/streams" "github.com/superseriousbusiness/gotosocial/internal/ap" ) diff --git a/internal/ap/extractsensitive_test.go b/internal/ap/extractsensitive_test.go new file mode 100644 index 000000000..00b96d736 --- /dev/null +++ b/internal/ap/extractsensitive_test.go @@ -0,0 +1,42 @@ +/* + GoToSocial + Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package ap_test + +import ( + "testing" + + "github.com/stretchr/testify/suite" + "github.com/superseriousbusiness/gotosocial/internal/ap" +) + +type ExtractSensitiveTestSuite struct { + ExtractTestSuite +} + +func (suite *ExtractMentionsTestSuite) TestExtractSensitive() { + d := suite.document1 + suite.True(ap.ExtractSensitive(d)) + + n := suite.noteWithMentions1 + suite.False(ap.ExtractSensitive(n)) +} + +func TestExtractSensitiveTestSuite(t *testing.T) { + suite.Run(t, &ExtractSensitiveTestSuite{}) +} diff --git a/internal/ap/interfaces.go b/internal/ap/interfaces.go index da7e001db..7c8c1c943 100644 --- a/internal/ap/interfaces.go +++ b/internal/ap/interfaces.go @@ -18,7 +18,7 @@ package ap -import "github.com/go-fed/activity/streams/vocab" +import "github.com/superseriousbusiness/activity/streams/vocab" // Accountable represents the minimum activitypub interface for representing an 'account'. // This interface is fulfilled by: Person, Application, Organization, Service, and Group @@ -249,9 +249,9 @@ type WithCC interface { GetActivityStreamsCc() vocab.ActivityStreamsCcProperty } -// WithSensitive ... +// WithSensitive represents an activity with ActivityStreamsSensitiveProperty type WithSensitive interface { - // TODO + GetActivityStreamsSensitive() vocab.ActivityStreamsSensitiveProperty } // WithConversation ... |