reflectopenapi

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2020 License: Apache-2.0 Imports: 7 Imported by: 16

README

reflect-openapi

Define openapi.json with reflect package.

examples

Some examples are here. ./_examples

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDoc

func NewDoc() (*openapi3.Swagger, error)

func NewDocFromSkeleton

func NewDocFromSkeleton(skeleton []byte) (*openapi3.Swagger, error)

TODO: add api function

Types

type Binder

type Binder interface {
	Bind(doc *openapi3.Swagger)
}

type Config added in v0.0.2

type Config struct {
	Doc      *openapi3.Swagger
	Resolver Resolver

	StrictSchema   bool // if true, use `{additionalProperties: false}` as default
	SkipValidation bool // if true, skip validation for api doc definition

	IsRequiredCheckFunction func(reflect.StructTag) bool // handling required, default is always false
}

func (*Config) BuildDoc added in v0.0.2

func (c *Config) BuildDoc(ctx context.Context, use func(m *Manager)) (*openapi3.Swagger, error)

type Manager added in v0.0.2

type Manager struct {
	Visitor  *Visitor
	Resolver Resolver

	Doc *openapi3.Swagger
}

type NoRefResolver

type NoRefResolver struct {
	AdditionalPropertiesAllowed *bool // set as Config.StrictSchema
}

func (*NoRefResolver) ResolveParameter

func (r *NoRefResolver) ResolveParameter(v *openapi3.Parameter, s shape.Shape) *openapi3.ParameterRef

func (*NoRefResolver) ResolveRequestBody

func (r *NoRefResolver) ResolveRequestBody(v *openapi3.RequestBody, s shape.Shape) *openapi3.RequestBodyRef

func (*NoRefResolver) ResolveResponse

func (r *NoRefResolver) ResolveResponse(v *openapi3.Response, s shape.Shape) *openapi3.ResponseRef

func (*NoRefResolver) ResolveSchema

func (r *NoRefResolver) ResolveSchema(v *openapi3.Schema, s shape.Shape) *openapi3.SchemaRef

type Resolver

type Resolver interface {
	ResolveSchema(v *openapi3.Schema, s shape.Shape) *openapi3.SchemaRef
	ResolveParameter(v *openapi3.Parameter, s shape.Shape) *openapi3.ParameterRef
	ResolveRequestBody(v *openapi3.RequestBody, s shape.Shape) *openapi3.RequestBodyRef
	ResolveResponse(v *openapi3.Response, s shape.Shape) *openapi3.ResponseRef
}

type Transformer

type Transformer struct {
	Resolver

	CacheHit int

	IsRequired func(reflect.StructTag) bool
	// contains filtered or unexported fields
}

func (*Transformer) Builtin

func (t *Transformer) Builtin() *Transformer

func (*Transformer) RegisterInterception added in v0.0.2

func (t *Transformer) RegisterInterception(rt reflect.Type, intercept func(shape.Shape) *openapi3.Schema)

func (*Transformer) Transform

func (t *Transformer) Transform(s shape.Shape) interface{}

type UseRefResolver

type UseRefResolver struct {
	Schemas []*openapi3.SchemaRef

	AdditionalPropertiesAllowed *bool // set as Config.StrictSchema
}

func (*UseRefResolver) Bind

func (r *UseRefResolver) Bind(doc *openapi3.Swagger)

func (*UseRefResolver) ResolveParameter

func (r *UseRefResolver) ResolveParameter(v *openapi3.Parameter, s shape.Shape) *openapi3.ParameterRef

func (*UseRefResolver) ResolveRequestBody

func (r *UseRefResolver) ResolveRequestBody(v *openapi3.RequestBody, s shape.Shape) *openapi3.RequestBodyRef

func (*UseRefResolver) ResolveResponse

func (r *UseRefResolver) ResolveResponse(v *openapi3.Response, s shape.Shape) *openapi3.ResponseRef

func (*UseRefResolver) ResolveSchema

func (r *UseRefResolver) ResolveSchema(v *openapi3.Schema, s shape.Shape) *openapi3.SchemaRef

type Visitor

type Visitor struct {
	*Transformer
	Doc        *openapi3.Swagger
	Schemas    map[reflect.Type]*openapi3.Schema
	Operations map[reflect.Type]*openapi3.Operation
}

not visitor pattern

func NewVisitor

func NewVisitor(resolver Resolver) *Visitor

func (*Visitor) VisitFunc

func (v *Visitor) VisitFunc(ob interface{}, modifiers ...func(*openapi3.Operation)) *openapi3.Operation

func (*Visitor) VisitType

func (v *Visitor) VisitType(ob interface{}, modifiers ...func(*openapi3.Schema)) *openapi3.SchemaRef

Directories

Path Synopsis
_examples module
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL