-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
95 lines (80 loc) · 1.84 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package main
import (
"context"
"flag"
"fmt"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"net/http"
"strconv"
"time"
)
var httpMetricsServer *http.Server
func main() {
prometheusFlag := flag.Bool("prom", false, "Toggle Prometheus metrics export.")
batchFlag := flag.Bool("batch", false, "Toggle batch sending with external service.")
flag.Parse()
SendBatchEnabled = *batchFlag
var err error
ReadEnvs()
if err != nil {
log.Fatal(err)
return
}
ctx := context.Background()
var repo Repository
if err = repo.Init(ctx); err != nil {
log.Fatal(err)
}
// almanax
var almFeeds []AlmanaxFeed
if almFeeds, err = repo.GetAlmanaxFeeds([]uint64{}); err != nil {
log.Fatal(err)
}
go func(ctx context.Context) {
for _, feed := range almFeeds {
time.Sleep(time.Second * 2)
go ListenAlmanax(ctx, feed)
}
}(ctx)
// twitter
var twitterFeeds []TwitterFeed
twitterFeeds, err = repo.GetTwitterFeeds([]uint64{})
if err != nil {
log.Fatal(err)
}
for _, feed := range twitterFeeds {
go ListenTwitter(ctx, feed)
}
// rss
var rssFeeds []RssFeed
rssFeeds, err = repo.GetRssFeeds([]uint64{})
if err != nil {
log.Fatal(err)
}
for _, feed := range rssFeeds {
go ListenRss(ctx, feed)
}
repo.Deinit()
httpDataServer := &http.Server{
Addr: fmt.Sprintf(":%s", ApiPort),
Handler: Router(),
}
if *prometheusFlag {
apiPort, _ := strconv.Atoi(ApiPort)
httpMetricsServer = &http.Server{
Addr: fmt.Sprintf(":%d", apiPort+1),
Handler: promhttp.Handler(),
}
go func() {
log.Printf("metrics on port %d\n", apiPort+1)
if err := httpMetricsServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatal(err)
}
}()
}
log.Printf("listen on port %s\n", ApiPort)
if err := httpDataServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatal(err)
}
}