diff options
author | Julio Capote <jcapote@gmail.com> | 2023-01-02 01:21:10 +0000 |
---|---|---|
committer | Julio Capote <jcapote@gmail.com> | 2023-01-02 01:21:10 +0000 |
commit | 36e41939772d0441dc023f7b02e96567441b02ec (patch) | |
tree | 2fc9d1027248a46af47b4e99ee58e7d66c6baf42 /cgi/servers.go | |
parent | 8bd180f221e1a767934de81dbd99fbfadccc7a93 (diff) | |
download | communique-36e41939772d0441dc023f7b02e96567441b02ec.tar.gz |
execute tick on boot, add real world handler example
Diffstat (limited to 'cgi/servers.go')
-rw-r--r-- | cgi/servers.go | 27 |
1 files changed, 21 insertions, 6 deletions
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 |