/
main.go
89 lines (72 loc) · 2.22 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
package main
import (
"os"
"fmt"
"runtime"
"path/filepath"
"github.com/kataras/iris"
herolib "github.com/kataras/iris/hero"
. "github.com/cifren/ghyt-api/ghyt/core"
. "github.com/cifren/ghyt-api/ghyt/core/handler"
"github.com/cifren/ghyt-api/ghyt/core/logger"
demoConfig "github.com/cifren/ghyt-api-demo/config"
demoRepository "github.com/cifren/ghyt-api-demo/src/repository"
)
func main() {
// Web Server
app := iris.New()
// Method: GET
// Resource: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
ctx.HTML("<h1>Welcome on Ghyt API</h1>")
})
def := register()
webhookHandler := def.Handler(GhWebhookHandler)
app.Post("/webhook-gh", webhookHandler)
app.Get("/conf", def.Handler(func(ctx iris.Context, container Container) {
jobs, err := container.Get("jobsConfRepository").(demoRepository.JobRepository).GetJobs()
if err != nil {
ctx.JSON(map[string]interface{}{"message": fmt.Sprintf("%s", err)})
return
}
ctx.JSON(jobs)
}))
app.OnErrorCode(iris.StatusInternalServerError, internalServerError)
app.Run(iris.Addr(":" + os.Getenv("PORT")), iris.WithoutServerError(iris.ErrServerClosed))
}
func getPath() string {
_, b, _, _ := runtime.Caller(0)
return filepath.Dir(b)
}
func register() herolib.Hero {
def := herolib.New()
all := make(map[string]interface{})
all["parameters"] = demoConfig.GetParameters()
all["jobsConfRepository"] = getJobRepository()
all["jobLogRepository"] = getJobLogRepository()
container := Container{All: all}
container.InitContainer()
def.Register(container)
return *def
}
func getJobRepository() demoRepository.JobRepository {
return demoRepository.JobRepository{
Client: demoRepository.Client{
Url: os.Getenv("GHYT_CONF_API"),
Logger: logger.NewLogger(logger.DEBUG),
},
Logger: logger.NewLogger(logger.DEBUG),
}
}
func getJobLogRepository() demoRepository.JobLogRepository {
return demoRepository.JobLogRepository{
Client: demoRepository.Client{
Url: os.Getenv("GHYT_CONF_API"),
Logger: logger.NewLogger(logger.DEBUG),
},
Logger: logger.NewLogger(logger.DEBUG),
}
}
func internalServerError(ctx iris.Context) {
ctx.JSON(map[string]interface{}{"message": "Oups something went wrong, try again"})
}