123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- 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)
- }
- }
|