Documentation ¶
Overview ¶
Package gen contains the code generator for OpenAPI Spec.
Index ¶
- Variables
- func GenerateSchema(schema *jsonschema.Schema, fs FileSystem, opts GenerateSchemaOptions) (rerr error)
- func TypeFormatMapping() map[jsonschema.SchemaType]map[string]ir.PrimitiveType
- type BadVariant
- type ContentTypeAliases
- type ConvenientErrors
- type DefaultElem
- type Elem
- type ErrBuildRouter
- type ErrFieldsDiscriminatorInference
- type ErrGoFormat
- type ErrNotImplemented
- type ErrParseSpec
- type ErrUnsupportedContentTypes
- type Feature
- type FeatureOptions
- type FeatureSet
- type FileSystem
- type Filters
- type GenerateOptions
- type GenerateSchemaOptions
- type Generator
- type OperationElem
- type Options
- type ParseOptions
- type RemoteOptions
- type ResponseElem
- type Route
- type RouteNode
- func (n *RouteNode) AddRoute(nr Route) error
- func (n *RouteNode) AllowedMethods() string
- func (n *RouteNode) Children() []*RouteNode
- func (n *RouteNode) Head() byte
- func (n *RouteNode) IsLeaf() bool
- func (n *RouteNode) IsParam() bool
- func (n *RouteNode) IsStatic() bool
- func (n *RouteNode) Param() *ir.Parameter
- func (n *RouteNode) ParamChildren() (r []*RouteNode)
- func (n *RouteNode) ParamName() string
- func (n *RouteNode) Prefix() string
- func (n *RouteNode) Routes() []Route
- func (n *RouteNode) StaticChildren() (r []*RouteNode)
- func (n *RouteNode) Tails() (r []byte)
- type RouteTree
- type Router
- type RouterElem
- type Routes
- type TemplateConfig
- func (t TemplateConfig) AnyClientEnabled() bool
- func (t TemplateConfig) AnyInstrumentable() bool
- func (t TemplateConfig) AnyServerEnabled() bool
- func (t TemplateConfig) ErrorGoType() string
- func (t TemplateConfig) RatStrings() []string
- func (t TemplateConfig) RegexStrings() []string
- func (t TemplateConfig) SkipTest(typ *ir.Type) bool
- type WebhookRoute
- type WebhookRouter
- type WebhookRoutes
Constants ¶
This section is empty.
Variables ¶
var ( PathsClient = Feature{ "paths/client", `Enables paths client generation`, } PathsServer = Feature{ "paths/server", `Enables paths server generation`, } WebhooksClient = Feature{ "webhooks/client", `Enables webhooks client generation`, } WebhooksServer = Feature{ "webhooks/server", `Enables webhooks server generation`, } ClientSecurityReentrant = Feature{ "client/security/reentrant", `Enables client usage in security source implementations`, } ClientRequestValidation = Feature{ "client/request/validation", `Enables validation of client requests`, } ServerResponseValidation = Feature{ "server/response/validation", `Enables validation of server responses`, } OgenOtel = Feature{ "ogen/otel", `Enables OpenTelemetry integration`, } OgenUnimplemented = Feature{ "ogen/unimplemented", `Enables stub Handler generation`, } DebugExampleTests = Feature{ "debug/example_tests", `Enables example tests generation`, } )
var AllFeatures = []Feature{ PathsClient, PathsServer, WebhooksClient, WebhooksServer, ClientSecurityReentrant, ClientRequestValidation, ServerResponseValidation, OgenOtel, OgenUnimplemented, DebugExampleTests, }
AllFeatures contains all ogen features.
var DefaultFeatures = []Feature{ PathsClient, PathsServer, WebhooksClient, WebhooksServer, OgenOtel, OgenUnimplemented, }
DefaultFeatures defines default ogen features.
Functions ¶
func GenerateSchema ¶ added in v0.21.0
func GenerateSchema(schema *jsonschema.Schema, fs FileSystem, opts GenerateSchemaOptions) (rerr error)
GenerateSchema generates type, validation and JSON encoding for given schema.
func TypeFormatMapping ¶ added in v0.15.0
func TypeFormatMapping() map[jsonschema.SchemaType]map[string]ir.PrimitiveType
Types ¶
type BadVariant ¶ added in v0.83.0
BadVariant describes a sum type variant for what we unable to infer discriminator.
type ContentTypeAliases ¶ added in v0.44.0
ContentTypeAliases maps content type to concrete ogen encoding.
func (*ContentTypeAliases) Set ¶ added in v0.44.0
func (m *ContentTypeAliases) Set(value string) error
Set implements flag.Value.
func (ContentTypeAliases) String ¶ added in v0.44.0
func (m ContentTypeAliases) String() string
String implements fmt.Stringer.
type ConvenientErrors ¶ added in v0.60.0
type ConvenientErrors int
ConvenientErrors is an option type to control `Convenient Errors` feature.
func (*ConvenientErrors) IsBoolFlag ¶ added in v0.60.0
func (c *ConvenientErrors) IsBoolFlag() bool
IsBoolFlag implements flag.boolFlag.
func (ConvenientErrors) IsDisabled ¶ added in v0.60.0
func (c ConvenientErrors) IsDisabled() bool
IsDisabled whether Convenient Errors is disabled.
func (ConvenientErrors) IsForced ¶ added in v0.60.0
func (c ConvenientErrors) IsForced() bool
IsForced whether Convenient Errors is forced.
func (*ConvenientErrors) Set ¶ added in v0.60.0
func (c *ConvenientErrors) Set(s string) error
Set implements flag.Value.
func (ConvenientErrors) String ¶ added in v0.60.0
func (c ConvenientErrors) String() string
String implements fmt.Stringer.
func (*ConvenientErrors) UnmarshalYAML ¶ added in v0.78.0
func (c *ConvenientErrors) UnmarshalYAML(n *yaml.Node) error
UnmarshalYAML implements yaml.Unmarshaler.
type DefaultElem ¶ added in v0.15.0
type DefaultElem struct { // Type is type of this DefaultElem. Type *ir.Type // Var is decoding/encoding variable Go name (obj) or selector (obj.Field). Var string // Default is default value to set. Default ir.Default }
DefaultElem is variable helper for setting default values.
type Elem ¶
type Elem struct { // Sub whether this Elem has parent Elem. Sub bool // Type is type of this Elem. Type *ir.Type // Var is decoding/encoding variable Go name (obj) or selector (obj.Field). Var string // Tag contains info about field tags, if any. Tag ir.Tag // First whether this field is first. First bool }
Elem is variable helper for recursive array or object encoding or decoding.
type ErrBuildRouter ¶ added in v0.16.0
type ErrBuildRouter struct {
// contains filtered or unexported fields
}
ErrBuildRouter reports that route tree building failed.
func (*ErrBuildRouter) Error ¶ added in v0.16.0
func (e *ErrBuildRouter) Error() string
Error implements error.
func (*ErrBuildRouter) Format ¶ added in v0.42.0
func (e *ErrBuildRouter) Format(s fmt.State, verb rune)
Format implements fmt.Formatter.
func (*ErrBuildRouter) FormatError ¶ added in v0.42.0
func (e *ErrBuildRouter) FormatError(p errors.Printer) (next error)
FormatError implements errors.Formatter.
func (*ErrBuildRouter) Unwrap ¶ added in v0.16.0
func (e *ErrBuildRouter) Unwrap() error
Unwrap implements errors.Wrapper.
type ErrFieldsDiscriminatorInference ¶ added in v0.83.0
type ErrFieldsDiscriminatorInference struct { Sum *ir.Type Types []BadVariant }
ErrFieldsDiscriminatorInference reports fields discriminator inference failure.
func (*ErrFieldsDiscriminatorInference) Error ¶ added in v0.83.0
func (e *ErrFieldsDiscriminatorInference) Error() string
Error implements error.
type ErrGoFormat ¶ added in v0.41.0
type ErrGoFormat struct {
// contains filtered or unexported fields
}
ErrGoFormat reports that generated code formatting failed.
func (*ErrGoFormat) Error ¶ added in v0.41.0
func (e *ErrGoFormat) Error() string
Error implements error.
func (*ErrGoFormat) Format ¶ added in v0.42.0
func (e *ErrGoFormat) Format(s fmt.State, verb rune)
Format implements fmt.Formatter.
func (*ErrGoFormat) FormatError ¶ added in v0.42.0
func (e *ErrGoFormat) FormatError(p errors.Printer) (next error)
FormatError implements errors.Formatter.
func (*ErrGoFormat) Unwrap ¶ added in v0.41.0
func (e *ErrGoFormat) Unwrap() error
Unwrap implements errors.Wrapper.
type ErrNotImplemented ¶
type ErrNotImplemented struct {
Name string
}
ErrNotImplemented reports that feature is not implemented.
func (*ErrNotImplemented) Error ¶
func (e *ErrNotImplemented) Error() string
Error implements error.
type ErrParseSpec ¶ added in v0.16.0
type ErrParseSpec struct {
// contains filtered or unexported fields
}
ErrParseSpec reports that specification parsing failed.
func (*ErrParseSpec) Error ¶ added in v0.16.0
func (e *ErrParseSpec) Error() string
Error implements error.
func (*ErrParseSpec) Format ¶ added in v0.42.0
func (e *ErrParseSpec) Format(s fmt.State, verb rune)
Format implements fmt.Formatter.
func (*ErrParseSpec) FormatError ¶ added in v0.42.0
func (e *ErrParseSpec) FormatError(p errors.Printer) (next error)
FormatError implements errors.Formatter.
func (*ErrParseSpec) Unwrap ¶ added in v0.16.0
func (e *ErrParseSpec) Unwrap() error
Unwrap implements errors.Wrapper.
type ErrUnsupportedContentTypes ¶
type ErrUnsupportedContentTypes struct {
ContentTypes []string
}
ErrUnsupportedContentTypes reports that ogen does not support such content-type(s).
func (*ErrUnsupportedContentTypes) Error ¶
func (e *ErrUnsupportedContentTypes) Error() string
Error implements error.
type FeatureOptions ¶ added in v0.78.0
type FeatureOptions struct { Enable FeatureSet `json:"enable" yaml:"enable"` Disable FeatureSet `json:"disable" yaml:"disable"` DisableAll bool `json:"disable_all" yaml:"disable_all"` }
FeatureOptions is features Options.
func (*FeatureOptions) Build ¶ added in v0.78.0
func (cfg *FeatureOptions) Build() (set FeatureSet, _ error)
Build returns final set.
type FeatureSet ¶ added in v0.78.0
type FeatureSet map[string]struct{}
FeatureSet is set of Feature names.
func (*FeatureSet) Disable ¶ added in v0.78.0
func (s *FeatureSet) Disable(name string)
Disable removes a feature from set.
func (*FeatureSet) Enable ¶ added in v0.78.0
func (s *FeatureSet) Enable(name string) error
Enable adds a feature to set.
func (FeatureSet) Has ¶ added in v0.78.0
func (s FeatureSet) Has(feature Feature) bool
Has whether if set has given feature.
func (*FeatureSet) UnmarshalYAML ¶ added in v0.78.0
func (s *FeatureSet) UnmarshalYAML(n *yaml.Node) error
UnmarshalYAML implements yaml.Unmarshaler.
type FileSystem ¶
FileSystem represents a directory of generated package.
type Filters ¶ added in v0.15.0
Filters contains filters to skip operations.
func (*Filters) UnmarshalYAML ¶ added in v0.78.0
UnmarshalYAML implements yaml.Unmarshaler.
type GenerateOptions ¶ added in v0.78.0
type GenerateOptions struct { // Features sets generator features. Features *FeatureOptions `json:"features" yaml:"features"` // Filters contains filters to skip operations. Filters Filters `json:"filters" yaml:"filters"` // IgnoreNotImplemented contains ErrNotImplemented messages to ignore. IgnoreNotImplemented []string `json:"ignore_not_implemented" yaml:"ignore_not_implemented"` // NotImplementedHook is hook for ErrNotImplemented errors. NotImplementedHook func(name string, err error) `json:"-" yaml:"-"` // ConvenientErrors control Convenient Errors feature. // // Default value is `auto` (0), NewError handler will be generated if possible. // // If value > 0 forces feature. An error will be returned if generator is unable to find common error pattern. // // If value < 0 disables feature entirely. ConvenientErrors ConvenientErrors `json:"convenient_errors" yaml:"convenient_errors"` // ContentTypeAliases contains content type aliases. ContentTypeAliases ContentTypeAliases `json:"content_type_aliases" yaml:"content_type_aliases"` }
GenerateOptions sets generator options.
type GenerateSchemaOptions ¶ added in v0.29.0
type GenerateSchemaOptions struct { // TypeName is root schema type name. Defaults to "Type". TypeName string // FileName is output filename. Defaults to "output.gen.go". FileName string // PkgName is the package name. Defaults to GOPACKAGE environment variable, if any. Otherwise, to "output". PkgName string // TrimPrefix is a ref name prefixes to trim. Defaults to []string{"#/definitions/", "#/$defs/"}. TrimPrefix []string // Logger to use. Logger *zap.Logger }
GenerateSchemaOptions is options structure for GenerateSchema.
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
Generator is OpenAPI-to-Go generator.
func NewGenerator ¶
NewGenerator creates new Generator.
func (*Generator) Operations ¶ added in v0.68.0
Operations returns generated operations.
func (*Generator) WriteSource ¶
func (g *Generator) WriteSource(fs FileSystem, pkgName string) error
WriteSource writes generated definitions to fs.
type OperationElem ¶ added in v0.53.0
type OperationElem struct { // Operation is the operation. Operation *ir.Operation // Config is the template configuration. Config TemplateConfig }
OperationElem is variable name for generating per-operation functions.
type Options ¶
type Options struct { // Parser sets parser options. Parser ParseOptions `json:"parser" yaml:"parser"` // Generator sets generator options. Generator GenerateOptions `json:"generator" yaml:"generator"` // ExpandSpec is a path to expanded spec. ExpandSpec string `json:"expand" yaml:"expand"` // Logger to use. Logger *zap.Logger `json:"-" yaml:"-"` }
Options is Generator options.
func (*Options) SetLocation ¶ added in v0.58.0
func (o *Options) SetLocation(p string, opts RemoteOptions) ([]byte, error)
SetLocation sets File, RootURL and RemoteOptions using given path or URL and returns file data.
type ParseOptions ¶ added in v0.78.0
type ParseOptions struct { // InferSchemaType enables type inference for schemas. Schema parser will try to detect schema type // by its properties. InferSchemaType bool `json:"infer_types" yaml:"infer_types"` // AllowRemote enables remote references resolving. // // See https://github.com/ogen-go/ogen/issues/385. AllowRemote bool `json:"allow_remote" yaml:"allow_remote"` // RootURL is root URL for remote references resolving. RootURL *url.URL `json:"-" yaml:"-"` // Remote is remote reference resolver options. Remote RemoteOptions `json:"-" yaml:"-"` // SchemaDepthLimit is maximum depth of schema generation. Default is 1000. SchemaDepthLimit int `json:"depth_limit" yaml:"depth_limit"` // File is the file that is being parsed. // // Used for error messages. File location.File `json:"-" yaml:"-"` }
ParseOptions sets parsing options.
func (*ParseOptions) SetLocation ¶ added in v0.78.0
func (o *ParseOptions) SetLocation(p string, opts RemoteOptions) ([]byte, error)
SetLocation sets File, RootURL and RemoteOptions using given path or URL and returns file data.
type RemoteOptions ¶ added in v0.36.0
type RemoteOptions = jsonschema.ExternalOptions
RemoteOptions is remote reference resolver options.
type ResponseElem ¶
type Route ¶
type Route struct { Method string // GET, POST, DELETE Path string // /api/v1/user/{name}/info Operation *ir.Operation // getUserInfo }
Route describes route.
type RouteNode ¶ added in v0.7.0
type RouteNode struct {
// contains filtered or unexported fields
}
RouteNode is node of Radix tree of routes.
func (*RouteNode) AllowedMethods ¶ added in v0.46.0
AllowedMethods returns list of allowed methods.
func (*RouteNode) ParamChildren ¶ added in v0.7.0
ParamChildren returns slice of child parameter nodes.
func (*RouteNode) StaticChildren ¶ added in v0.7.0
StaticChildren returns slice of child static nodes.
type RouteTree ¶ added in v0.7.0
type RouteTree struct {
Root *RouteNode
}
RouteTree is Radix tree of routes.
type Router ¶
type Router struct { Tree RouteTree // MaxParametersCount is maximum number of path parameters in one operation. MaxParametersCount int }
Router contains list of routes.
type RouterElem ¶ added in v0.8.0
type RouterElem struct { // ParameterIndex is index of parameter of this route part. ParameterIndex int Route *RouteNode }
RouterElem is variable helper for router generation.
type Routes ¶ added in v0.46.0
type Routes []Route
Routes is list of routes.
func (*Routes) AddRoute ¶ added in v0.46.0
AddRoute adds new route. If the route is already added, it returns error.
type TemplateConfig ¶
type TemplateConfig struct { Package string Operations []*ir.Operation DefaultOperations []*ir.Operation OperationGroups []*ir.OperationGroup Webhooks []*ir.Operation Types map[string]*ir.Type Interfaces map[string]*ir.Type Error *ir.Response ErrorType *ir.Type Servers ir.Servers Securities map[string]*ir.Security Router Router WebhookRouter WebhookRouter PathsClientEnabled bool PathsServerEnabled bool WebhookClientEnabled bool WebhookServerEnabled bool OpenTelemetryEnabled bool SecurityReentrantEnabled bool RequestValidationEnabled bool ResponseValidationEnabled bool // contains filtered or unexported fields }
func (TemplateConfig) AnyClientEnabled ¶ added in v0.56.0
func (t TemplateConfig) AnyClientEnabled() bool
AnyClientEnabled returns true, if webhooks or paths client is enabled.
func (TemplateConfig) AnyInstrumentable ¶ added in v0.78.0
func (t TemplateConfig) AnyInstrumentable() bool
AnyInstrumentable returns true, if OpenTelemetry integration enabled and there is client/server to instrument.
func (TemplateConfig) AnyServerEnabled ¶ added in v0.56.0
func (t TemplateConfig) AnyServerEnabled() bool
AnyServerEnabled returns true, if webhooks or paths server is enabled.
func (TemplateConfig) ErrorGoType ¶ added in v0.56.0
func (t TemplateConfig) ErrorGoType() string
ErrorGoType returns Go type of error.
func (TemplateConfig) RatStrings ¶ added in v0.16.0
func (t TemplateConfig) RatStrings() []string
RatStrings returns slice of all unique big.Rat (multipleOf validation).
func (TemplateConfig) RegexStrings ¶ added in v0.5.0
func (t TemplateConfig) RegexStrings() []string
RegexStrings returns slice of all unique regex validators.
type WebhookRoute ¶ added in v0.53.0
WebhookRoute is a webhook route.
type WebhookRouter ¶ added in v0.53.0
type WebhookRouter struct {
Webhooks map[string]WebhookRoutes
}
WebhookRouter contains routing information for webhooks.
func (*WebhookRouter) Add ¶ added in v0.53.0
func (r *WebhookRouter) Add(name string, nr WebhookRoute) error
Add adds new route.
type WebhookRoutes ¶ added in v0.53.0
type WebhookRoutes struct {
Routes []WebhookRoute
}
WebhookRoutes is a list of webhook methods.
func (*WebhookRoutes) Add ¶ added in v0.53.0
func (r *WebhookRoutes) Add(nr WebhookRoute) error
Add adds new operation to the route.
func (WebhookRoutes) AllowedMethods ¶ added in v0.53.0
func (r WebhookRoutes) AllowedMethods() string
AllowedMethods returns comma-separated list of allowed methods.
Source Files ¶
- errors.go
- features.go
- fix.go
- gen.go
- gen_contents.go
- gen_headers.go
- gen_operation.go
- gen_parameters.go
- gen_request_body.go
- gen_responses.go
- gen_schema.go
- gen_security.go
- gen_server.go
- genctx.go
- generator.go
- generics.go
- names.go
- options.go
- reduce.go
- route_node.go
- route_tree.go
- router.go
- schema_gen.go
- schema_gen_primitive.go
- schema_gen_sum.go
- templates.go
- tstorage.go
- utils.go
- walk.go
- write.go
Directories ¶
Path | Synopsis |
---|---|
Package genfs contains gen.FileSystem implementations.
|
Package genfs contains gen.FileSystem implementations. |
Package ir contains definitions for the intermediate representation of OpenAPI objects and generated Go types.
|
Package ir contains definitions for the intermediate representation of OpenAPI objects and generated Go types. |