diff

package
v0.1.13 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package diff provides a diff function for OpenAPI Spec 3. Work to enhance the diff with additional aspects of OAS is in-progress.

Index

Constants

View Source
const (
	PathsComponent      = "paths"
	TagsComponent       = "tags"
	SchemasComponent    = "schemas"
	ParametersComponent = "parameters"
	HeadersComponent    = "headers"
	ResponsesComponent  = "responses"
	CallbacksComponent  = "callbacks"
)

Component names

Variables

This section is empty.

Functions

This section is empty.

Types

type CallbacksDiff added in v0.1.11

type CallbacksDiff struct {
	Added    StringList        `json:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty"`
	Modified ModifiedCallbacks `json:"modified,omitempty"`
}

CallbacksDiff is a diff between callback objects: https://swagger.io/specification/#callback-object

type ContentDiff

type ContentDiff struct {
	MediaTypeAdded   bool `json:"mediaTypeAdded,omitempty"`
	MediaTypeDeleted bool `json:"mediaTypeDeleted,omitempty"`
	MediaTypeDiff    bool `json:"mediaType,omitempty"`

	SchemaDiff  *SchemaDiff `json:"schema,omitempty"`  // diff of 'schema' property
	ExampleDiff *ValueDiff  `json:"example,omitempty"` // diff of 'example' property

}

ContentDiff is the diff between two content objects each containing a media type object: https://swagger.io/specification/#media-type-object

type Diff

type Diff struct {
	SpecDiff *SpecDiff `json:"spec,omitempty"`
	Summary  *Summary  `json:"summary,omitempty"`
}

Diff describes changes between two OpenAPI specifications including a summary of the changes

func Get added in v0.1.9

func Get(s1, s2 *openapi3.Swagger, prefix string, filter string) Diff

Get calculates the diff between two OpenAPI specifications. Prefix is an optional path prefix that exists in s1 paths but not in s2. If filter isn't empty, the diff will only include paths that match this regex. The diff is "deep" in the sense that it compares the contents of properties recursivly.

type EnumDiff added in v0.1.3

type EnumDiff struct {
	Added   EnumValues `json:"added,omitempty"`
	Deleted EnumValues `json:"deleted,omitempty"`
}

EnumDiff is the diff between two enums

type EnumValues added in v0.1.5

type EnumValues []interface{}

EnumValues is a list of enum values

type HeaderDiff added in v0.1.10

type HeaderDiff struct {

	// ExtensionProps
	DescriptionDiff *ValueDiff   `json:"description,omitempty"` // diff of 'description' property
	DeprecatedDiff  *ValueDiff   `json:"deprecated,omitempty"`  // diff of 'deprecated' property
	RequiredDiff    *ValueDiff   `json:"required,omitempty"`    // diff of 'required' property
	ExampleDiff     *ValueDiff   `json:"example,omitempty"`     // diff of 'example' property
	SchemaDiff      *SchemaDiff  `json:"schema,omitempty"`      // diff of 'schema' property
	ContentDiff     *ContentDiff `json:"content,omitempty"`     // diff of 'content' property
}

HeaderDiff is a diff between header objects: https://swagger.io/specification/#header-object

type HeadersDiff added in v0.1.10

type HeadersDiff struct {
	Added    StringList      `json:"added,omitempty"`
	Deleted  StringList      `json:"deleted,omitempty"`
	Modified ModifiedHeaders `json:"modified,omitempty"`
}

HeadersDiff is a diff between two sets of header objects: https://swagger.io/specification/#header-object

type MethodDiff

type MethodDiff struct {

	// ExtensionProps
	TagsDiff        *StringsDiff    `json:"tags,omitempty"`        // diff of 'tags' property
	SummaryDiff     *ValueDiff      `json:"summary,omitempty"`     // diff of 'summary' property
	DescriptionDiff *ValueDiff      `json:"description,omitempty"` // diff of 'description' property
	OperationIDDiff *ValueDiff      `json:"operationID,omitempty"` // diff of 'operationID' property
	ParamDiff       *ParametersDiff `json:"parameters,omitempty"`  // diff of 'parameters' property
	// RequestBody
	ResponseDiff   *ResponsesDiff `json:"responses,omitempty"`  // diff of 'responses' property
	CallbacksDiff  *CallbacksDiff `json:"callbacks,omitempty"`  // diff of 'callbacks' property
	DeprecatedDiff *ValueDiff     `json:"deprecated,omitempty"` // diff of 'deprecated' property

}

