package main import ( "git.beisel.it/florian/hostname-service/api" "git.beisel.it/florian/hostname-service/auth" "git.beisel.it/florian/hostname-service/db" "git.beisel.it/florian/hostname-service/docs" "git.beisel.it/florian/hostname-service/middleware" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // @title Hostname Service API // @description This is a sample server for a hostname service. // @version 1 // @contact.name Florian Beisel // @contact.url http://git.beisel.it/florian // @contact.email florian@beisel.it // @license.name MIT // @license.url http://git.beisel.it/florian/hostname-service/ // @host localhost:8080 // @BasePath /api/v1 // @securityDefinitions.apikey Bearer // @in header // @name Authorization // @description Type "Bearer" followed by a space and JWT token. func main() { db.Init() router := gin.Default() docs.SwaggerInfo.Host = "localhost:8080" docs.SwaggerInfo.BasePath = "/api/v1" v1 := router.Group("/api/v1") { // public routes v1.POST("/login", auth.LoginHandler) // Protected Routes authenticated := v1.Group("/").Use(middleware.Authenticate()) { authenticated.GET("/hello", api.Helloworld) // Create Host authenticated.POST("/:category", func(c *gin.Context) { api.CreateOrUpdateHostname(c, false) }) // Get Host Details authenticated.GET("/:category/:hostname", api.GetHostnameByCategoryAndName) // Update Host authenticated.PUT("/:category/:oldhostname", func(c *gin.Context) { api.CreateOrUpdateHostname(c, true) }) // Delete Host authenticated.DELETE("/:category/:hostname", api.DeleteHostname) // List Hostnames authenticated.GET("/:category", api.ListHostnamesByCategory) } } // Swagger endpoint router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) router.Run(":8080") }