feat: adjust fiber route generation
This commit is contained in:
64
pkg/swag/spec.go
Normal file
64
pkg/swag/spec.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package swag
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
// Spec holds exported Swagger Info so clients can modify it.
|
||||
type Spec struct {
|
||||
Version string
|
||||
Host string
|
||||
BasePath string
|
||||
Schemes []string
|
||||
Title string
|
||||
Description string
|
||||
InfoInstanceName string
|
||||
SwaggerTemplate string
|
||||
LeftDelim string
|
||||
RightDelim string
|
||||
}
|
||||
|
||||
// ReadDoc parses SwaggerTemplate into swagger document.
|
||||
func (i *Spec) ReadDoc() string {
|
||||
i.Description = strings.ReplaceAll(i.Description, "\n", "\\n")
|
||||
|
||||
tpl := template.New("swagger_info").Funcs(template.FuncMap{
|
||||
"marshal": func(v interface{}) string {
|
||||
a, _ := json.Marshal(v)
|
||||
|
||||
return string(a)
|
||||
},
|
||||
"escape": func(v interface{}) string {
|
||||
// escape tabs
|
||||
var str = strings.ReplaceAll(v.(string), "\t", "\\t")
|
||||
// replace " with \", and if that results in \\", replace that with \\\"
|
||||
str = strings.ReplaceAll(str, "\"", "\\\"")
|
||||
|
||||
return strings.ReplaceAll(str, "\\\\\"", "\\\\\\\"")
|
||||
},
|
||||
})
|
||||
|
||||
if i.LeftDelim != "" && i.RightDelim != "" {
|
||||
tpl = tpl.Delims(i.LeftDelim, i.RightDelim)
|
||||
}
|
||||
|
||||
parsed, err := tpl.Parse(i.SwaggerTemplate)
|
||||
if err != nil {
|
||||
return i.SwaggerTemplate
|
||||
}
|
||||
|
||||
var doc bytes.Buffer
|
||||
if err = parsed.Execute(&doc, i); err != nil {
|
||||
return i.SwaggerTemplate
|
||||
}
|
||||
|
||||
return doc.String()
|
||||
}
|
||||
|
||||
// InstanceName returns Spec instance name.
|
||||
func (i *Spec) InstanceName() string {
|
||||
return i.InfoInstanceName
|
||||
}
|
||||
Reference in New Issue
Block a user