package main import ( "os" "os/signal" "syscall" "github.com/gin-gonic/gin" "github.com/robfig/cron" "git.1750studios.com/AniNite/SocialDragon/config" "git.1750studios.com/AniNite/SocialDragon/database" "git.1750studios.com/AniNite/SocialDragon/instagram" "git.1750studios.com/AniNite/SocialDragon/snapchat" "git.1750studios.com/AniNite/SocialDragon/twitter" ) func main() { config.LoadConfig(os.Getenv("HOME") + "/.socialdragon.toml") database.InitDb(SendUpdate) c := cron.New() if config.C.Snapchat.UserName != "" { c.AddFunc("@every 30s", snapchat.LoadNewSnaps) } if config.C.Instagram.Tag != "" { c.AddFunc("@every 30s", instagram.LoadNewInstas) } c.Start() if len(config.C.Twitter.Filter) != 0 { go twitter.LoadNewTweets() } go setupGin() ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) <-ch twitter.Stop() } func setupGin() { router := gin.Default() router.GET("/", renderHomepage) router.GET("/admin", func(c *gin.Context) { c.Redirect(301, "/admin/inbox") }) router.GET("/admin/inbox", renderAdminInbox) router.GET("/admin/approved", renderAdminApproved) router.GET("/admin/rejected", renderAdminRejected) router.GET("/admin/stats", stats) router.POST("/admin/approve/:id", approveSnap) router.POST("/admin/reject/:id", rejectSnap) router.GET("/ws", func(c *gin.Context) { wsHandler(c.Writer, c.Request) }) router.GET("/listSnaps", listSnaps) router.LoadHTMLGlob(config.C.TemplatesDirectory + "/*.html") router.Static("/static", config.C.AssetsDirectory) router.Static(config.C.ContentWebDirectory, config.C.ContentDirectory) router.Run(config.C.BindAddress) }