aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2023-01-02 01:21:10 +0000
committerJulio Capote <jcapote@gmail.com>2023-01-02 01:21:10 +0000
commit36e41939772d0441dc023f7b02e96567441b02ec (patch)
tree2fc9d1027248a46af47b4e99ee58e7d66c6baf42
parent8bd180f221e1a767934de81dbd99fbfadccc7a93 (diff)
downloadcommunique-36e41939772d0441dc023f7b02e96567441b02ec.tar.gz
execute tick on boot, add real world handler example
Diffstat (limited to '')
-rwxr-xr-xautosport-handler.sh4
-rw-r--r--cgi/servers.go27
-rw-r--r--sample-config.toml16
3 files changed, 36 insertions, 11 deletions
diff --git a/autosport-handler.sh b/autosport-handler.sh
new file mode 100755
index 0000000..d9e3352
--- /dev/null
+++ b/autosport-handler.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+echo "Content-type: application/xml"
+echo ""
+curl -s https://www.autosport.com/rss/f1/news/
diff --git a/cgi/servers.go b/cgi/servers.go
index 58d72c1..a3c7e47 100644
--- a/cgi/servers.go
+++ b/cgi/servers.go
@@ -32,15 +32,28 @@ func (s *Servers) Start(cfg config.Config) {
var wg sync.WaitGroup
for _, handler := range cfg.Handlers {
- wg.Add(2)
+ wg.Add(3)
+ // Internal CGI server
go func(aHandler config.Handler) {
defer wg.Done()
startCGIServer(aHandler)
}(handler)
+ // Ticker
go func(aHandler config.Handler) {
defer wg.Done()
startTicker(aHandler, s.persister, s.log)
}(handler)
+ // Execute a handler tick on start since Go's ticker waits until $interval to trigger first tick
+ go func(aHandler config.Handler) {
+ defer wg.Done()
+ time.Sleep(1 * time.Second)
+ output := tick(aHandler)
+ err := processTick(aHandler, output, s.persister, s.log)
+ if err != nil {
+ s.log.Error(err)
+ }
+ }(handler)
+
}
wg.Wait()
}
@@ -89,11 +102,13 @@ func processTick(h config.Handler, output []byte, persister *models.Persister, l
}
for _, v := range feed.Items {
- log.Debugf("found content '%s'", v.Content)
- outboxItem := models.CreateOutboxItem(h, []byte(v.Content))
- err = persister.Store(outboxItem)
- if err != nil {
- return err
+ if len(v.Description) != 0 {
+ log.Debugf("found description '%s'", v.Description)
+ outboxItem := models.CreateOutboxItem(h, []byte(v.Description))
+ err = persister.Store(outboxItem)
+ if err != nil {
+ return err
+ }
}
}
return nil
diff --git a/sample-config.toml b/sample-config.toml
index a77678c..7cd02f7 100644
--- a/sample-config.toml
+++ b/sample-config.toml
@@ -1,13 +1,19 @@
domain = "activitybub.xyz"
dbPath = "bub.db"
+# [[handlers]]
+# name = "sample"
+# rpc = "cgi" # rename to protocol?
+# exec = "sample-cgi-handler.sh"
+# interval = "5s"
+# dedupWindow = "1m"
+
[[handlers]]
-name = "sample"
+name = "autosport"
rpc = "cgi" # rename to protocol?
-# add response type? like Note
-exec = "sample-cgi-handler.sh"
-interval = "5s"
-dedupWindow = "1m"
+exec = "autosport-handler.sh"
+interval = "10m"
+dedupWindow = "900h"
# [[handlers]]
# name = "another"