tools

package
v2.0.2+incompatible Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2018 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SwaggerVersion = "2.0"
	ApiDomain      = "api.romana.io"
)
View Source
const (
	SwaggerInBody     = "body"
	SwaggerInQuery    = "query"
	SwaggerInPath     = "path"
	SwaggerInFormData = "formData"
	SwaggerInHeader   = "header"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Analyzer

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

Analyzer uses various reflection/introspection/code analysis methods to analyze code and store metadata about it, for various purposes. It works on a level of a Go "repository" (see https://golang.org/doc/code.html#Organization).

func NewAnalyzer

func NewAnalyzer(path string) *Analyzer

NewAnalyzer creates a new Analyzer object for analysis of Go project in the provided path.

func (*Analyzer) Analyze

func (a *Analyzer) Analyze() error

func (*Analyzer) FindImplementors

func (a *Analyzer) FindImplementors(interfaceName string) []types.Type

type Swagger

type Swagger struct {
	Swagger     string                      `yaml:"swagger,omitempty"`
	Info        SwaggerInfo                 `yaml:"info,omitempty"`
	Host        string                      `yaml:"host,omitempty"`
	BasePath    string                      `yaml:"basePath,omitempty"`
	Schemes     []string                    `yaml:"schemes,omitempty"`
	Consumes    []string                    `yaml:"consumes,omitempty"`
	Produces    []string                    `yaml:"produces,omitempty"`
	Paths       map[string]*SwaggerPathItem `yaml:"paths,omitempty"`
	Definitions map[string]*SwaggerSchema   `yaml:"definitions,omitempty"`
}

func NewSwagger

func NewSwagger() Swagger

type SwaggerContact

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

See http://swagger.io/specification/#contactObject

type SwaggerExternalDocumentation

type SwaggerExternalDocumentation struct {
	Description string `yaml:"description,omitempty"`
	URL         string `yaml:"url,omitempty"`
}

See http://swagger.io/specification/#externalDocumentationObject

type SwaggerHeader

type SwaggerHeader struct {
	Type             string                     `yaml:"type,omitempty"`
	Format           string                     `yaml:"format,omitempty"`
	Default          interface{}                `yaml:"default,omitempty"`
	MultipleOf       int                        `yaml:"multipleOf,omitempty"`
	Maximum          int                        `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool                       `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int                        `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool                       `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int                        `yaml:"maxLength,omitempty"`
	MinLength        int                        `yaml:"minLength,omitempty"`
	Pattern          string                     `yaml:"pattern,omitempty"`
	MaxItems         int                        `yaml:"maxItems,omitempty"`
	MinItems         int                        `yaml:"minItems,omitempty"`
	UniqueItems      bool                       `yaml:"uniqueItems,omitempty"`
	MaxProperties    int                        `yaml:"maxProperties,omitempty"`
	MinProperties    int                        `yaml:"minProperties,omitempty"`
	Required         bool                       `yaml:"required,omitempty"`
	Enum             []interface{}              `yaml:"enum,omitempty"`
	Items            *SwaggerItems              `yaml:"items,omitempty"`
	Properties       map[string]SwaggerProperty `yaml:"properties,omitempty"`
}

type SwaggerInfo

type SwaggerInfo struct {
	Title          string         `yaml:"title,omitempty"`
	Description    string         `yaml:"description,omitempty"`
	TermsOfService string         `yaml:"termsOfService,omitempty"`
	Contact        SwaggerContact `yaml:"contact,omitempty"`
	License        SwaggerLicense `yaml:"license,omitempty"`
	Version        string         `yaml:"version,omitempty"`
}

See http://swagger.io/specification/#infoObject

type SwaggerItems

type SwaggerItems struct {
	Type             string                     `yaml:"type,omitempty"`
	Format           string                     `yaml:"format,omitempty"`
	Default          interface{}                `yaml:"default,omitempty"`
	MultipleOf       int                        `yaml:"multipleOf,omitempty"`
	Maximum          int                        `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool                       `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int                        `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool                       `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int                        `yaml:"maxLength,omitempty"`
	MinLength        int                        `yaml:"minLength,omitempty"`
	Pattern          string                     `yaml:"pattern,omitempty"`
	MaxItems         int                        `yaml:"maxItems,omitempty"`
	MinItems         int                        `yaml:"minItems,omitempty"`
	UniqueItems      bool                       `yaml:"uniqueItems,omitempty"`
	MaxProperties    int                        `yaml:"maxProperties,omitempty"`
	MinProperties    int                        `yaml:"minProperties,omitempty"`
	Required         bool                       `yaml:"required,omitempty"`
	Enum             []interface{}              `yaml:"enum,omitempty"`
	Items            *SwaggerItems              `yaml:"items,omitempty"`
	Properties       map[string]SwaggerProperty `yaml:"properties,omitempty"`
}

type SwaggerLicense

type SwaggerLicense struct {
	Name string `yaml:"name,omitempty"`
	URL  string `yaml:"url,omitempty"`
}

See http://swagger.io/specification/#licenseObject

type SwaggerOperation

type SwaggerOperation struct {
	Tags                []string                         `yaml:"tags,omitempty"`
	Summary             string                           `yaml:"summary,omitempty"`
	Description         string                           `yaml:"description,omitempty"`
	ExternalDocs        SwaggerExternalDocumentation     `yaml:"externalDocs,omitempty"`
	OperationId         string                           `yaml:"operationId,omitempty"`
	Consumes            []string                         `yaml:"consumes,omitempty"`
	Produces            []string                         `yaml:"produces,omitempty"`
	Parameters          []SwaggerParamOrRef              `yaml:"parameters,omitempty"`
	Responses           map[string]SwaggerResponse       `yaml:"responses,omitempty"`
	Schemes             []string                         `yaml:"schemes,omitempty"`
	Deprecated          bool                             `yaml:"deprecated,omitempty"`
	SecurityDefinitions map[string]SwaggerSecurityScheme `yaml:"securityDefinitions,omitempty"`
	Security            []map[string][]string            `yaml:"security,omitempty"`
}

type SwaggerParam

type SwaggerParam struct {
	Name             string                     `yaml:"name,omitempty"`
	In               string                     `yaml:"in,omitempty"`
	Description      string                     `yaml:"description,omitempty"`
	Required         bool                       `yaml:"required,omitempty"`
	Schema           SwaggerSchema              `yaml:"required,omitempty"`
	AllowEmptyValue  bool                       `yaml:"allowEmptyValue,omitempty"`
	Type             string                     `yaml:"type,omitempty"`
	Format           string                     `yaml:"format,omitempty"`
	Default          interface{}                `yaml:"default,omitempty"`
	MultipleOf       int                        `yaml:"multipleOf,omitempty"`
	Maximum          int                        `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool                       `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int                        `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool                       `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int                        `yaml:"maxLength,omitempty"`
	MinLength        int                        `yaml:"minLength,omitempty"`
	Pattern          string                     `yaml:"pattern,omitempty"`
	MaxItems         int                        `yaml:"maxItems,omitempty"`
	MinItems         int                        `yaml:"minItems,omitempty"`
	UniqueItems      bool                       `yaml:"uniqueItems,omitempty"`
	MaxProperties    int                        `yaml:"maxProperties,omitempty"`
	MinProperties    int                        `yaml:"minProperties,omitempty"`
	Enum             []interface{}              `yaml:"enum,omitempty"`
	Items            *SwaggerItems              `yaml:"items,omitempty"`
	Properties       map[string]SwaggerProperty `yaml:"properties,omitempty"`
}

type SwaggerParamOrRef

type SwaggerParamOrRef struct {
	Name             string                     `yaml:"name,omitempty"`
	In               string                     `yaml:"in,omitempty"`
	Description      string                     `yaml:"description,omitempty"`
	Required         bool                       `yaml:"required,omitempty"`
	Schema           SwaggerSchema              `yaml:"schema,omitempty"`
	AllowEmptyValue  bool                       `yaml:"allowEmptyValue,omitempty"`
	Type             string                     `yaml:"type,omitempty"`
	Format           string                     `yaml:"format,omitempty"`
	Default          interface{}                `yaml:"default,omitempty"`
	MultipleOf       int                        `yaml:"multipleOf,omitempty"`
	Maximum          int                        `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool                       `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int                        `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool                       `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int                        `yaml:"maxLength,omitempty"`
	MinLength        int                        `yaml:"minLength,omitempty"`
	Pattern          string                     `yaml:"pattern,omitempty"`
	MaxItems         int                        `yaml:"maxItems,omitempty"`
	MinItems         int                        `yaml:"minItems,omitempty"`
	UniqueItems      bool                       `yaml:"uniqueItems,omitempty"`
	MaxProperties    int                        `yaml:"maxProperties,omitempty"`
	MinProperties    int                        `yaml:"minProperties,omitempty"`
	Enum             []interface{}              `yaml:"enum,omitempty"`
	Items            *SwaggerItems              `yaml:"items,omitempty"`
	Properties       map[string]SwaggerProperty `yaml:"properties,omitempty"`
	Ref              string                     `yaml:"$ref,omitempty"`
}

type SwaggerPathItem

type SwaggerPathItem struct {
	Ref        string              `yaml:"$ref,omitempty"`
	Get        SwaggerOperation    `yaml:"get,omitempty"`
	Put        SwaggerOperation    `yaml:"put,omitempty"`
	Post       SwaggerOperation    `yaml:"post,omitempty"`
	Delete     SwaggerOperation    `yaml:"delete,omitempty"`
	Options    SwaggerOperation    `yaml:"options,omitempty"`
	Head       SwaggerOperation    `yaml:"head,omitempty"`
	Patch      SwaggerOperation    `yaml:"patch,omitempty"`
	Parameters []SwaggerParamOrRef `yaml:"parameters,omitempty"`
}

type SwaggerProperty

type SwaggerProperty struct {
	Description      string      `yaml:"description,omitempty"`
	Type             string      `yaml:"type,omitempty"`
	Format           string      `yaml:"format,omitempty"`
	Default          interface{} `yaml:"default,omitempty"`
	MultipleOf       int         `yaml:"multipleOf,omitempty"`
	Maximum          int         `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool        `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int         `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool        `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int         `yaml:"maxLength,omitempty"`
	MinLength        int         `yaml:"minLength,omitempty"`
	Pattern          string      `yaml:"pattern,omitempty"`
	MaxItems         int         `yaml:"maxItems,omitempty"`
	MinItems         int         `yaml:"minItems,omitempty"`
	UniqueItems      bool        `yaml:"uniqueItems,omitempty"`
	MaxProperties    int         `yaml:"maxProperties,omitempty"`
	MinProperties    int         `yaml:"minProperties,omitempty"`
	//	Required         bool                       `yaml:"required,omitempty"`
	Enum       []interface{}              `yaml:"enum,omitempty"`
	Items      *SwaggerItems              `yaml:"items,omitempty"`
	Properties map[string]SwaggerProperty `yaml:"properties,omitempty"`
	Ref        string                     `yaml:"$ref,omitempty"`
}

type SwaggerRef

type SwaggerRef struct {
	Ref string `yaml:"$ref,omitempty"`
}

type SwaggerResponse

type SwaggerResponse struct {
	Description string                   `yaml:"description,omitempty"`
	Schema      SwaggerSchema            `yaml:"schema,omitempty"`
	Headers     map[string]SwaggerHeader `yaml:"headers,omitempty"`
	Examples    map[string]interface{}   `yaml:"examples,omitempty"`
}

type SwaggerSchema

type SwaggerSchema struct {
	Ref              string        `yaml:"$ref,omitempty"`
	Title            string        `yaml:"title,omitempty"`
	Description      string        `yaml:"description,omitempty"`
	Type             string        `yaml:"type,omitempty"`
	Format           string        `yaml:"format,omitempty"`
	Default          interface{}   `yaml:"default,omitempty"`
	MultipleOf       int           `yaml:"multipleOf,omitempty"`
	Maximum          int           `yaml:"maximum,omitempty"`
	ExclusiveMaximum bool          `yaml:"exclusiveMaximum,omitempty"`
	Minimum          int           `yaml:"minimum,omitempty"`
	ExclusiveMinimum bool          `yaml:"exclusiveMinimum,omitempty"`
	MaxLength        int           `yaml:"maxLength,omitempty"`
	MinLength        int           `yaml:"minLength,omitempty"`
	Pattern          string        `yaml:"pattern,omitempty"`
	MaxItems         int           `yaml:"maxItems,omitempty"`
	MinItems         int           `yaml:"minItems,omitempty"`
	UniqueItems      bool          `yaml:"uniqueItems,omitempty"`
	MaxProperties    int           `yaml:"maxProperties,omitempty"`
	MinProperties    int           `yaml:"minProperties,omitempty"`
	Enum             []interface{} `yaml:"enum,omitempty"`
	Items            *SwaggerItems `yaml:"items,omitempty"`
	// See http://json-schema.org/latest/json-schema-validation.html#anchor61
	Required   []string                   `yaml:"required,omitempty"`
	Properties map[string]SwaggerProperty `yaml:"properties,omitempty"`
}

type SwaggerSecurityScheme

type SwaggerSecurityScheme struct {
	Type             string            `yaml:"type,omitempty"`
	Description      string            `yaml:"description,omitempty"`
	Name             string            `yaml:"name,omitempty"`
	In               string            `yaml:"in,omitempty"`
	Flow             string            `yaml:"flow,omitempty"`
	AuthorizationURL string            `yaml:"authorizationUrl,omitempty"`
	Scopes           map[string]string `yaml:"scopes,omitempty"`
}

type SwaggerTag

type SwaggerTag struct {
	Name         string                       `yaml:"name,omitempty"`
	Description  string                       `yaml:"description,omitempty"`
	ExternalDocs SwaggerExternalDocumentation `yaml:"externalDocs,omitempty"`
}

type Swaggerer

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

func NewSwaggerer

func NewSwaggerer(analyzer *Analyzer, service common.Service) *Swaggerer

NewSwaggerer creates a new instance of Swaggerer.

func (*Swaggerer) Process

func (rd *Swaggerer) Process() ([]byte, error)

Process processes the code yielding a []byte of the YAML representation of the Swagger defintion. The processing rules are as follows:

  1. For each common.Service found, go over its Routes (whatever Routes() method yields) and based on that create the paths and operations.
  2. For structs, field-level comments are taken from the description value of "romana" structure tag. For example: type Policy struct { Direction string `json:"direction,omitempty" romana:"desc:Direction is one of 'ingress' or egress'."` ... }

Jump to

Keyboard shortcuts

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