mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-10-21 12:00:02 +00:00
Convert to openapi 3.0 (#3897)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
@@ -849,19 +849,12 @@ const docTemplate = `{
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"allOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -890,19 +883,12 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"allOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -910,19 +896,12 @@ const docTemplate = `{
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"allOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"log-level": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ import (
|
||||
|
||||
// Generate docs/swagger.json via:
|
||||
//go:generate go run woodpecker_docs_gen.go swagger.go
|
||||
//go:generate go run github.com/go-swagger/go-swagger/cmd/swagger@latest validate ../../docs/swagger.json
|
||||
//go:generate go run github.com/getkin/kin-openapi/cmd/validate@latest ../../docs/swagger.json
|
||||
|
||||
// setupSwaggerStaticConfig initializes static content only (contacts, title and description)
|
||||
// for dynamic configuration of e.g. hostname, etc. see router.setupSwaggerConfigAndRoutes
|
||||
|
@@ -22,10 +22,13 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/getkin/kin-openapi/openapi2"
|
||||
"github.com/getkin/kin-openapi/openapi2conv"
|
||||
"go.woodpecker-ci.org/woodpecker/v2/cmd/server/docs"
|
||||
)
|
||||
|
||||
@@ -33,29 +36,69 @@ func main() {
|
||||
// set swagger infos
|
||||
setupSwaggerStaticConfig()
|
||||
|
||||
basePath := path.Join("..", "..")
|
||||
filePath := path.Join(basePath, "docs", "swagger.json")
|
||||
|
||||
// generate swagger file
|
||||
f, err := os.Create(path.Join("..", "..", "docs", "swagger.json"))
|
||||
f, err := os.Create(filePath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer f.Close()
|
||||
doc := docs.SwaggerInfo.ReadDoc()
|
||||
doc = removeHost(doc)
|
||||
doc, err = removeHost(doc)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
_, err = f.WriteString(doc)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// convert to OpenApi3
|
||||
if err := toOpenApi3(filePath, filePath); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func removeHost(jsonIn string) string {
|
||||
func removeHost(jsonIn string) (string, error) {
|
||||
m := make(map[string]interface{})
|
||||
if err := json.Unmarshal([]byte(jsonIn), &m); err != nil {
|
||||
panic(err)
|
||||
return "", err
|
||||
}
|
||||
delete(m, "host")
|
||||
raw, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return "", err
|
||||
}
|
||||
return string(raw)
|
||||
return string(raw), nil
|
||||
}
|
||||
|
||||
func toOpenApi3(input, output string) error {
|
||||
data2, err := os.ReadFile(input)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var doc2 openapi2.T
|
||||
err = json.Unmarshal(data2, &doc2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
doc3, err := openapi2conv.ToV3(&doc2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = doc3.Validate(context.Background())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
data, err := json.Marshal(doc3)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(output, data, 0644)
|
||||
}
|
||||
|
Reference in New Issue
Block a user