本文整理汇总了Golang中github.com/go-swagger/go-swagger/spec.RefProperty函数的典型用法代码示例。如果您正苦于以下问题:Golang RefProperty函数的具体用法?Golang RefProperty怎么用?Golang RefProperty使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RefProperty函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: buildArray
func (sg *schemaGenContext) buildArray() error {
tpe, err := sg.TypeResolver.ResolveSchema(sg.Schema.Items.Schema, true)
if err != nil {
return err
}
// check if the element is a complex object, if so generate a new type for it
if tpe.IsComplexObject && tpe.IsAnonymous {
pg := sg.makeNewStruct(sg.Name+" items"+strconv.Itoa(sg.Index), *sg.Schema.Items.Schema)
if err := pg.makeGenSchema(); err != nil {
return err
}
sg.MergeResult(pg)
sg.ExtraSchemas[pg.Name] = pg.GenSchema
sg.Schema.Items.Schema = spec.RefProperty("#/definitions/" + pg.Name)
if err := sg.makeGenSchema(); err != nil {
return err
}
return nil
}
elProp := sg.NewSliceBranch(sg.Schema.Items.Schema)
if err := elProp.makeGenSchema(); err != nil {
return err
}
sg.MergeResult(elProp)
sg.GenSchema.ItemsEnum = elProp.GenSchema.Enum
elProp.GenSchema.Suffix = "Items"
sg.GenSchema.GoType = "[]" + elProp.GenSchema.GoType
sg.GenSchema.Items = &elProp.GenSchema
return nil
}
开发者ID:weching,项目名称:go-swagger,代码行数:30,代码来源:model.go
示例2: newMapStack
func newMapStack(context *schemaGenContext) (first, last *mapStack, err error) {
ms := &mapStack{
Type: &context.Schema,
Context: context,
}
l := ms
for l.HasMore() {
tpe, err := l.Context.TypeResolver.ResolveSchema(l.Type.AdditionalProperties.Schema, true)
if err != nil {
return nil, nil, err
}
if !tpe.IsMap {
if tpe.IsComplexObject && tpe.IsAnonymous {
nw := l.Context.makeNewStruct(l.Context.Name+" Anon", *l.Type.AdditionalProperties.Schema)
sch := spec.RefProperty("#/definitions/" + nw.Name)
l.NewObj = nw
l.Type.AdditionalProperties.Schema = sch
l.ValueRef = l.Context.NewAdditionalProperty(*sch)
}
break
}
l.Next = &mapStack{
Previous: l,
Type: l.Type.AdditionalProperties.Schema,
Context: l.Context.NewAdditionalProperty(*l.Type.AdditionalProperties.Schema),
}
l = l.Next
}
return ms, l, nil
}
开发者ID:florindragos,项目名称:go-swagger,代码行数:32,代码来源:model.go
示例3: buildAdditionalItems
func (sg *schemaGenContext) buildAdditionalItems() error {
wantsAdditionalItems :=
sg.Schema.AdditionalItems != nil &&
(sg.Schema.AdditionalItems.Allows || sg.Schema.AdditionalItems.Schema != nil)
sg.GenSchema.HasAdditionalItems = wantsAdditionalItems
if wantsAdditionalItems {
// check if the element is a complex object, if so generate a new type for it
tpe, err := sg.TypeResolver.ResolveSchema(sg.Schema.AdditionalItems.Schema, true)
if err != nil {
return err
}
if tpe.IsComplexObject && tpe.IsAnonymous {
pg := sg.makeNewStruct(sg.Name+" Items", *sg.Schema.AdditionalItems.Schema)
if err := pg.makeGenSchema(); err != nil {
return err
}
sg.Schema.AdditionalItems.Schema = spec.RefProperty("#/definitions/" + pg.Name)
pg.GenSchema.HasValidations = true
sg.MergeResult(pg, false)
sg.ExtraSchemas[pg.Name] = pg.GenSchema
}
it := sg.NewAdditionalItems(sg.Schema.AdditionalItems.Schema)
if tpe.IsInterface {
it.Untyped = true
}
if err := it.makeGenSchema(); err != nil {
return err
}
sg.MergeResult(it, true)
sg.GenSchema.AdditionalItems = &it.GenSchema
}
return nil
}
开发者ID:florindragos,项目名称:go-swagger,代码行数:36,代码来源:model.go
示例4: TestValidateParameters
func TestValidateParameters(t *testing.T) {
doc, api := petstore.NewAPI(t)
validator := NewSpecValidator(spec.MustLoadSwagger20Schema(), api.Formats())
validator.spec = doc
res := validator.validateParameters()
assert.Empty(t, res.Errors)
sw := doc.Spec()
sw.Paths.Paths["/pets"].Get.Parameters = append(sw.Paths.Paths["/pets"].Get.Parameters, *spec.QueryParam("limit").Typed("string", ""))
res = validator.validateParameters()
assert.NotEmpty(t, res.Errors)
doc, api = petstore.NewAPI(t)
sw = doc.Spec()
sw.Paths.Paths["/pets"].Post.Parameters = append(sw.Paths.Paths["/pets"].Post.Parameters, *spec.BodyParam("fake", spec.RefProperty("#/definitions/Pet")))
validator = NewSpecValidator(spec.MustLoadSwagger20Schema(), api.Formats())
validator.spec = doc
res = validator.validateParameters()
assert.NotEmpty(t, res.Errors)
assert.Len(t, res.Errors, 1)
assert.Contains(t, res.Errors[0].Error(), "has more than 1 body param")
doc, api = petstore.NewAPI(t)
sw = doc.Spec()
pp := sw.Paths.Paths["/pets/{id}"]
pp.Delete = nil
var nameParams []spec.Parameter
for _, p := range pp.Parameters {
if p.Name == "id" {
p.Name = "name"
nameParams = append(nameParams, p)
}
}
pp.Parameters = nameParams
sw.Paths.Paths["/pets/{name}"] = pp
doc.Reload()
validator = NewSpecValidator(spec.MustLoadSwagger20Schema(), api.Formats())
validator.spec = doc
res = validator.validateParameters()
assert.NotEmpty(t, res.Errors)
assert.Len(t, res.Errors, 1)
assert.Contains(t, res.Errors[0].Error(), "overlaps with")
doc, api = petstore.NewAPI(t)
validator = NewSpecValidator(spec.MustLoadSwagger20Schema(), api.Formats())
validator.spec = doc
sw = doc.Spec()
pp = sw.Paths.Paths["/pets/{id}"]
pp.Delete = nil
pp.Get.Parameters = nameParams
pp.Parameters = nil
sw.Paths.Paths["/pets/{id}"] = pp
doc.Reload()
res = validator.validateParameters()
assert.NotEmpty(t, res.Errors)
assert.Len(t, res.Errors, 2)
assert.Contains(t, res.Errors[1].Error(), "is not present in path \"/pets/{id}\"")
assert.Contains(t, res.Errors[0].Error(), "has no parameter definition")
}
开发者ID:MStoykov,项目名称:go-swagger,代码行数:59,代码来源:spec_test.go
注:本文中的github.com/go-swagger/go-swagger/spec.RefProperty函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论