66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/spf13/viper"
|
|
swaggerfiles "github.com/swaggo/files"
|
|
ginSwagger "github.com/swaggo/gin-swagger"
|
|
|
|
"github.com/chaitin/SafeLine/docs"
|
|
"github.com/chaitin/SafeLine/internal/handler"
|
|
"github.com/chaitin/SafeLine/internal/service"
|
|
)
|
|
|
|
func main() {
|
|
viper.AutomaticEnv()
|
|
|
|
viper.SetDefault("GITHUB_CACHE_TTL", 10) // cache timeout in minutes
|
|
viper.SetDefault("LISTEN_ADDR", ":8080") // api server addr
|
|
|
|
githubToken := viper.GetString("GITHUB_TOKEN")
|
|
if githubToken == "" {
|
|
log.Fatal("GITHUB_TOKEN must be set")
|
|
}
|
|
|
|
telemetryHost := viper.GetString("TELEMETRY_HOST")
|
|
if telemetryHost == "" {
|
|
log.Fatal("TELEMETRY_HOST must be set")
|
|
}
|
|
|
|
listenAddr := viper.GetString("LISTEN_ADDR")
|
|
|
|
r := gin.Default()
|
|
|
|
// Initialize the GitHubService.
|
|
gitHubService := service.NewGitHubService(&service.GithubConfig{
|
|
Token: githubToken,
|
|
Owner: "chaitin",
|
|
Repo: "SafeLine",
|
|
CacheTTL: viper.GetDuration("GITHUB_CACHE_TTL"),
|
|
})
|
|
|
|
// Create a new instance of GitHubHandler.
|
|
gitHubHandler := handler.NewGitHubHandler(gitHubService)
|
|
|
|
v1 := r.Group("/api")
|
|
v1.GET("/repos/issues", gitHubHandler.GetIssues)
|
|
v1.GET("/repos/discussions", gitHubHandler.GetDiscussions)
|
|
v1.GET("/repos/info", gitHubHandler.GetRepo)
|
|
|
|
// Initialize the SafelineService.
|
|
safelineService := service.NewSafelineService(telemetryHost)
|
|
safelineHandler := handler.NewSafelineHandler(safelineService)
|
|
v1.GET("/safeline/count", safelineHandler.GetInstallerCount)
|
|
v1.POST("/exist", safelineHandler.Exist)
|
|
v1.POST("/behavior", safelineHandler.Behavior)
|
|
|
|
docs.SwaggerInfo.BasePath = v1.BasePath()
|
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
|
|
|
|
// Start the Gin server on the specified port.
|
|
if err := r.Run(listenAddr); err != nil {
|
|
log.Fatalf("Error starting server: %v", err)
|
|
}
|
|
}
|