builder

package
v0.0.0-...-4aa0575 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2025 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ResolveRef

func ResolveRef(spec *openapi3.T, ref string) (*openapi3.SchemaRef, error)

ResolveRef resolves a schema reference.

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

Builder is an SDK builder. Builder works in two steps: First, it loads the OpenAPI specs and pre-processes them for code generation by transforming the specs into intermediary representation. Secondly, it generates and writes the SDK to desired destination.

func New

func New(cfg Config, opts ...Option) *Builder

New creates a new Builder. Call [Build.Load] to load in OpenAPI specs and [Build.Build] to generate SDK based on provided config.

func (*Builder) Build

func (b *Builder) Build() error

Build the SDK and write it to designated output directory. The OpenAPI specs first need to be loaded using Builder.Load.

func (*Builder) Load

func (b *Builder) Load(spec *openapi3.T) error

Load loads OpenAPI specs into the builder. To generated the SDK, call Builder.Build.

type Config

type Config struct {
	// Out is the output directory that the SDK will be written to.
	Out string
	// Pkg is the name of the package.
	Pkg string
}

Config is builder configuration which configures output options.

type EnumDeclaration

type EnumDeclaration[E cmp.Ordered] struct {
	Type   TypeDeclaration
	Values []EnumOption[E]
}

EnumDeclaration holds the information for enum types

func (*EnumDeclaration[E]) String

func (et *EnumDeclaration[E]) String() string

type EnumOption

type EnumOption[E cmp.Ordered] struct {
	Name  string
	Value E
}

type Method

type Method struct {
	Description  string
	HTTPMethod   string
	FunctionName string
	ResponseType string
	Path         string
	PathParams   []Parameter
	QueryParams  *Parameter
	HasBody      bool
	Responses    []Response
}

Method describes a client method. Methods map one-to-one to OpenAPI operations.

func (Method) ParamsString

func (mt Method) ParamsString() string

type Option

type Option func(b *Builder)

type Parameter

type Parameter struct {
	Name string
	Type string
}

Parameter is a method parameter.

type Response

type Response struct {
	IsErr          bool
	IsDefault      bool
	IsUnexpected   bool
	Type           string
	Code           int
	ErrDescription string
}

type StructField

type StructField struct {
	// Name of the field
	Name string
	// Type of the field, either primitive type (e.g. string) or if the field
	// is a schema reference then the type of the schema.
	Type string
	// Tags to apply to the field, this would usually be json serialization
	// information.
	Tags map[string][]string
	// Optional field.
	Optional bool

	Comment string

	Parameter *openapi3.Parameter
}

StructField holds the information for StructField of a type.

func (*StructField) String

func (f *StructField) String() string

type TypeDeclaration

type TypeDeclaration struct {
	// Name of the type
	Name string
	// Type describes the type of the type (e.g. struct, int64, string)
	Type string
	// Fields holds the information for the field
	Fields []StructField
	// Comment holds the description of the type
	Comment string

	Response  *openapi3.Response
	Operation *openapi3.Operation
	Schema    *openapi3.Schema
}

TypeDeclaration holds the information for generating a type. TODO: split into struct, alias, etc.

func (*TypeDeclaration) String

func (tt *TypeDeclaration) String() string

type Writable

type Writable interface {
	String() string
}

Jump to

Keyboard shortcuts

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