openapi3

package
v1.11.2 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2022 License: MIT Imports: 20 Imported by: 6

Documentation

Index

Constants

View Source
const (
	TypeArray      = "array"
	TypeBoolean    = "boolean"
	TypeInteger    = "integer"
	TypeObject     = "object"
	TypeString     = "string"
	FormatDate     = "date"
	FormatDateTime = "date-time"
	FormatInt32    = "int32"
	FormatInt64    = "int64"

	PropertyOperationID = "operationId"
	PropertySummary     = "summary"
	PropertyTags        = "tags"
)
View Source
const (
	DescStatusIsEmpty    = 0
	DescStatusIsNotEmpty = 1
	DescStatusDefaultSep = " ~~~ "
)
View Source
const (
	XTagGroups       = "x-tag-groups"
	XThrottlingGroup = "x-throttling-group"
)
View Source
const (
	OASVersionLatest = "3.1.0"
)
View Source
const PointerComponentsSchemas = "#/components/schemas"
View Source
const XTagGroupsPropertyName = "x-tag-groups"

Variables

This section is empty.

Functions

func BuildApiUrlOAS

func BuildApiUrlOAS(specServerURL, overrideServerURL, specPath string) string

func CopySchemaStandard

func CopySchemaStandard(schema oas3.Schema) (oas3.Schema, error)

func GetExtensionPropString

func GetExtensionPropString(xprops oas3.ExtensionProps, key string) (string, error)

GetExtensionPropString converts extension prop value from `json.RawMessage` to `string`.

func GetExtensionPropStringOrEmpty

func GetExtensionPropStringOrEmpty(xprops oas3.ExtensionProps, key string) string

GetExtensionPropStringOrEmpty converts extension prop value from `json.RawMessage` to `string`.

func GetOperationExtensionPropStringOrEmpty

func GetOperationExtensionPropStringOrEmpty(op oas3.Operation, key string) string

GetOperationExtensionPropStringOrEmpty converts extension prop value from `json.RawMessage` to `string`.

func OpTableColumnsDefault

func OpTableColumnsDefault(inclDocsURL bool) *tabulator.ColumnSet

func OpTableColumnsRingCentral

func OpTableColumnsRingCentral() *tabulator.ColumnSet

func OperationRequestMediaTypes

func OperationRequestMediaTypes(op *oas3.Operation) []string
func MediaTypesToSlice(typesMap map[string]*oas3.MediaType) []string {
	slice := []string{}
	for thisType := range typesMap {
		slice = append(slides, thisType)
	}
	return slice
}

OperationRequestMediaTypes returns a sorted slice of request media types.

func OperationResponseMediaTypes

func OperationResponseMediaTypes(op *oas3.Operation) []string

OperationResponseMediaTypes returns a sorted slice of response media types.

func OperationSecurityScopes

func OperationSecurityScopes(op *oas3.Operation, fullyQualified bool) []string

OperationSecurityScopes retrieves a flat list of security scopes for an operation.

func OperationSetRequestBodySchemaRef

func OperationSetRequestBodySchemaRef(op *oas3.Operation, mediaType string, schemaRef *oas3.SchemaRef)

func OperationSetResponseBodySchemaRef

func OperationSetResponseBodySchemaRef(op *oas3.Operation, status, description, mediaType string, schemaRef *oas3.SchemaRef) error

func SchemaPointerExpand

func SchemaPointerExpand(prefix, schemaName string) string

func SecurityRequirementsToRaw

func SecurityRequirementsToRaw(secReqs oas3.SecurityRequirements) []map[string][]string

SecurityRequirementsToRaw returns a raw SecurityRequirements slice to be used for iterating over elements.

func TagsWithoutGroups

func TagsWithoutGroups(spec *Spec, tagGroupSet TagGroupSet) []string

func VisitOperations

func VisitOperations(spec *Spec, visitOp func(path, method string, op *oas3.Operation))

func VisitOperationsPathItem added in v1.8.2

func VisitOperationsPathItem(path string, pathItem *oas3.PathItem, visitOp func(path, method string, op *oas3.Operation))

func VisitTypesFormats

func VisitTypesFormats(spec *Spec, visitTypeFormat func(jsonPointerRoot, oasType, oasFormat string))

func WriteFileDirMerge

func WriteFileDirMerge(outfile, inputDir string, perm os.FileMode, mergeOpts *MergeOptions) (int, error)

Types

type CollisionCheckResult

type CollisionCheckResult int
const (
	CollisionCheckSame CollisionCheckResult = iota
	CollisionCheckOverwrite
	CollisionCheckError
	CollisionCheckSkip
)

func SchemaCheckCollisionDefault

func SchemaCheckCollisionDefault(schemaName string, item1, item2 interface{}, item2Note string) CollisionCheckResult

func SchemaCheckCollisionSkip

func SchemaCheckCollisionSkip(schemaName string, item1, item2 interface{}, item2Note string) CollisionCheckResult

type ExtensionPropsParent

type ExtensionPropsParent interface{}

type MergeOptions

type MergeOptions struct {
	FileRx               *regexp.Regexp
	SchemaFunc           func(schemaName string, sch1, sch2 interface{}, hint2 string) CollisionCheckResult
	CollisionCheckResult CollisionCheckResult
	ValidateEach         bool
	ValidateFinal        bool
	TableColumns         *tabulator.ColumnSet
	TableOpFilterFunc    func(path, method string, op *oas3.Operation) bool
}

func NewMergeOptionsSkip

func NewMergeOptionsSkip() *MergeOptions

func (*MergeOptions) CheckSchemaCollision

func (mo *MergeOptions) CheckSchemaCollision(schemaName string, sch1, sch2 interface{}, hint2 string) CollisionCheckResult

type Operation added in v1.9.1

type Operation = oas3.Operation

type OperationMeta

type OperationMeta struct {
	OperationID      string
	DocsDescription  string
	DocsURL          string
	Method           string
	Path             string
	SecurityScopes   []string
	Summary          string
	Tags             []string
	MetaNotes        []string
	XThrottlingGroup string
}

OperationMeta is used to hold additional information for a spec operation.

func OperationToMeta

func OperationToMeta(url, method string, op *oas3.Operation) OperationMeta

func (*OperationMeta) TrimSpace

func (om *OperationMeta) TrimSpace()

type Spec added in v1.9.0

type Spec = oas3.T

func Copy

func Copy(spec *Spec) (*Spec, error)

func Merge

func Merge(specMaster, specExtra *Spec, specExtraNote string, mergeOpts *MergeOptions) (*Spec, error)

func MergeDirectory

func MergeDirectory(dir string, mergeOpts *MergeOptions) (*Spec, int, error)

func MergeFiles

func MergeFiles(filepaths []string, mergeOpts *MergeOptions) (*Spec, error)

func MergeParameters

func MergeParameters(specMaster, specExtra *Spec, specExtraNote string, mergeOpts *MergeOptions) (*Spec, error)

func MergePaths

func MergePaths(specMaster, specExtra *Spec) (*Spec, error)

func MergeRequestBodies

func MergeRequestBodies(specMaster, specExtra *Spec, specExtraNote string) (*Spec, error)

func MergeResponses

func MergeResponses(specMaster, specExtra *Spec, specExtraNote string, mergeOpts *MergeOptions) (*Spec, error)

func MergeSchemas

func MergeSchemas(specMaster, specExtra *Spec, specExtraNote string, mergeOpts *MergeOptions) (*Spec, error)

func MergeTags

func MergeTags(specMaster, specExtra *Spec) *Spec

func MergeWithTables

func MergeWithTables(spec1, spec2 *Spec, specExtraNote string, mergeOpts *MergeOptions) (*Spec, []*table.Table, error)

MergeWithTables performs a spec merge and returns comparison tables. This is useful to combine with github.com/grokify/gocharts/data/table WriteXLSX() to write out comparison tables for debugging.

func NewSpec

func NewSpec(oasVersion, apiTitle, apiVersion string) *Spec

NewSpec returns a new OpenAPI 3 spec that will validate. Specifically, it includes an OAS version, sets `info` to be an empty object instead of null and sets apiVersion.

func Parse

func Parse(oas3Bytes []byte) (*Spec, error)

Parse will parse a byte array to an `*oas3.Swagger` struct. It will use JSON first. If unsuccessful, it will attempt to parse it as YAML.

func ReadAndValidateFile

func ReadAndValidateFile(oas3file string) (*Spec, error)

func ReadFile

func ReadFile(oas3file string, validate bool) (*Spec, error)

ReadFile does optional validation which is useful when merging incomplete spec files.

func ReadURL

func ReadURL(oas3url string) (*Spec, error)

type SpecMeta

type SpecMeta struct {
	Filepath        string
	Version         int
	IsValid         bool
	ValidationError string
}

type SpecMetas

type SpecMetas struct {
	Metas []SpecMeta
}

func ReadSpecMetasDir

func ReadSpecMetasDir(dir string, rx *regexp.Regexp) (SpecMetas, error)

func ReadSpecMetasFiles

func ReadSpecMetasFiles(files []string) (SpecMetas, error)

func (*SpecMetas) Filepaths

func (metas *SpecMetas) Filepaths(validOnly bool) []string

func (*SpecMetas) Merge

func (metas *SpecMetas) Merge(validatesOnly bool, mergeOpts *MergeOptions) (SpecMore, error)

type SpecMore

type SpecMore struct {
	Spec *Spec
}

func MergeSpecMetas

func MergeSpecMetas(metas *SpecMetas, validatesOnly bool, mergeOpts *MergeOptions) (SpecMore, error)

func ReadSpecMore

func ReadSpecMore(path string, validate bool) (*SpecMore, error)

func (*SpecMore) ComponentRequestBody

func (sm *SpecMore) ComponentRequestBody(componentPath string) *oas3.RequestBodyRef

func (*SpecMore) ExtensionNames

func (sm *SpecMore) ExtensionNames() map[string]int

ExtensionNames is not complete yet.

func (*SpecMore) HasComponentSchema

func (sm *SpecMore) HasComponentSchema(componentSchemaName string, lowerCaseMatch bool) bool

func (*SpecMore) MarshalJSON

func (sm *SpecMore) MarshalJSON(prefix, indent string) ([]byte, error)

func (*SpecMore) OperationByID

func (sm *SpecMore) OperationByID(wantOperationID string) (path, method string, op *oas3.Operation, err error)

func (*SpecMore) OperationCountsByTag

func (sm *SpecMore) OperationCountsByTag() *histogram.Histogram

OperationCountsByTag returns a histogram for operations by tag.

func (*SpecMore) OperationMetas

func (sm *SpecMore) OperationMetas() []OperationMeta

func (*SpecMore) OperationParametersDescriptionStatus

func (sm *SpecMore) OperationParametersDescriptionStatus() maputil.MapStringMapStringInt

OperationParametersDescriptionStatus returns a set of operationIds and parameters with description status where `1` indicates a description and `0` indicates no descriptions. Descriptions for references aren't processed so they aren't analyzed and reported on. This returns a `MapStringMapStringInt` where the first key is the operationIds and the second key is the parameter name.

func (*SpecMore) OperationParametersDescriptionStatusCounts

func (sm *SpecMore) OperationParametersDescriptionStatusCounts() (with, without, all int)

OperationParametersDescriptionStatusCounts returns operation parameter counts with descriptions, without descriptions, and total counts.

func (*SpecMore) OperationParametersWithoutDescriptionsWriteFile

func (sm *SpecMore) OperationParametersWithoutDescriptionsWriteFile(filename string) error

func (*SpecMore) OperationsCount

func (sm *SpecMore) OperationsCount() int

func (*SpecMore) OperationsIDs

func (sm *SpecMore) OperationsIDs() []string

func (*SpecMore) OperationsTable

func (sm *SpecMore) OperationsTable(columns *tabulator.ColumnSet, filterFunc func(path, method string, op *oas3.Operation) bool) (*table.Table, error)

func (*SpecMore) PrintJSON

func (sm *SpecMore) PrintJSON(prefix, indent string) error

func (*SpecMore) SchemaNameExists

func (sm *SpecMore) SchemaNameExists(schemaName string, includeNil bool) bool

func (*SpecMore) SchemaNames

func (sm *SpecMore) SchemaNames() []string

func (*SpecMore) SchemaNamesStatus added in v1.7.0

func (sm *SpecMore) SchemaNamesStatus() (schemaNoReference, both, referenceNoSchema []string, err error)

func (*SpecMore) SchemaPointers added in v1.7.0

func (sm *SpecMore) SchemaPointers(dedupe bool) ([]string, []string, error)

func (*SpecMore) SchemaPropertiesDescriptionStatus

func (sm *SpecMore) SchemaPropertiesDescriptionStatus() maputil.MapStringMapStringInt

SchemaPropertiesDescriptionStatus returns a set of schema names and properties with description status where `1` indicates a description and `0` indicates no descriptions. Descriptions for references aren't processed so they aren't analyzed and reported on. This returns a `MapStringMapStringInt` where the first key is the component name and the second key is the property name.

func (*SpecMore) SchemaPropertiesDescriptionStatusCounts

func (sm *SpecMore) SchemaPropertiesDescriptionStatusCounts() (with, without, all int)

SchemaPropertiesDescriptionStatusCounts returns schema property counts with descriptions, without descriptions, and total counts.

func (*SpecMore) SchemaPropertiesWithoutDescriptionsWriteFile

func (sm *SpecMore) SchemaPropertiesWithoutDescriptionsWriteFile(filename string) error

func (*SpecMore) SchemaRef

func (sm *SpecMore) SchemaRef(schemaName string) *oas3.SchemaRef

func (*SpecMore) SchemasCount

func (sm *SpecMore) SchemasCount() int

func (*SpecMore) ServerURL

func (sm *SpecMore) ServerURL(index uint) string

ServerURL returns the OAS3 Spec URL for the index specified.

func (*SpecMore) ServerURLBasePath

func (sm *SpecMore) ServerURLBasePath(index uint) (string, error)

ServerURLBasePath extracts the base path from a OAS URL which can include variables.

func (*SpecMore) SetOperation

func (sm *SpecMore) SetOperation(path, method string, op *oas3.Operation)

func (*SpecMore) SetSchemaRef

func (sm *SpecMore) SetSchemaRef(schemaName string, schemaRef *oas3.SchemaRef) error

func (*SpecMore) Stats

func (sm *SpecMore) Stats() SpecStats

func (*SpecMore) StatusCodesHistogram added in v1.10.0

func (sm *SpecMore) StatusCodesHistogram() *histogram.HistogramSets

func (*SpecMore) TagGroups

func (sm *SpecMore) TagGroups() (TagGroupSet, error)

TagGroups parses a TagGroupSet from an OpenAPI3 spec.

func (*SpecMore) Tags

func (sm *SpecMore) Tags(inclTop, inclOps bool) []string

func (*SpecMore) TagsMap

func (sm *SpecMore) TagsMap(inclTop, inclOps bool) map[string]int

TagsMap returns a set of tags present in the current spec.

func (*SpecMore) WriteFileCSV

func (sm *SpecMore) WriteFileCSV(filename string) error

func (*SpecMore) WriteFileJSON

func (sm *SpecMore) WriteFileJSON(filename string, perm os.FileMode, prefix, indent string) error

func (*SpecMore) WriteFileXLSX

func (sm *SpecMore) WriteFileXLSX(filename string, columns *tabulator.ColumnSet, filterFunc func(path, method string, op *oas3.Operation) bool) error

func (*SpecMore) WriteFileXLSXOperationStatusCodes added in v1.10.0

func (sm *SpecMore) WriteFileXLSXOperationStatusCodes(filename string) error

type SpecStats

type SpecStats struct {
	OperationsCount int
	SchemasCount    int
}

type TagGroup

type TagGroup struct {
	Name    string   `json:"name"`
	Popular bool     `json:"popular"`
	Tags    []string `json:"tags"`
}

type TagGroupSet

type TagGroupSet struct {
	TagGroups []TagGroup
}

func NewTagGroupSet

func NewTagGroupSet() TagGroupSet

func (*TagGroupSet) AddToSpec

func (set *TagGroupSet) AddToSpec(spec *Spec) error

func (*TagGroupSet) Exists

func (set *TagGroupSet) Exists(tagName string) bool

func (*TagGroupSet) GetTagGroupNamesForTagNames

func (set *TagGroupSet) GetTagGroupNamesForTagNames(wantTagNames ...string) []string

type TagsMore

type TagsMore struct {
	Tags oas3.Tags
}

func (*TagsMore) Get

func (tg *TagsMore) Get(tagName string) *oas3.Tag

type ValidationStatus

type ValidationStatus struct {
	Status  bool
	Message string
	Context string
	OpenAPI string
}

func ValidateMore

func ValidateMore(spec *Spec) (ValidationStatus, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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