add ks-iam and ks-apigateway

Signed-off-by: hongming <talonwan@yunify.com>
This commit is contained in:
hongming
2019-03-08 11:09:05 +08:00
parent f579e97f6b
commit b59c244ca2
715 changed files with 108638 additions and 23446 deletions

View File

@@ -1,5 +1,11 @@
# changes to the go-restful-openapi package
## v1.0.0
- Fix for #19 MapModelTypeNameFunc has incomplete behavior
- prevent array param.Type be overwritten in the else case below (#47)
- Merge paths with existing paths from other webServices (#48)
## v0.11.0
- Register pointer to array/slice of primitives as such rather than as reference to the primitive type definition. (#46)

View File

@@ -23,4 +23,4 @@ See TestThatExtraTagsAreReadIntoModel for examples.
- [go-restful](https://github.com/emicklei/go-restful)
- [go-openapi](https://github.com/go-openapi/spec)
© 2017, ernestmicklei.com. MIT License. Contributions welcome.
© 2018, ernestmicklei.com. MIT License. Contributions welcome.

0
vendor/github.com/emicklei/go-restful-openapi/build_definitions.go generated vendored Normal file → Executable file
View File

28
vendor/github.com/emicklei/go-restful-openapi/build_path.go generated vendored Normal file → Executable file
View File

@@ -129,14 +129,6 @@ func buildParameter(r restful.Route, restfulParam *restful.Parameter, pattern st
p := spec.Parameter{}
param := restfulParam.Data()
p.In = asParamType(param.Kind)
if param.AllowMultiple {
p.Type = "array"
p.Items = spec.NewItems()
p.Items.Type = param.DataType
p.CollectionFormat = param.CollectionFormat
} else {
p.Type = param.DataType
}
p.Description = param.Description
p.Name = param.Name
p.Required = param.Required
@@ -149,7 +141,7 @@ func buildParameter(r restful.Route, restfulParam *restful.Parameter, pattern st
p.Schema = new(spec.Schema)
p.SimpleSchema = spec.SimpleSchema{}
if st.Kind() == reflect.Array || st.Kind() == reflect.Slice {
dataTypeName := definitionBuilder{}.keyFrom(st.Elem())
dataTypeName := keyFrom(st.Elem(), cfg)
p.Schema.Type = []string{"array"}
p.Schema.Items = &spec.SchemaOrArray{
Schema: &spec.Schema{},
@@ -162,11 +154,19 @@ func buildParameter(r restful.Route, restfulParam *restful.Parameter, pattern st
p.Schema.Items.Schema.Ref = spec.MustCreateRef("#/definitions/" + dataTypeName)
}
} else {
p.Schema.Ref = spec.MustCreateRef("#/definitions/" + param.DataType)
dataTypeName := keyFrom(st, cfg)
p.Schema.Ref = spec.MustCreateRef("#/definitions/" + dataTypeName)
}
} else {
p.Type = param.DataType
if param.AllowMultiple {
p.Type = "array"
p.Items = spec.NewItems()
p.Items.Type = param.DataType
p.CollectionFormat = param.CollectionFormat
} else {
p.Type = param.DataType
}
p.Default = stringAutoType(param.DefaultValue)
p.Format = param.DataFormat
}
@@ -185,7 +185,7 @@ func buildResponse(e restful.ResponseError, cfg Config) (r spec.Response) {
}
r.Schema = new(spec.Schema)
if st.Kind() == reflect.Array || st.Kind() == reflect.Slice {
modelName := definitionBuilder{}.keyFrom(st.Elem())
modelName := keyFrom(st.Elem(), cfg)
r.Schema.Type = []string{"array"}
r.Schema.Items = &spec.SchemaOrArray{
Schema: &spec.Schema{},
@@ -198,13 +198,13 @@ func buildResponse(e restful.ResponseError, cfg Config) (r spec.Response) {
r.Schema.Items.Schema.Ref = spec.MustCreateRef("#/definitions/" + modelName)
}
} else {
modelName := definitionBuilder{}.keyFrom(st)
modelName := keyFrom(st, cfg)
if isPrimitiveType(modelName) {
// If the response is a primitive type, then don't reference any definitions.
// Instead, set the schema's "type" to the model name.
r.Schema.AddType(modelName, "")
} else {
modelName := definitionBuilder{}.keyFrom(st)
modelName := keyFrom(st, cfg)
r.Schema.Ref = spec.MustCreateRef("#/definitions/" + modelName)
}
}

24
vendor/github.com/emicklei/go-restful-openapi/definition_builder.go generated vendored Normal file → Executable file
View File

@@ -40,7 +40,7 @@ func (b definitionBuilder) addModel(st reflect.Type, nameOverride string) *spec.
st = st.Elem()
}
modelName := b.keyFrom(st)
modelName := keyFrom(st, b.Config)
if nameOverride != "" {
modelName = nameOverride
}
@@ -165,7 +165,7 @@ func (b definitionBuilder) buildProperty(field reflect.StructField, model *spec.
prop.Type = []string{pType}
}
if prop.Format == "" {
prop.Format = b.jsonSchemaFormat(b.keyFrom(fieldType))
prop.Format = b.jsonSchemaFormat(keyFrom(fieldType, b.Config))
}
return jsonName, modelDescription, prop
}
@@ -200,17 +200,18 @@ func (b definitionBuilder) buildProperty(field reflect.StructField, model *spec.
return jsonName, modelDescription, prop
}
fieldTypeName := b.keyFrom(fieldType)
fieldTypeName := keyFrom(fieldType, b.Config)
if b.isPrimitiveType(fieldTypeName) {
mapped := b.jsonSchemaType(fieldTypeName)
prop.Type = []string{mapped}
prop.Format = b.jsonSchemaFormat(fieldTypeName)
return jsonName, modelDescription, prop
}
modelType := b.keyFrom(fieldType)
modelType := keyFrom(fieldType, b.Config)
prop.Ref = spec.MustCreateRef("#/definitions/" + modelType)
if fieldType.Name() == "" { // override type of anonymous structs
// FIXME: Still need a way to handle anonymous struct model naming.
nestedTypeName := modelName + "." + jsonName
prop.Ref = spec.MustCreateRef("#/definitions/" + nestedTypeName)
b.addModel(fieldType, nestedTypeName)
@@ -237,6 +238,7 @@ func (b definitionBuilder) buildStructTypeProperty(field reflect.StructField, js
// check for anonymous
if len(fieldType.Name()) == 0 {
// anonymous
// FIXME: Still need a way to handle anonymous struct model naming.
anonType := model.ID + "." + jsonName
b.addModel(fieldType, anonType)
prop.Ref = spec.MustCreateRef("#/definitions/" + anonType)
@@ -247,7 +249,7 @@ func (b definitionBuilder) buildStructTypeProperty(field reflect.StructField, js
// embedded struct
sub := definitionBuilder{make(spec.Definitions), b.Config}
sub.addModel(fieldType, "")
subKey := sub.keyFrom(fieldType)
subKey := keyFrom(fieldType, b.Config)
// merge properties from sub
subModel, _ := sub.Definitions[subKey]
for k, v := range subModel.Properties {
@@ -277,7 +279,7 @@ func (b definitionBuilder) buildStructTypeProperty(field reflect.StructField, js
}
// simple struct
b.addModel(fieldType, "")
var pType = b.keyFrom(fieldType)
var pType = keyFrom(fieldType, b.Config)
prop.Ref = spec.MustCreateRef("#/definitions/" + pType)
return jsonName, prop
}
@@ -370,7 +372,7 @@ func (b definitionBuilder) buildPointerTypeProperty(field reflect.StructField, j
}
} else {
// non-array, pointer type
fieldTypeName := b.keyFrom(fieldType.Elem())
fieldTypeName := keyFrom(fieldType.Elem(), b.Config)
var pType = b.jsonSchemaType(fieldTypeName) // no star, include pkg path
if b.isPrimitiveType(fieldTypeName) {
prop.Type = []string{pType}
@@ -395,13 +397,13 @@ func (b definitionBuilder) getElementTypeName(modelName, jsonName string, t refl
if t.Name() == "" {
return modelName + "." + jsonName
}
return b.keyFrom(t)
return keyFrom(t, b.Config)
}
func (b definitionBuilder) keyFrom(st reflect.Type) string {
func keyFrom(st reflect.Type, cfg Config) string {
key := st.String()
if b.Config.ModelTypeNameHandler != nil {
if name, ok := b.Config.ModelTypeNameHandler(st); ok {
if cfg.ModelTypeNameHandler != nil {
if name, ok := cfg.ModelTypeNameHandler(st); ok {
key = name
}
}

7
vendor/github.com/emicklei/go-restful-openapi/spec_resource.go generated vendored Normal file → Executable file
View File

@@ -30,6 +30,13 @@ func BuildSwagger(config Config) *spec.Swagger {
for _, each := range config.WebServices {
for path, item := range buildPaths(each, config).Paths {
existingPathItem, ok := paths.Paths[path]
if ok {
for _, r := range each.Routes() {
_, patterns := sanitizePath(r.Path)
item = buildPathItem(each, r, existingPathItem, patterns, config)
}
}
paths.Paths[path] = item
}
for name, def := range buildDefinitions(each, config) {