mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-01 01:20:17 +00:00
f0a95eebe3
The api specs were Go templates whose committed form was not a valid swagger document, so `swagger-validate`, `generate-openapi.go` and `.spectral.yaml` each worked around it. They are now plain json, substituted at serve time. Renaming them off `.tmpl` also stops `make fmt` rewriting them, which used to bump their mtime and silently skip the next `make generate-swagger`. Also enables stricter spectral linting: extends `lint-swagger` to the OpenAPI 3 spec, turns on `openapi-tags`, `operation-singular-tag` and `operation-tag-defined`, adds a top-level `tags` array with descriptions to the swagger input, and drops the redundant `repository` tag from `POST /user/repos`. --------- Signed-off-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Giteabot <teabot@gitea.io>
38 lines
1012 B
Go
38 lines
1012 B
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package web
|
|
|
|
import (
|
|
"html/template"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"gitea.dev/modules/setting"
|
|
"gitea.dev/modules/templates"
|
|
"gitea.dev/modules/util"
|
|
"gitea.dev/services/context"
|
|
)
|
|
|
|
func swaggerJsonServe(ctx *context.Context, file string) {
|
|
buf, err := templates.AssetFS().ReadFile(file)
|
|
if err != nil {
|
|
ctx.HTTPError(http.StatusInternalServerError, "unable to read api json file: "+file)
|
|
return
|
|
}
|
|
r := strings.NewReplacer(
|
|
"0.0.0+GITEA-API-APP-VERSION", template.JSEscapeString(setting.AppVer),
|
|
"/GITEA-API-APP-SUBURL/", template.JSEscapeString(setting.AppSubURL)+"/",
|
|
)
|
|
ctx.Resp.Header().Set("Content-Type", "application/json")
|
|
_, _ = r.WriteString(ctx.Resp, util.UnsafeBytesToString(buf))
|
|
}
|
|
|
|
func SwaggerV1Json(ctx *context.Context) {
|
|
swaggerJsonServe(ctx, "swagger/v1-swagger.generated.json")
|
|
}
|
|
|
|
func OpenAPI3Json(ctx *context.Context) {
|
|
swaggerJsonServe(ctx, "swagger/v1-openapi3.generated.json")
|
|
}
|