Skip to content

Commit

Permalink
Merge pull request #85 from waouooo/support_assign_schemes
Browse files Browse the repository at this point in the history
feature: 支持指定schemes参数
  • Loading branch information
MaxToby authored Nov 24, 2023
2 parents a21dceb + f5343a2 commit 862371e
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 6 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/goctl-swagger
goctl api plugin -plugin goctl-swagger="swagger -filename user.json" -api user.api -dir .
```

* 指定Host,basePath [api-host-and-base-path](https://swagger.io/docs/specification/2-0/api-host-and-base-path/)
* 指定Host,basePath,schemes [api-host-and-base-path](https://swagger.io/docs/specification/2-0/api-host-and-base-path/)

```shell script
goctl api plugin -plugin goctl-swagger="swagger -filename user.json -host 127.0.0.2 -basepath /api" -api user.api -dir .
goctl api plugin -plugin goctl-swagger="swagger -filename user.json -host 127.0.0.2 -basepath /api -schemes https,wss" -api user.api -dir .
```

* swagger ui 查看生成的文档
Expand Down
3 changes: 2 additions & 1 deletion action/action.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ func Generator(ctx *cli.Context) error {
}
basepath := ctx.String("basepath")
host := ctx.String("host")
return generate.Do(fileName, host, basepath, p)
schemes := ctx.String("schemes")
return generate.Do(fileName, host, basepath, schemes, p)
}
4 changes: 2 additions & 2 deletions generate/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"github.com/zeromicro/go-zero/tools/goctl/plugin"
)

func Do(filename string, host string, basePath string, in *plugin.Plugin) error {
swagger, err := applyGenerate(in, host, basePath)
func Do(filename string, host string, basePath string, schemes string, in *plugin.Plugin) error {
swagger, err := applyGenerate(in, host, basePath, schemes)
if err != nil {
fmt.Println(err)
}
Expand Down
16 changes: 15 additions & 1 deletion generate/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
"reflect"
"regexp"
Expand Down Expand Up @@ -54,7 +55,7 @@ func parseRangeOption(option string) (float64, float64, bool) {
return min, max, true
}

func applyGenerate(p *plugin.Plugin, host string, basePath string) (*swaggerObject, error) {
func applyGenerate(p *plugin.Plugin, host string, basePath string, schemes string) (*swaggerObject, error) {
title, _ := strconv.Unquote(p.Api.Info.Properties["title"])
version, _ := strconv.Unquote(p.Api.Info.Properties["version"])
desc, _ := strconv.Unquote(p.Api.Info.Properties["desc"])
Expand All @@ -80,6 +81,19 @@ func applyGenerate(p *plugin.Plugin, host string, basePath string) (*swaggerObje
s.BasePath = basePath
}

if len(schemes) > 0 {
supportedSchemes := []string{"http", "https", "ws", "wss"}
ss := strings.Split(schemes, ",")
for i := range ss {
scheme := ss[i]
scheme = strings.TrimSpace(scheme)
if !contains(supportedSchemes, scheme) {
log.Fatalf("unsupport scheme: [%s], only support [http, https, ws, wss]", scheme)
}
ss[i] = scheme
}
s.Schemes = ss
}
s.SecurityDefinitions = swaggerSecurityDefinitionsObject{}
newSecDefValue := swaggerSecuritySchemeObject{}
newSecDefValue.Name = "Authorization"
Expand Down
4 changes: 4 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ var (
Name: "filename",
Usage: "swagger save file name",
},
&cli.StringFlag{
Name: "schemes",
Usage: "swagger support schemes: http, https, ws, wss",
},
},
},
}
Expand Down

0 comments on commit 862371e

Please sign in to comment.