high

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2022 License: MIT Imports: 1 Imported by: 4

Documentation

Overview

Package high contains a set of high-level models that represent OpenAPI 2 and 3 documents. These high-level models (porcelain) are used by applications directly, rather than the low-level models plumbing) that are used to compose high level models.

High level models are simple to navigate, strongly typed, precise representations of the OpenAPI schema that are created from an OpenAPI specification.

All high level objects contains a 'GoLow' method. This 'GoLow' method will return the low-level model that was used to create it, which provides an engineer as much low level detail about the raw spec used to create those models, things like key/value breakdown of each value, lines, column, source comments etc.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExtractExtensions

func ExtractExtensions(extensions map[low.KeyReference[string]]low.ValueReference[any]) map[string]any

ExtractExtensions is a convenience method for converting low-level extension definitions, to a high level map[string]any definition that is easier to consume in applications.

func UnpackExtensions added in v0.3.2

func UnpackExtensions[T any, R low.HasExtensions[T]](low GoesLow[R]) (map[string]*T, error)

UnpackExtensions is a convenience function that makes it easy and simple to unpack an objects extensions into a complex type, provided as a generic. This function is for high-level models that implement `GoesLow()` and for low-level models that support extensions via `HasExtensions`.

This feature will be upgraded at some point to hold a registry of types and extension mappings to make this functionality available a little more automatically. You can read more about the discussion here: https://github.com/pb33f/libopenapi/issues/8

`T` represents the Type you want to unpack into `R` represents the LOW type of the object that contains the extensions (not the high) `low` represents the HIGH type of the object that contains the extensions.

to use:

schema := schemaProxy.Schema() // any high-level object that has extensions
extensions, err := UnpackExtensions[MyComplexType, low.Schema](schema)

Types

type GoesLow

type GoesLow[T any] interface {

	// GoLow returns the low-level object that was used to create the high-level object. This allows consumers
	// to dive-down into the plumbing API at any point in the model.
	GoLow() T
}

GoesLow is used to represent any high-level model. All high level models meet this interface and can be used to extract low-level models from any high-level model.

Directories

Path Synopsis
Package base contains shared high-level models that are used between both versions 2 and 3 of OpenAPI.
Package base contains shared high-level models that are used between both versions 2 and 3 of OpenAPI.
Package v2 represents all Swagger / OpenAPI 2 high-level models.
Package v2 represents all Swagger / OpenAPI 2 high-level models.
Package v3 represents all OpenAPI 3+ high-level models.
Package v3 represents all OpenAPI 3+ high-level models.

Jump to

Keyboard shortcuts

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