aboutsummaryrefslogtreecommitdiff
path: root/models/activity_streams_object.go
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2022-12-31 02:20:02 +0000
committerJulio Capote <jcapote@gmail.com>2022-12-31 02:20:02 +0000
commitc500a2be38afcbb5688537d97c7c3ee30a57dba4 (patch)
tree79cf1884ca7529299646b567b7705378bdf08fd3 /models/activity_streams_object.go
parent74ffcfe6b2c80b7cf459798dc42bd278075ccb50 (diff)
downloadcommunique-c500a2be38afcbb5688537d97c7c3ee30a57dba4.tar.gz
parse and persist feeds from handlers
Diffstat (limited to 'models/activity_streams_object.go')
-rw-r--r--models/activity_streams_object.go54
1 files changed, 0 insertions, 54 deletions
diff --git a/models/activity_streams_object.go b/models/activity_streams_object.go
deleted file mode 100644
index 98c69bb..0000000
--- a/models/activity_streams_object.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package models
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "time"
-
- "git.capotej.com/capotej/communique/config"
- "github.com/dgraph-io/badger/v3"
- "github.com/go-fed/activity/streams/vocab"
- "github.com/segmentio/ksuid"
-)
-
-// ActivityStreamsObject is our internal model for storing activity streams objects
-// For every object we receive, we create 2+N copies of it in Badger:
-// - the original object
-// - a copy for dedupe with an optional TTL (specified by handler response) TODO
-// - a temporary copy for every subscriber until it is delivered TODO
-type ActivityStreamsObject struct {
- wrappedObject vocab.ActivityStreamsNote // OPTIONAL, not always wrapped (think .count)
- handler config.Handler
-}
-
-func NewActivityStreamsObject(obj vocab.ActivityStreamsNote, h config.Handler) *ActivityStreamsObject {
- aso := &ActivityStreamsObject{wrappedObject: obj, handler: h}
- return aso
-}
-
-func (a *ActivityStreamsObject) keyName() []byte {
- k, _ := ksuid.NewRandomWithTime(time.Now())
- key := fmt.Sprintf("%s:%s", a.Keybase(), k.String())
- return []byte(key)
-}
-
-func (a *ActivityStreamsObject) Keybase() string {
- keyBase := fmt.Sprintf("outboxes:%s", a.handler.Name)
- return keyBase
-}
-
-func (a *ActivityStreamsObject) content() []byte {
- objMap, _ := a.wrappedObject.Serialize()
- buffer := &bytes.Buffer{}
- encoder := json.NewEncoder(buffer)
- encoder.SetEscapeHTML(false)
- encoder.Encode(objMap)
- return bytes.TrimRight(buffer.Bytes(), "\n")
-}
-
-func (a *ActivityStreamsObject) Save(txn *badger.Txn) error {
- content := a.content()
- e := badger.NewEntry(a.keyName(), content)
- return txn.SetEntry(e)
-}