swagger

package
v0.0.0-...-2e417d0 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2017 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultTypeSchemaMapper = map[reflect.Type]*TypeSchema{
	reflect.TypeOf(time.Time{}): &TypeSchema{
		RefName: "",
		Schema: &Schema{
			Type:   "string",
			Format: "date-time",
		},
		AllowRef: false,
	},
}

DefaultTypeSchemaMapper is used for mapping from go-type to swagger-schema.

Functions

This section is empty.

Types

type Contact

type Contact struct {
	Name  string `json:"name,omitempty"`
	URL   string `json:"url,omitempty"`
	Email string `json:"email,omitempty"`
}

Contact is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#contact-object

type ExternalDocumentation

type ExternalDocumentation struct {
	Description string `json:"description,omitempty"`
	URL         string `json:"url" swagger:",req"`
}

ExternalDocumentation is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#externalDocumentationObject

type HandlerInfo

type HandlerInfo struct {
	HandlerFunc interface{}
	Operation
	Context ucon.Context
}

HandlerInfo is a container of the handler function and the operation with the context. HandlerInfo implements interfaces of ucon.HandlerContainer and ucon.Context.

func NewHandlerInfo

func NewHandlerInfo(handler interface{}) *HandlerInfo

NewHandlerInfo returns new HandlerInfo containing given handler function.

func (*HandlerInfo) Handler

func (wr *HandlerInfo) Handler() interface{}

Handler returns contained handler function.

func (*HandlerInfo) Value

func (wr *HandlerInfo) Value(key interface{}) interface{}

Value returns the value contained with the key.

type Header struct {
	Description      string        `json:"description,omitempty"`
	Type             string        `json:"type" swagger:",req"`
	Format           string        `json:"format,omitempty"`
	Items            *Items        `json:"items,omitempty"`
	CollectionFormat string        `json:"collectionFormat,omitempty"`
	Default          interface{}   `json:"default,omitempty"`
	Maximum          *int          `json:"maximum,omitempty"`
	ExclusiveMaximum *bool         `json:"exclusiveMaximum,omitempty"`
	Minimum          *int          `json:"minimum,omitempty"`
	ExclusiveMinimum *bool         `json:"exclusiveMinimum,omitempty"`
	MaxLength        *int          `json:"maxLength,omitempty"`
	MinLength        *int          `json:"minLength,omitempty"`
	Pattern          string        `json:"pattern,omitempty"`
	MaxItems         *int          `json:"maxItems,omitempty"`
	MinItems         *int          `json:"minItems,omitempty"`
	UniqueItems      *bool         `json:"uniqueItems,omitempty"`
	Enum             []interface{} `json:"enum,omitempty"`
	MultipleOf       *int          `json:"multipleOf,omitempty"`
}

Header is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#header-object

type Info

type Info struct {
	Title          string   `json:"title" swagger:",req"`
	Description    string   `json:"description,omitempty"`
	TermsOfService string   `json:"termsOfService,omitempty"`
	Contact        *Contact `json:"contact,omitempty"`
	License        *License `json:"license,omitempty"`
	Version        string   `json:"version" swagger:",req"`
}

Info is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#infoObject

type Items

type Items struct {
	Type             string        `json:"type" swagger:",req"`
	Format           string        `json:"format,omitempty"`
	Items            *Items        `json:"items,omitempty"`
	CollectionFormat string        `json:"collectionFormat,omitempty"`
	Default          interface{}   `json:"default,omitempty"`
	Maximum          *int          `json:"maximum,omitempty"`
	ExclusiveMaximum *bool         `json:"exclusiveMaximum,omitempty"`
	Minimum          *int          `json:"minimum,omitempty"`
	ExclusiveMinimum *bool         `json:"exclusiveMinimum,omitempty"`
	MaxLength        *int          `json:"maxLength,omitempty"`
	MinLength        *int          `json:"minLength,omitempty"`
	Pattern          string        `json:"pattern,omitempty"`
	MaxItems         *int          `json:"maxItems,omitempty"`
	MinItems         *int          `json:"minItems,omitempty"`
	UniqueItems      *bool         `json:"uniqueItems,omitempty"`
	Enum             []interface{} `json:"enum,omitempty"`
	MultipleOf       *int          `json:"multipleOf,omitempty"`
}

Items is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#items-object

type License

type License struct {
	Name string `json:"name" swagger:",req"`
	URL  string `json:"url,omitempty"`
}

License is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#license-object

type Object

