-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathdevopstic.go
More file actions
71 lines (59 loc) · 2.26 KB
/
devopstic.go
File metadata and controls
71 lines (59 loc) · 2.26 KB
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
package devopstic
import (
"github.com/gin-gonic/gin"
"github.com/prometheus/common/log"
"github.com/splisson/devopstic/handlers"
"github.com/splisson/devopstic/middleware"
"os"
)
func BuildEngine(commitHandlers *handlers.CommitHandlers, eventHandlers *handlers.EventHandlers, githubEventHandlers *handlers.GithubEventHandlers, gitlabEventHandlers *handlers.GitlabEventHandlers, pagerDutyHandlers *handlers.PagerDutyHandlers) *gin.Engine {
r := gin.New()
// Global middleware
// Logger middleware will write the logs to gin.DefaultWriter even if you set with GIN_MODE=release.
// By default gin.DefaultWriter = os.Stdout
r.Use(gin.Logger())
// Recovery middleware recovers from any panics and writes a 500 if there was one.
r.Use(gin.Recovery())
// JWT
// the jwt middleware
authMiddleware := middleware.NewAuthMiddleware()
r.GET("/health", func(c *gin.Context) {
c.JSON(200, gin.H{})
})
r.POST("/tokens", authMiddleware.LoginHandler)
auth := r.Group("/")
auth.Use(authMiddleware.MiddlewareFunc())
{
auth.GET("/commits", commitHandlers.GetCommits)
auth.GET("/events", eventHandlers.GetEvents)
auth.POST("/events", eventHandlers.PostEvents)
auth.POST("/webhook/:token/events", eventHandlers.PostEvents)
auth.GET("/refresh_token", authMiddleware.RefreshHandler)
}
githubSecret := os.Getenv("DEVOPSTIC_GITHUB_WEBHOOK_SECRET")
if len(githubSecret) <= 0 {
log.Warn("missing github webhook secret env var: DEVOPSTIC_GITHUB_WEBHOOK_SECRET")
} else {
githubAuthMiddleware := middleware.NewGithubAuthMiddleware(githubSecret)
githubAuth := r.Group("/github")
githubAuth.Use(githubAuthMiddleware.MiddlewareFunc())
{
githubAuth.POST("/events", githubEventHandlers.PostGithubEvents)
}
}
gitlabSecret := os.Getenv("DEVOPSTIC_GITLAB_WEBHOOK_SECRET")
if len(gitlabSecret) <= 0 {
log.Warn("missing gitlab webhook secret env var: DEVOPSTIC_GITLAB_WEBHOOK_SECRET")
} else {
gitlabAuthMiddleware := middleware.NewGitlabAuthMiddleware(gitlabSecret)
gitlabAuth := r.Group("/gitlab")
gitlabAuth.Use(gitlabAuthMiddleware.MiddlewareFunc())
{
gitlabAuth.POST("/events", gitlabEventHandlers.PostGitlabEvents)
}
}
// PagerDuty
pagerDutyAuth := r.Group("/pagerduty")
pagerDutyAuth.POST("/incidents", pagerDutyHandlers.PostPagerDutyIncidents)
return r
}