2023-12-24 10:18:08 +00:00
|
|
|
// This file is part of the happyDomain (R) project.
|
|
|
|
// Copyright (c) 2020-2024 happyDomain
|
|
|
|
// Authors: Pierre-Olivier Mercier, et al.
|
2023-09-07 10:51:41 +00:00
|
|
|
//
|
2023-12-24 10:18:08 +00:00
|
|
|
// This program is offered under a commercial and under the AGPL license.
|
|
|
|
// For commercial licensing, contact us at <contact@happydomain.org>.
|
2023-09-07 10:51:41 +00:00
|
|
|
//
|
2023-12-24 10:18:08 +00:00
|
|
|
// For AGPL licensing:
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
2023-09-07 10:51:41 +00:00
|
|
|
//
|
2023-12-24 10:18:08 +00:00
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU Affero General Public License for more details.
|
2023-09-07 10:51:41 +00:00
|
|
|
//
|
2023-12-24 10:18:08 +00:00
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
2023-09-07 10:51:41 +00:00
|
|
|
|
|
|
|
//go:build swagger
|
|
|
|
|
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"net/http"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
swaggerfiles "github.com/swaggo/files"
|
|
|
|
ginSwagger "github.com/swaggo/gin-swagger"
|
|
|
|
|
|
|
|
"git.happydns.org/happyDomain/config"
|
|
|
|
docs "git.happydns.org/happyDomain/docs"
|
|
|
|
)
|
|
|
|
|
|
|
|
func declareRouteSwagger(cfg *config.Options, router *gin.Engine) {
|
|
|
|
// Expose Swagger
|
|
|
|
if cfg.ExternalURL.URL.Host != "" {
|
|
|
|
tmp := cfg.ExternalURL.URL.String()
|
|
|
|
docs.SwaggerInfo.Host = tmp[strings.Index(tmp, "://")+3:]
|
|
|
|
} else {
|
|
|
|
docs.SwaggerInfo.Host = fmt.Sprintf("localhost%s", cfg.Bind[strings.Index(cfg.Bind, ":"):])
|
|
|
|
}
|
|
|
|
docs.SwaggerInfo.BasePath = "/api"
|
|
|
|
if cfg.BaseURL != "" {
|
|
|
|
docs.SwaggerInfo.BasePath = cfg.BaseURL + docs.SwaggerInfo.BasePath
|
|
|
|
}
|
|
|
|
router.GET("/swagger", func(c *gin.Context) { c.Redirect(http.StatusFound, "./swagger/index.html") })
|
|
|
|
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
|
|
|
|
}
|