type Object struct {
	Swagger             string                 `json:"swagger" swagger:",req,d=2.0"`
	Info                *Info                  `json:"info" swagger:",req"`
	Host                string                 `json:"host,omitempty"`
	BasePath            string                 `json:"basePath,omitempty"`
	Schemes             []string               `json:"schemes,omitempty" swagger:",d=https"`
	Consumes            []string               `json:"consumes,omitempty" swagger:",d=application/json"`
	Produces            []string               `json:"produces,omitempty" swagger:",d=application/json"`
	Paths               Paths                  `json:"paths" swagger:",req"`
	Definitions         Definitions            `json:"definitions,omitempty"`
	Parameters          ParametersDefinitions  `json:"parameters,omitempty"`
	Responses           ResponsesDefinitions   `json:"responses,omitempty"`
	SecurityDefinitions SecurityDefinitions    `json:"securityDefinitions,omitempty"`
	Security            []SecurityRequirement  `json:"security,omitempty"`
	Tags                []*Tag                 `json:"tags,omitempty"`
	ExternalDocs        *ExternalDocumentation `json:"externalDocs,omitempty"`
}

Object is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object

type Operation

type Operation struct {
	Tags         []string               `json:"tags,omitempty"`
	Summary      string                 `json:"summary,omitempty"`
	Description  string                 `json:"description,omitempty"`
	ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"`
	OperationID  string                 `json:"operationId,omitempty"`
	Consumes     []string               `json:"consumes,omitempty"`
	Produces     []string               `json:"produces,omitempty"`
	Parameters   []*Parameter           `json:"parameters,omitempty"`
	Responses    Responses              `json:"responses" swagger:",req"`
	Schemes      []string               `json:"schemes,omitempty"`
	Deprecated   bool                   `json:"deprecated,omitempty"`
	Security     []SecurityRequirement  `json:"security,omitempty"`
}

Operation is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#operation-object

type Options

type Options struct {
	Object                 *Object
	DefinitionNameModifier func(refT reflect.Type, defName string) string
}

Options is a container of optional settings to configure a plugin.

type Parameter

type Parameter struct {
	Name        string `json:"name" swagger:",req"`
	In          string `json:"in" swagger:",req,enum=query|header|path|formData|body"`
	Description string `json:"description,omitempty"`
	Required    bool   `json:"required,omitempty"`

	// If in is "body":
	Schema *Schema `json:"schema,omitempty"`

	// If in is any value other than "body":
	Type             string        `json:"type,omitempty"`
	Format           string        `json:"format,omitempty"`
	AllowEmptyValue  bool          `json:"allowEmptyValue,omitempty"`
	Items            *Items        `json:"items,omitempty"`
	CollectionFormat string        `json:"collectionFormat,omitempty"`
	Default          interface{}   `json:"default,omitempty"`
	Maximum          *int          `json:"maximum,omitempty"`
	ExclusiveMaximum *bool         `json:"exclusiveMaximum,omitempty"`
	Minimum          *int          `json:"minimum,omitempty"`
	ExclusiveMinimum *bool         `json:"exclusiveMinimum,omitempty"`
	MaxLength        *int          `json:"maxLength,omitempty"`
	MinLength        *int          `json:"minLength,omitempty"`
	Pattern          string        `json:"pattern,omitempty"`
	MaxItems         *int          `json:"maxItems,omitempty"`
	MinItems         *int          `json:"minItems,omitempty"`
	UniqueItems      *bool         `json:"uniqueItems,omitempty"`
	Enum             []interface{} `json:"enum,omitempty"`
	MultipleOf       *int          `json:"multipleOf,omitempty"`
}

Parameter is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject

type PathItem

type PathItem struct {
	Ref        string       `json:"$ref,omitempty"`
	Get        *Operation   `json:"get,omitempty"`
	Put        *Operation   `json:"put,omitempty"`
	Post       *Operation   `json:"post,omitempty"`
	Delete     *Operation   `json:"delete,omitempty"`
	Options    *Operation   `json:"options,omitempty"`
	Head       *Operation   `json:"head,omitempty"`
	Patch      *Operation   `json:"patch,omitempty"`
	Parameters []*Parameter `json:"parameters,omitempty"`
}

PathItem is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#pathItemObject

type Plugin

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

Plugin is a holder for all of plugin settings.

func NewPlugin

func NewPlugin(opts *Options) *Plugin

NewPlugin returns new swagger plugin configured with the options.

func (*Plugin) AddTag

func (p *Plugin) AddTag(tag *Tag) *Tag

AddTag adds the tag to top-level tags definition.

func (*Plugin) HandlersScannerProcess

func (p *Plugin) HandlersScannerProcess(m *ucon.ServeMux, rds []*ucon.RouteDefinition) error

