-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintercom.go
87 lines (78 loc) · 1.99 KB
/
intercom.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
package intercom
import (
"fmt"
"github.com/getevo/evo/v2/lib/args"
"github.com/getevo/evo/v2/lib/db"
"github.com/getevo/evo/v2/lib/log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/iesitalia/intercom-module/nats"
)
var app *fiber.App
var manifest Manifest
var tempDir = args.Get("-tmp-dir")
func Register(connector Connector) {
if tempDir == "" {
tempDir = "./tmp"
}
err := manifest.Load("manifest.json")
if err != nil {
log.Fatal(err)
}
var port = args.Get("-p")
if port == "" {
port = manifest.Port
}
setupDatabase()
err = nats.Register(args.Get("-db-database"), args.Get("-nats-server"), args.Get("-nats-username"), args.Get("-nats-password"))
if err != nil {
log.Error(err)
}
db.UseModel(Manifest{}, Batch{}, Message{}, Body{}, Attachment{})
db.DoMigration()
err = manifest.LoadConfig()
if err != nil {
log.Fatal(err)
}
manifest.Queue = Queue{}
app = fiber.New(fiber.Config{
DisableStartupMessage: true,
ServerHeader: connector.Name(),
})
err = connector.Register()
if err != nil {
log.Fatal(err)
}
connector, err = connector.SetManifest()
if err != nil {
log.Fatal(err)
}
nats.Subscribe("queue", func(subject string, message []byte) {
fmt.Println(subject, string(message))
})
app.Use(logger.New(logger.Config{
Format: ">${time} | ${status} | ${latency} | " + connector.Name() + " | ${method} | ${path} | ${error}\n ",
}))
err = connector.Router()
if err != nil {
log.Critical(err)
}
var controller = Controller{
manifest: &manifest,
connector: connector,
}
for i := 0; i < manifest.ConcurrentMessageDispatchers; i++ {
go controller.ProcessBatch()
}
//go controller.LoadBatch()
app.Get("/health", controller.HealthCheckHandler)
app.Get("/config", controller.GetConfigHandler)
app.Post("/config", controller.SetConfigHandler)
app.Post("/send", controller.SendHandler)
err = connector.WhenReady()
if err != nil {
return
}
err = app.Listen("127.0.0.1:" + port)
log.Critical(err)
}