MethodDiff is the diff between two operation objects: https://swagger.io/specification/#operation-object

type ModifiedCallbacks added in v0.1.11

type ModifiedCallbacks map[string]*PathsDiff

ModifiedCallbacks is map of callback names to their respective diffs

type ModifiedHeaders added in v0.1.10

type ModifiedHeaders map[string]HeaderDiff

ModifiedHeaders is map of header names to their respective diffs

type ModifiedOperations

type ModifiedOperations map[string]*MethodDiff

ModifiedOperations is a map of HTTP methods to their respective diffs

type ModifiedPaths added in v0.1.5

type ModifiedPaths map[string]*PathDiff

ModifiedPaths is a map of paths to their respective diffs

type ModifiedResponses added in v0.1.5

type ModifiedResponses map[string]ResponseDiff

ModifiedResponses is map of response values to their respective diffs

type ModifiedSchemas

type ModifiedSchemas map[string]*SchemaDiff

ModifiedSchemas is map of schema names to their respective diffs

type ModifiedTags added in v0.1.11

type ModifiedTags map[string]TagDiff

ModifiedTags is map of tag names to their respective diffs

type Operations added in v0.0.9

type Operations struct {
	Added    StringList         `json:"added,omitempty"`
	Deleted  StringList         `json:"deleted,omitempty"`
	Modified ModifiedOperations `json:"modified,omitempty"`
}

Operations is a diff between two sets of operation objects: https://swagger.io/specification/#operation-object

type ParamDiffByLocation added in v0.1.4

type ParamDiffByLocation map[string]ParamDiffs

ParamDiffByLocation maps param location (path, query, header or cookie) to param diffs in this location

type ParamDiffs

type ParamDiffs map[string]ParameterDiff

ParamDiffs is map of parameter names to their respective diffs

type ParamNames

type ParamNames map[string]struct{}

ParamNames is a set of parameter names

type ParamNamesByLocation added in v0.1.4

type ParamNamesByLocation map[string]ParamNames

ParamNamesByLocation maps param location (path, query, header or cookie) to the params in this location

type ParameterDiff added in v0.1.5

type ParameterDiff struct {
	DescriptionDiff     *ValueDiff   `json:"description,omitempty"`     // diff of 'description' property
	StyleDiff           *ValueDiff   `json:"style,omitempty"`           // diff of 'style' property
	ExplodeDiff         *ValueDiff   `json:"explode,omitempty"`         // diff of 'explode' property
	AllowEmptyValueDiff *ValueDiff   `json:"allowEmptyValue,omitempty"` // diff of 'allowEmptyValue' property
	AllowReservedDiff   *ValueDiff   `json:"allowReserved,omitempty"`   // diff of 'allowReserved' property
	DeprecatedDiff      *ValueDiff   `json:"deprecated,omitempty"`      // diff of 'deprecated' property
	RequiredDiff        *ValueDiff   `json:"required,omitempty"`        // diff of 'required' property
	SchemaDiff          *SchemaDiff  `json:"schema,omitempty"`          // diff of 'schema' property
	ExampleDiff         *ValueDiff   `json:"example,omitempty"`         // diff of 'example' property
	ContentDiff         *ContentDiff `json:"content,omitempty"`         // diff of 'content' property
}

ParameterDiff is a diff between parameter objects: https://swagger.io/specification/#parameter-object

type ParametersDiff added in v0.1.5

type ParametersDiff struct {
	Added    ParamNamesByLocation `json:"added,omitempty"`
	Deleted  ParamNamesByLocation `json:"deleted,omitempty"`
	Modified ParamDiffByLocation  `json:"modified,omitempty"`
}

ParametersDiff is a diff between two lists of parameter objects: https://swagger.io/specification/#parameter-object

type PathDiff

type PathDiff struct {
	Operations `json:"operations,omitempty"`
}

PathDiff is a diff between path item objects: https://swagger.io/specification/#path-item-object

type PathsDiff added in v0.1.5

type PathsDiff struct {
	Added    StringList    `json:"added,omitempty"`
	Deleted  StringList    `json:"deleted,omitempty"`
	Modified ModifiedPaths `json:"modified,omitempty"`
}

PathsDiff is a diff between two sets of path item objects: https://swagger.io/specification/#path-item-object

type ResponseDiff added in v0.1.5

type ResponseDiff struct {
	// ExtensionProps
	DescriptionDiff *ValueDiff   `json:"description,omitempty"` // diff of 'description' property
	HeadersDiff     *HeadersDiff `json:"headers,omitempty"`     // diff of 'headers' property
	ContentDiff     *ContentDiff `json:"content,omitempty"`     // diff of 'content' property

}

ResponseDiff is a diff between response objects: https://swagger.io/specification/#response-object

type ResponsesDiff added in v0.1.5

type ResponsesDiff struct {
	Added    StringList        `json:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty"`
	Modified ModifiedResponses `json:"modified,omitempty"`
}

ResponsesDiff is a diff between two sets of response objects: https://swagger.io/specification/#responses-object

type SchemaDiff

type SchemaDiff struct {
	SchemaAdded                     bool         `json:"schemaAdded,omitempty"`
	SchemaDeleted                   bool         `json:"schemaDeleted,omitempty"`
	ValueAdded                      bool         `json:"valueAdded,omitempty"`
	ValueDeleted                    bool         `json:"valueDeleted,omitempty"`
	OneOfDiff                       bool         `json:"oneOf,omitempty"`
	AnyOfDiff                       bool         `json:"anyOf,omitempty"`
	AllOfDiff                       bool         `json:"allOf,omitempty"`
	NotDiff                         bool         `json:"not,omitempty"`
	TypeDiff                        *ValueDiff   `json:"type,omitempty"`
	TitleDiff                       *ValueDiff   `json:"title,omitempty"`
	FormatDiff                      *ValueDiff   `json:"format,omitempty"`
	DescriptionDiff                 *ValueDiff   `json:"description,omitempty"`
	EnumDiff                        *EnumDiff    `json:"enum,omitempty"`
	DefaultDiff                     *ValueDiff   `json:"default,omitempty"`
	ExampleDiff                     *ValueDiff   `json:"example,omitempty"`
	AdditionalPropertiesAllowedDiff *ValueDiff   `json:"additionalPropertiesAllowed,omitempty"`
	UniqueItemsDiff                 *ValueDiff   `json:"uniqueItems,omitempty"`
	ExclusiveMinDiff                *ValueDiff   `json:"exclusiveMin,omitempty"`
	ExclusiveMaxDiff                *ValueDiff   `json:"exclusiveMax,omitempty"`
	NullableDiff                    *ValueDiff   `json:"nullable,omitempty"`
	ReadOnlyDiff                    *ValueDiff   `json:"readOnly,omitempty"`
	WriteOnlyDiff                   *ValueDiff   `json:"writeOnly,omitempty"`
	AllowEmptyValueDiff             *ValueDiff   `json:"allowEmptyValue,omitempty"`
	XMLDiff                         *ValueDiff   `json:"XML,omitempty"`
	DeprecatedDiff                  *ValueDiff   `json:"deprecated,omitempty"`
	MinDiff                         *ValueDiff   `json:"min,omitempty"`
	MaxDiff                         *ValueDiff   `json:"max,omitempty"`
	MultipleOf                      *ValueDiff   `json:"multipleOf,omitempty"`
	MinLength                       *ValueDiff   `json:"minLength,omitempty"`
	MaxLength                       *ValueDiff   `json:"maxLength,omitempty"`
	Pattern                         *ValueDiff   `json:"pattern,omitempty"`
	MinItems                        *ValueDiff   `json:"minItems,omitempty"`
	MaxItems                        *ValueDiff   `json:"maxItems,omitempty"`
	Items                           bool         `json:"items,omitempty"`
	Required                        *StringsDiff `json:"required,omitempty"`
	PropertiesDiff                  *SchemasDiff `json:"properties,omitempty"`
	MinProps                        *ValueDiff   `json:"minProps,omitempty"`
	MaxProps                        *ValueDiff   `json:"maxProps,omitempty"`
	AdditionalProperties            bool         `json:"additionalProperties,omitempty"`
}

SchemaDiff is a diff between schema objects: https://swagger.io/specification/#schema-object. Boolean fields specify whether the property in question was changed between the two versions. Pointer fields specify not only the presence of a change but also the old and new values of the property.

type SchemasDiff added in v0.1.5

type SchemasDiff struct {
	Added    StringList      `json:"added,omitempty"`
	Deleted  StringList      `json:"deleted,omitempty"`
	Modified ModifiedSchemas `json:"modified,omitempty"`
}

SchemasDiff is a diff between two sets of schema objects: https://swagger.io/specification/#schema-object

type SpecDiff added in v0.1.9

type SpecDiff struct {
	PathsDiff      *PathsDiff      `json:"paths,omitempty"`      // diff of paths
	TagsDiff       *TagsDiff       `json:"tags,omitempty"`       // diff of tags
	SchemasDiff    *SchemasDiff    `json:"schemas,omitempty"`    // diff of components/schemas
	ParametersDiff *ParametersDiff `json:"parameters,omitempty"` // diff of components/parameters
	HeadersDiff    *HeadersDiff    `json:"headers,omitempty"`    // diff of components/headers
	ResponsesDiff  *ResponsesDiff  `json:"responses,omitempty"`  // diff of components/responses
	CallbacksDiff  *CallbacksDiff  `json:"callbacks,omitempty"`  // diff of components/callbacks
}

SpecDiff describes the changes between two OpenAPI specifications: https://swagger.io/specification/#specification

type StringList added in v0.1.11

type StringList []string

StringList is a list of string values

type StringSet added in v0.1.11

type StringSet map[string]struct{}

StringSet is a set of string values

type StringsDiff added in v0.1.11

type StringsDiff struct {
	Added   StringList `json:"added,omitempty"`
	Deleted StringList `json:"deleted,omitempty"`
}

StringsDiff is the diff between two lists of strings

type Summary added in v0.0.9

type Summary struct {
	Diff       bool                       `json:"diff"`
	Components map[string]*SummaryDetails `json:"components,omitempty"`
}

Summary summarizes the changes between two OpenAPI specifications

func (*Summary) GetSummaryDetails added in v0.1.13

func (summary *Summary) GetSummaryDetails(component string) SummaryDetails

GetSummaryDetails returns the summary for a specific component

type SummaryDetails added in v0.1.8

type SummaryDetails struct {
	Added    int `json:"added,omitempty"`    // how many items were added
	Deleted  int `json:"deleted,omitempty"`  // how many items were deleted
	Modified int `json:"modified,omitempty"` // how many items were modified
}

SummaryDetails summarizes the changes between equivalent parts of the two OpenAPI specifications: paths, schemas, parameters, headers, responses etc.

type TagDiff added in v0.1.11

type TagDiff struct {
	NameDiff        *ValueDiff `json:"name,omitempty"`        // diff of 'name' property
	DescriptionDiff *ValueDiff `json:"description,omitempty"` // diff of 'description' property
}

TagDiff is a diff between tag objects: https://swagger.io/specification/#tag-object

type TagsDiff added in v0.1.11

type TagsDiff struct {
	Added    StringList   `json:"added,omitempty"`
	Deleted  StringList   `json:"deleted,omitempty"`
	Modified ModifiedTags `json:"modified,omitempty"`
}

TagsDiff is a diff between two lists of tag objects: https://swagger.io/specification/#tag-object

type ValueDiff

type ValueDiff struct {
	From interface{} `json:"from"`
	To   interface{} `json:"to"`
}

ValueDiff describes the diff between two values

Jump to

Keyboard shortcuts

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