예제 #1
0
파일: main.go 프로젝트: walesey/videobucket
func App() *gin.Engine {

	app := gin.Default()

	//middleware
	app.Use(video.Middleware())
	app.Use(staticjsx.NewStaticjsx("jsx", false).ServeHTTP)

	//routes
	app.GET("/", video.ListVideo)
	app.GET("/view/:file", video.ViewVideo)
	app.POST("/upload", video.UploadVideo)
	app.GET("/video/:file", video.StreamVideo)
	app.POST("/video/description", video.VideoDescription)
	app.GET("/videoList", video.VideoListRequest)
	app.GET("/videoList/video/:title", video.VideoByTitleRequest)

	//authenticated routes
	cfg := config.ReadConfig()
	var accounts gin.Accounts = make(map[string]string)
	accounts[cfg.AdminUsername] = cfg.AdminPassword
	g := app.Group("/admin", gin.BasicAuth(accounts))
	g.DELETE("/video/:title", video.VideoDelete)

	//templates
	app.LoadHTMLGlob("templates/*")

	//static files
	app.Static("/public", "./public")

	return app
}
예제 #2
0
파일: main.go 프로젝트: walesey/videobucket
func main() {
	r := gin.Default()

	// Ping test
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "pong")
	})

	// Get user value
	r.GET("/user/:name", func(c *gin.Context) {
		user := c.Params.ByName("name")
		value, ok := DB[user]
		if ok {
			c.JSON(200, gin.H{"user": user, "value": value})
		} else {
			c.JSON(200, gin.H{"user": user, "status": "no value"})
		}
	})

	// Authorized group (uses gin.BasicAuth() middleware)
	// Same than:
	// authorized := r.Group("/")
	// authorized.Use(gin.BasicAuth(gin.Credentials{
	//	  "foo":  "bar",
	//	  "manu": "123",
	//}))
	authorized := r.Group("/", gin.BasicAuth(gin.Accounts{
		"foo":  "bar", // user:foo password:bar
		"manu": "123", // user:manu password:123
	}))

	authorized.POST("admin", func(c *gin.Context) {
		user := c.MustGet(gin.AuthUserKey).(string)

		// Parse JSON
		var json struct {
			Value string `json:"value" binding:"required"`
		}

		if c.Bind(&json) == nil {
			DB[user] = json.Value
			c.JSON(200, gin.H{"status": "ok"})
		}
	})

	// Listen and Server in 0.0.0.0:8080
	r.Run(":8080")
}