aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgi/servers.go44
-rwxr-xr-xsample-cgi-handler.sh2
-rw-r--r--sample-config.toml2
3 files changed, 39 insertions, 9 deletions
diff --git a/cgi/servers.go b/cgi/servers.go
index 55bc5d2..91c98e9 100644
--- a/cgi/servers.go
+++ b/cgi/servers.go
@@ -2,6 +2,7 @@ package cgi
import (
"context"
+ "encoding/json"
"fmt"
"io/ioutil"
"net"
@@ -13,6 +14,8 @@ import (
"git.capotej.com/capotej/communique/config"
"github.com/dgraph-io/badger/v3"
+ "github.com/go-fed/activity/streams"
+ "github.com/go-fed/activity/streams/vocab"
"go.uber.org/zap"
)
@@ -68,14 +71,15 @@ func startTicker(h config.Handler, db *badger.DB, log *zap.SugaredLogger) {
select {
case <-done:
return
- case t := <-ticker.C:
+ case _ = <-ticker.C:
output := tick(h)
- keyName := fmt.Sprintf("outbox:%s:%d", h.Name, t.Unix())
- err := db.Update(func(txn *badger.Txn) error {
- e := badger.NewEntry([]byte(keyName), output)
- log.With("name", "ticker").Infof("writing '%s' to %s", output, keyName)
- return txn.SetEntry(e)
- })
+ err := processTick(output, db, log)
+ // keyName := fmt.Sprintf("outbox:%s:%d", h.Name, t.Unix())
+ // err := db.Update(func(txn *badger.Txn) error {
+ // e := badger.NewEntry([]byte(keyName), output)
+ // log.With("name", "ticker").Infof("writing '%s' to %s", output, keyName)
+ // return txn.SetEntry(e)
+ // })
if err != nil {
log.Error(err)
}
@@ -84,6 +88,32 @@ func startTicker(h config.Handler, db *badger.DB, log *zap.SugaredLogger) {
}()
}
+func processTick(output []byte, db *badger.DB, log *zap.SugaredLogger) error {
+ log.Debugf("processTick map is %+s", string(output))
+ var m map[string]interface{}
+ err := json.Unmarshal(output, &m)
+ if err != nil {
+ return fmt.Errorf("could not unmarshal JSON: %w", err)
+ }
+ log.Debugf("processTick map is %+v", m)
+ var coll vocab.ActivityStreamsOrderedCollection
+ resolver, err := streams.NewJSONResolver(func(c context.Context, a vocab.ActivityStreamsOrderedCollection) error {
+ // Example: store the article in the enclosing scope, for later.
+ coll = a
+ // We could pass an error back up, if desired.
+ return nil
+ })
+ ctx := context.Background()
+ err = resolver.Resolve(ctx, m)
+ if err != nil {
+ return fmt.Errorf("could not resolve JSON: %w", err)
+ }
+ log.Debugf("coll is %+v", coll)
+ // TODO TODO TODO
+ coll.GetActivityStreamsOrderedItems()
+ return nil
+}
+
func tick(h config.Handler) []byte {
sock := fmt.Sprintf("%s.sock", h.Name)
httpc := http.Client{
diff --git a/sample-cgi-handler.sh b/sample-cgi-handler.sh
index 7cef511..ccad5e7 100755
--- a/sample-cgi-handler.sh
+++ b/sample-cgi-handler.sh
@@ -9,6 +9,6 @@ echo '{
{
"type": "Note",
"content": "hi"
- },
+ }
]}'
exit 0
diff --git a/sample-config.toml b/sample-config.toml
index 6a8b6f9..38a71f7 100644
--- a/sample-config.toml
+++ b/sample-config.toml
@@ -5,7 +5,7 @@ dbPath = "bub.db"
name = "sample"
rpc = "cgi"
exec = "sample-cgi-handler.sh"
-interval = "10s"
+interval = "5s"
# [[handlers]]
# name = "another"