HandlersScannerProcess executes scanning all registered handlers to serve swagger.json.

type Reference

type Reference struct {
	Ref string `json:"$ref,omitempty"`
}

Reference is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#reference-object

type Response

type Response struct {
	Description string  `json:"description" swagger:",req"`
	Schema      *Schema `json:"schema,omitempty"`
	Headers     Headers `json:"headers,omitempty"`
	Examples    Example `json:"examples,omitempty"`

	// https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#reference-object
	Ref string `json:"$ref,omitempty"`
}

Response is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#responseObject

type Schema

type Schema struct {
	Ref                  string             `json:"$ref,omitempty"`
	Format               string             `json:"format,omitempty"`
	Title                string             `json:"title,omitempty"`
	Description          string             `json:"description,omitempty"`
	Default              interface{}        `json:"default,omitempty"`
	Maximum              *int               `json:"maximum,omitempty"`
	ExclusiveMaximum     *bool              `json:"exclusiveMaximum,omitempty"`
	Minimum              *int               `json:"minimum,omitempty"`
	ExclusiveMinimum     *bool              `json:"exclusiveMinimum,omitempty"`
	MaxLength            *int               `json:"maxLength,omitempty"`
	MinLength            *int               `json:"minLength,omitempty"`
	Pattern              string             `json:"pattern,omitempty"`
	MaxItems             *int               `json:"maxItems,omitempty"`
	MinItems             *int               `json:"minItems,omitempty"`
	UniqueItems          *bool              `json:"uniqueItems,omitempty"`
	MaxProperties        *int               `json:"maxProperties,omitempty"`
	MinProperties        *int               `json:"minProperties,omitempty"`
	Required             []string           `json:"required,omitempty"`
	Enum                 []interface{}      `json:"enum,omitempty"`
	Type                 string             `json:"type,omitempty"`
	Items                *Schema            `json:"items,omitempty"`
	AllOf                []*Schema          `json:"allOf,omitempty"`
	Properties           map[string]*Schema `json:"properties,omitempty"`
	AdditionalProperties map[string]*Schema `json:"additionalProperties,omitempty"`
	Discriminator        string             `json:"discriminator,omitempty"`
	ReadOnly             *bool              `json:"readOnly,omitempty"`
	// Xml XML
	ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"`
	Example      interface{}            `json:"example,omitempty"`
}

Schema is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schemaObject

type SecurityScheme

type SecurityScheme struct {
	Type             string `json:"type" swagger:",req"`
	Description      string `json:"description,omitempty"`
	Name             string `json:"name" swagger:",req"`
	In               string `json:"in" swagger:",req,enum=query|header"`
	Flow             string `json:"flow" swagger:",req"`
	AuthorizationURL string `json:"authorizationUrl" swagger:",req"`
	TokenURL         string `json:"tokenUrl" swagger:",req"`
	Scopes           Scopes `json:"scopes" swagger:",req"`
}

SecurityScheme is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-scheme-object

type Tag

type Tag struct {
	Name         string                 `json:"name" swagger:",req"`
	Description  string                 `json:"description,omitempty"`
	ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"`
}

Tag is https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#tag-object

type TagSwagger

type TagSwagger reflect.StructTag

TagSwagger is a struct tag for setting attributes of swagger.

func NewTagSwagger

func NewTagSwagger(tag reflect.StructTag) TagSwagger

NewTagSwagger casts the tag to TagSwagger.

func (TagSwagger) Default

func (swaggerTag TagSwagger) Default() string

Default returns the default value of the field.

func (TagSwagger) Empty

func (swaggerTag TagSwagger) Empty() bool

Empty returns whether the text of the tag is empty.

func (TagSwagger) Enum

func (swaggerTag TagSwagger) Enum() []string

Enum returns the values allowed in the field.

func (TagSwagger) In

func (swaggerTag TagSwagger) In() string

In returns the place where the field will be put as parameter.

func (TagSwagger) Name

func (swaggerTag TagSwagger) Name() string

Name returns the name for swagger. If the name is not given by `swagger` tag, `json` tag will be used instead.

func (TagSwagger) Private

func (swaggerTag TagSwagger) Private() bool

Private returns whether the field is hidden from swagger.

func (TagSwagger) Required

func (swaggerTag TagSwagger) Required() bool

Required returns whether the field is required.

type TypeSchema

type TypeSchema struct {
	RefName  string
	Schema   *Schema
	AllowRef bool
}

TypeSchema is a container of swagger schema and its attributes. RefName must be given if AllowRef is true.

Jump to

Keyboard shortcuts

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