go-swagger: github.com/go-swagger/go-swagger/generator Index | Files

package generator

import "github.com/go-swagger/go-swagger/generator"

Package generator provides the code generation library for go-swagger.

Generating data types

The general idea is that you should rarely see interface{} in the generated code. You get a complete representation of a swagger document in somewhat idiomatic go.

To do so, there is a set of mapping patterns that are applied, to map a Swagger specification to go types:

   definition of primitive   => type alias/name
   definition of array       => type alias/name
   definition of map         => type alias/name

   definition of object
   with properties           => struct
   definition of $ref        => type alias/name

   object with only
   additional properties     => map[string]T

   object with additional
   properties and properties => custom serializer

   schema with schema array
   in items                  => tuple (struct with properties, custom serializer)

   schema with all of        => struct

     * allOf schema with $ref        => embedded value
     * allOf schema with properties  => properties are included in struct
     * adding an allOf schema with just "x-isnullable": true or
	   "x-nullable": true turns the schema into a pointer when
	   there are only other extension properties provided

NOTE: anyOf and oneOf JSON-schema constructs are not supported by Swagger 2.0

A property on a definition is a pointer when any one of the following conditions is met:

    it is an object schema (struct)
    it has x-nullable or x-isnullable as vendor extension
    it is a primitive where the zero value is valid but would fail validation
	otherwise strings minLength > 0 or required results in non-pointer
    numbers min > 0, max < 0 and min < max

JSONSchema and by extension Swagger allow for items that have a fixed size array, with the schema describing the items at each index. This can be combined with additional items to form some kind of tuple with varargs.

To map this to go it creates a struct that has fixed names and a custom json serializer.

NOTE: the additionalItems keyword is not supported by Swagger 2.0. However, the generator and validator parts in go-swagger do.

Documenting the generated code

The code that is generated also gets the doc comments that are used by the scanner to generate a spec from go code. So that after generation you should be able to reverse generate a spec from the code that was generated by your spec.

It should be equivalent to the original spec but might miss some default values and examples.

Index

Package Files

bindata.go client.go config.go debug.go discriminators.go doc.go formats.go model.go operation.go shared.go structs.go support.go template_repo.go types.go

Variables

var (
    // Debug when the env var DEBUG or SWAGGER_DEBUG is not empty
    // the generators will be very noisy about what they are doing
    Debug = os.Getenv("DEBUG") != "" || os.Getenv("SWAGGER_DEBUG") != ""
)
var FuncMap template.FuncMap = map[string]interface{}{
    "pascalize": pascalize,
    "camelize":  swag.ToJSONName,
    "varname":   golang.MangleVarName,
    "humanize":  swag.ToHumanNameLower,
    "snakize":   golang.MangleFileName,
    "toPackagePath": func(name string) string {
        return filepath.FromSlash(golang.ManglePackagePath(name, ""))
    },
    "toPackage": func(name string) string {
        return golang.ManglePackagePath(name, "")
    },
    "toPackageName": func(name string) string {
        return golang.ManglePackageName(name, "")
    },
    "dasherize": swag.ToCommandName,
    "pluralizeFirstWord": func(arg string) string {
        sentence := strings.Split(arg, " ")
        if len(sentence) == 1 {
            return inflect.Pluralize(arg)
        }

        return inflect.Pluralize(sentence[0]) + " " + strings.Join(sentence[1:], " ")
    },
    "json":       asJSON,
    "prettyjson": asPrettyJSON,
    "hasInsecure": func(arg []string) bool {
        return swag.ContainsStringsCI(arg, "http") || swag.ContainsStringsCI(arg, "ws")
    },
    "hasSecure": func(arg []string) bool {
        return swag.ContainsStringsCI(arg, "https") || swag.ContainsStringsCI(arg, "wss")
    },

    "stripPackage": func(str, pkg string) string {
        parts := strings.Split(str, ".")
        strlen := len(parts)
        if strlen > 0 {
            return parts[strlen-1]
        }
        return str
    },
    "dropPackage": func(str string) string {
        parts := strings.Split(str, ".")
        strlen := len(parts)
        if strlen > 0 {
            return parts[strlen-1]
        }
        return str
    },
    "upper": strings.ToUpper,
    "contains": func(coll []string, arg string) bool {
        for _, v := range coll {
            if v == arg {
                return true
            }
        }
        return false
    },
    "padSurround": func(entry, padWith string, i, ln int) string {
        var res []string
        if i > 0 {
            for j := 0; j < i; j++ {
                res = append(res, padWith)
            }
        }
        res = append(res, entry)
        tot := ln - i - 1
        for j := 0; j < tot; j++ {
            res = append(res, padWith)
        }
        return strings.Join(res, ",")
    },
    "joinFilePath": filepath.Join,
    "comment": func(str string) string {
        lines := strings.Split(str, "\n")
        return (strings.Join(lines, "\n// "))
    },
    "blockcomment": func(str string) string {
        return strings.Replace(str, "*/", "[*]/", -1)
    },
    "inspect":   pretty.Sprint,
    "cleanPath": path.Clean,
    "mediaTypeName": func(orig string) string {
        return strings.SplitN(orig, ";", 2)[0]
    },
    "goSliceInitializer": goSliceInitializer,
    "hasPrefix":          strings.HasPrefix,
    "stringContains":     strings.Contains,
}

FuncMap is a map with default functions for use n the templates. These are available in every template

func AddFile Uses

func AddFile(name, data string) error

AddFile adds a file to the default repository. It will create a new template based on the filename. It trims the .gotmpl from the end and converts the name using swag.ToJSONName. This will strip directory separators and Camelcase the next letter. e.g validation/primitive.gotmpl will become validationPrimitive

If the file contains a definition for a template that is protected the whole file will not be added

func Asset Uses

func Asset(name string) ([]byte, error)

Asset loads and returns the asset for the given name. It returns an error if the asset could not be found or could not be loaded.

func AssetDigest Uses

func AssetDigest(name string) ([sha256.Size]byte, error)

AssetDigest returns the digest of the file with the given name. It returns an error if the asset could not be found or the digest could not be loaded.

func AssetDir Uses

func AssetDir(name string) ([]string, error)

AssetDir returns the file names below a certain directory embedded in the file by go-bindata. For example if you run go-bindata on data/... and data contains the following hierarchy:

data/
  foo.txt
  img/
    a.png
    b.png

then AssetDir("data") would return []string{"foo.txt", "img"}, AssetDir("data/img") would return []string{"a.png", "b.png"}, AssetDir("foo.txt") and AssetDir("notexist") would return an error, and AssetDir("") will return []string{"data"}.

func AssetInfo Uses

func AssetInfo(name string) (os.FileInfo, error)

AssetInfo loads and returns the asset info for the given name. It returns an error if the asset could not be found or could not be loaded.

func AssetNames Uses

func AssetNames() []string

AssetNames returns the names of the assets.

func AssetString Uses

func AssetString(name string) (string, error)

AssetString returns the asset contents as a string (instead of a []byte).

func DefaultSectionOpts Uses

func DefaultSectionOpts(gen *GenOpts)

DefaultSectionOpts for a given opts, this is used when no config file is passed and uses the embedded templates when no local override can be found

func Digests Uses

func Digests() (map[string][sha256.Size]byte, error)

Digests returns a map of all known files and their checksums.

func GenerateClient Uses

func GenerateClient(name string, modelNames, operationIDs []string, opts *GenOpts) error

GenerateClient generates a client library for a swagger spec document.

func GenerateDefinition Uses

func GenerateDefinition(modelNames []string, opts *GenOpts) error

GenerateDefinition generates a model file for a schema definition.

func GenerateServer Uses

func GenerateServer(name string, modelNames, operationIDs []string, opts *GenOpts) error

GenerateServer generates a server application

func GenerateServerOperation Uses

func GenerateServerOperation(operationNames []string, opts *GenOpts) error

GenerateServerOperation generates a parameter model, parameter validator, http handler implementations for a given operation It also generates an operation handler interface that uses the parameter model for handling a valid request. Allows for specifying a list of tags to include only certain tags for the generation

func GenerateSupport Uses

func GenerateSupport(name string, modelNames, operationIDs []string, opts *GenOpts) error

GenerateSupport generates the supporting files for an API

func MustAsset Uses

func MustAsset(name string) []byte

MustAsset is like Asset but panics when Asset would return an error. It simplifies safe initialization of global variables.

func MustAssetString Uses

func MustAssetString(name string) string

MustAssetString is like AssetString but panics when Asset would return an error. It simplifies safe initialization of global variables.

func ReadConfig Uses

func ReadConfig(fpath string) (*viper.Viper, error)

ReadConfig at the specified path, when no path is specified it will look into the current directory and load a .swagger.{yml,json,hcl,toml,properties} file Returns a viper config or an error

func RestoreAsset Uses

func RestoreAsset(dir, name string) error

RestoreAsset restores an asset under the given directory.

func RestoreAssets Uses

func RestoreAssets(dir, name string) error

RestoreAssets restores an asset under the given directory recursively.

type GenApp Uses

type GenApp struct {
    GenCommon
    APIPackage          string
    Package             string
    ReceiverName        string
    Name                string
    Principal           string
    DefaultConsumes     string
    DefaultProduces     string
    Host                string
    BasePath            string
    Info                *spec.Info
    ExternalDocs        *spec.ExternalDocumentation
    Imports             map[string]string
    DefaultImports      []string
    Schemes             []string
    ExtraSchemes        []string
    Consumes            GenSerGroups
    Produces            GenSerGroups
    SecurityDefinitions GenSecuritySchemes
    Models              []GenDefinition
    Operations          GenOperations
    OperationGroups     GenOperationGroups
    SwaggerJSON         string
    // Embedded specs: this is important for when the generated server adds routes.
    // NOTE: there is a distinct advantage to having this in runtime rather than generated code.
    // We are noti ever going to generate the router.
    // If embedding spec is an issue (e.g. memory usage), this can be excluded with the --exclude-spec
    // generation option. Alternative methods to serve spec (e.g. from disk, ...) may be implemented by
    // adding a middleware to the generated API.
    FlatSwaggerJSON string
    ExcludeSpec     bool
    GenOpts         *GenOpts
}

GenApp represents all the meta data needed to generate an application from a swagger spec

func (*GenApp) UseGoStructFlags Uses

func (g *GenApp) UseGoStructFlags() bool

UseGoStructFlags returns true when no strategy is specified or it is set to "go-flags"

func (*GenApp) UseIntermediateMode Uses

func (g *GenApp) UseIntermediateMode() bool

UseIntermediateMode for https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29

func (*GenApp) UseModernMode Uses

func (g *GenApp) UseModernMode() bool

UseModernMode for https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility

func (*GenApp) UsePFlags Uses

func (g *GenApp) UsePFlags() bool

UsePFlags returns true when the flag strategy is set to pflag

type GenCommon Uses

type GenCommon struct {
    Copyright        string
    TargetImportPath string
}

GenCommon contains common properties needed across definitions, app and operations TargetImportPath may be used by templates to import other (possibly generated) packages in the generation path (e.g. relative to GOPATH). TargetImportPath is NOT used by standard templates.

type GenDefinition Uses

type GenDefinition struct {
    GenCommon
    GenSchema
    Package        string
    Imports        map[string]string
    DefaultImports []string
    ExtraSchemas   GenSchemaList
    DependsOn      []string
    External       bool
}

GenDefinition contains all the properties to generate a definition from a swagger spec

func (*GenDefinition) Zero Uses

func (rt *GenDefinition) Zero() string

type GenDefinitions Uses

type GenDefinitions []GenDefinition

GenDefinitions represents a list of operations to generate this implements a sort by operation id

func (GenDefinitions) Len Uses

func (g GenDefinitions) Len() int

func (GenDefinitions) Less Uses

func (g GenDefinitions) Less(i, j int) bool

func (GenDefinitions) Swap Uses

func (g GenDefinitions) Swap(i, j int)

type GenHeader Uses

type GenHeader struct {
    Package      string
    ReceiverName string
    IndexVar     string

    ID              string
    Name            string
    Path            string
    ValueExpression string

    Title       string
    Description string
    Default     interface{}
    HasDefault  bool

    CollectionFormat string

    Child  *GenItems
    Parent *GenItems

    Converter string
    Formatter string

    ZeroValue string
    // contains filtered or unexported fields
}

GenHeader represents a header on a response for code generation

func (*GenHeader) ItemsDepth Uses

func (g *GenHeader) ItemsDepth() string

ItemsDepth returns a string "items.items..." with as many items as the level of nesting of the array. For a header objects it always returns "".

func (*GenHeader) Zero Uses

func (rt *GenHeader) Zero() string

type GenHeaders Uses

type GenHeaders []GenHeader

GenHeaders is a sorted collection of headers for codegen

func (GenHeaders) HasSomeDefaults Uses

func (g GenHeaders) HasSomeDefaults() bool

HasSomeDefaults returns true is at least one header has a default value set

func (GenHeaders) Len Uses

func (g GenHeaders) Len() int

func (GenHeaders) Less Uses

func (g GenHeaders) Less(i, j int) bool

func (GenHeaders) Swap Uses

func (g GenHeaders) Swap(i, j int)

type GenItems Uses

type GenItems struct {
    Name             string
    Path             string
    ValueExpression  string
    CollectionFormat string
    Child            *GenItems
    Parent           *GenItems
    Converter        string
    Formatter        string

    Location string
    IndexVar string
    KeyVar   string

    // instructs generator to skip the splitting and parsing from CollectionFormat
    SkipParse bool
    // contains filtered or unexported fields
}

GenItems represents the collection items for a collection parameter

func (*GenItems) ItemsDepth Uses

func (g *GenItems) ItemsDepth() string

ItemsDepth returns a string "items.items..." with as many items as the level of nesting of the array.

func (*GenItems) Zero Uses

func (rt *GenItems) Zero() string

type GenOperation Uses

type GenOperation struct {
    GenCommon
    Package      string
    ReceiverName string
    Name         string
    Summary      string
    Description  string
    Method       string
    Path         string
    BasePath     string
    Tags         []string
    RootPackage  string

    Imports        map[string]string
    DefaultImports []string
    ExtraSchemas   GenSchemaList

    Authorized          bool
    Security            []GenSecurityRequirements
    SecurityDefinitions GenSecuritySchemes
    Principal           string

    SuccessResponse  *GenResponse
    SuccessResponses []GenResponse
    Responses        GenStatusCodeResponses
    DefaultResponse  *GenResponse

    Params               GenParameters
    QueryParams          GenParameters
    PathParams           GenParameters
    HeaderParams         GenParameters
    FormParams           GenParameters
    HasQueryParams       bool
    HasPathParams        bool
    HasHeaderParams      bool
    HasFormParams        bool
    HasFormValueParams   bool
    HasFileParams        bool
    HasBodyParams        bool
    HasStreamingResponse bool

    Schemes            []string
    ExtraSchemes       []string
    ProducesMediaTypes []string
    ConsumesMediaTypes []string
    TimeoutName        string

    Extensions map[string]interface{}
}

GenOperation represents an operation for code generation

type GenOperationGroup Uses

type GenOperationGroup struct {
    GenCommon
    Name       string
    Operations GenOperations

    Summary        string
    Description    string
    Imports        map[string]string
    DefaultImports []string
    RootPackage    string
    GenOpts        *GenOpts
}

GenOperationGroup represents a named (tagged) group of operations

type GenOperationGroups Uses

type GenOperationGroups []GenOperationGroup

GenOperationGroups is a sorted collection of operation groups

func (GenOperationGroups) Len Uses

func (g GenOperationGroups) Len() int

func (GenOperationGroups) Less Uses

func (g GenOperationGroups) Less(i, j int) bool

func (GenOperationGroups) Swap Uses

func (g GenOperationGroups) Swap(i, j int)

type GenOperations Uses

type GenOperations []GenOperation

GenOperations represents a list of operations to generate this implements a sort by operation id

func (GenOperations) Len Uses

func (g GenOperations) Len() int

func (GenOperations) Less Uses

func (g GenOperations) Less(i, j int) bool

func (GenOperations) Swap Uses

func (g GenOperations) Swap(i, j int)

type GenOpts Uses

type GenOpts struct {
    IncludeModel      bool
    IncludeValidator  bool
    IncludeHandler    bool
    IncludeParameters bool
    IncludeResponses  bool
    IncludeURLBuilder bool
    IncludeMain       bool
    IncludeSupport    bool
    ExcludeSpec       bool
    DumpData          bool
    ValidateSpec      bool
    FlattenOpts       *analysis.FlattenOpts
    IsClient          bool

    PropertiesSpecOrder        bool
    StrictAdditionalProperties bool

    Spec                   string
    APIPackage             string
    ModelPackage           string
    ServerPackage          string
    ClientPackage          string
    Principal              string
    Target                 string
    Sections               SectionOpts
    LanguageOpts           *LanguageOpts
    TypeMapping            map[string]string
    Imports                map[string]string
    DefaultScheme          string
    DefaultProduces        string
    DefaultConsumes        string
    TemplateDir            string
    Template               string
    RegenerateConfigureAPI bool
    Operations             []string
    Models                 []string
    Tags                   []string
    Name                   string
    FlagStrategy           string
    CompatibilityMode      string
    ExistingModels         string
    Copyright              string
    // contains filtered or unexported fields
}

GenOpts the options for the generator

func (*GenOpts) CheckOpts Uses

func (g *GenOpts) CheckOpts() error

CheckOpts carries out some global consistency checks on options.

At the moment, these checks simply protect TargetPath() and SpecPath() functions. More checks may be added here.

func (*GenOpts) EnsureDefaults Uses

func (g *GenOpts) EnsureDefaults() error

EnsureDefaults for these gen opts

func (*GenOpts) SpecPath Uses

func (g *GenOpts) SpecPath() string

SpecPath returns the path to the spec relative to the server package. If the spec is remote keep this absolute location.

If spec is not relative to server (e.g. lives on a different drive on windows), then the resolved path is absolute.

This method is used by templates, e.g. with {{ .SpecPath }}

Errors cases are prevented by calling CheckOpts beforehand.

func (*GenOpts) TargetPath Uses

func (g *GenOpts) TargetPath() string

TargetPath returns the target generation path relative to the server package. This method is used by templates, e.g. with {{ .TargetPath }}

Errors cases are prevented by calling CheckOpts beforehand.

Example: Target: ${PWD}/tmp ServerPackage: abc/efg

Server is generated in ${PWD}/tmp/abc/efg relative TargetPath returned: ../../../tmp

type GenParameter Uses

type GenParameter struct {
    ID              string
    Name            string
    ModelsPackage   string
    Path            string
    ValueExpression string
    IndexVar        string
    KeyVar          string
    ReceiverName    string
    Location        string
    Title           string
    Description     string
    Converter       string
    Formatter       string

    Schema *GenSchema

    CollectionFormat string

    Child  *GenItems
    Parent *GenItems

    Default         interface{}
    HasDefault      bool
    ZeroValue       string
    AllowEmptyValue bool

    // validation strategy for Body params, which may mix model and simple constructs.
    // Distinguish the following cases:
    // - HasSimpleBodyParams: body is an inline simple type
    // - HasModelBodyParams: body is a model objectd
    // - HasSimpleBodyItems: body is an inline array of simple type
    // - HasModelBodyItems: body is an array of model objects
    // - HasSimpleBodyMap: body is a map of simple objects (possibly arrays)
    // - HasModelBodyMap: body is a map of model objects
    HasSimpleBodyParams bool
    HasModelBodyParams  bool
    HasSimpleBodyItems  bool
    HasModelBodyItems   bool
    HasSimpleBodyMap    bool
    HasModelBodyMap     bool

    Extensions map[string]interface{}
    // contains filtered or unexported fields
}

GenParameter is used to represent a parameter or a header for code generation.

func (*GenParameter) IsBodyParam Uses

func (g *GenParameter) IsBodyParam() bool

IsBodyParam returns true when this parameter is a body param

func (*GenParameter) IsFileParam Uses

func (g *GenParameter) IsFileParam() bool

IsFileParam returns true when this parameter is a file param

func (*GenParameter) IsFormParam Uses

func (g *GenParameter) IsFormParam() bool

IsFormParam returns true when this parameter is a form param

func (*GenParameter) IsHeaderParam Uses

func (g *GenParameter) IsHeaderParam() bool

IsHeaderParam returns true when this parameter is a header param

func (*GenParameter) IsPathParam Uses

func (g *GenParameter) IsPathParam() bool

IsPathParam returns true when this parameter is a path param

func (*GenParameter) IsQueryParam Uses

func (g *GenParameter) IsQueryParam() bool

IsQueryParam returns true when this parameter is a query param

func (*GenParameter) ItemsDepth Uses

func (g *GenParameter) ItemsDepth() string

ItemsDepth returns a string "items.items..." with as many items as the level of nesting of the array. For a parameter object, it always returns "".

func (*GenParameter) Zero Uses

func (rt *GenParameter) Zero() string

type GenParameters Uses

type GenParameters []GenParameter

GenParameters represents a sorted parameter collection

func (GenParameters) HasSomeDefaults Uses

func (g GenParameters) HasSomeDefaults() bool

HasSomeDefaults returns true is at least one parameter has a default value set

func (GenParameters) Len Uses

func (g GenParameters) Len() int

func (GenParameters) Less Uses

func (g GenParameters) Less(i, j int) bool

func (GenParameters) Swap Uses

func (g GenParameters) Swap(i, j int)

type GenResponse Uses

type GenResponse struct {
    Package       string
    ModelsPackage string
    ReceiverName  string
    Name          string
    Description   string

    IsSuccess bool

    Code               int
    Method             string
    Path               string
    Headers            GenHeaders
    Schema             *GenSchema
    AllowsForStreaming bool

    Imports        map[string]string
    DefaultImports []string

    Extensions map[string]interface{}
}

GenResponse represents a response object for code generation

type GenSchema Uses

type GenSchema struct {
    Example                    string
    OriginalName               string
    Name                       string
    Suffix                     string
    Path                       string
    ValueExpression            string
    IndexVar                   string
    KeyVar                     string
    Title                      string
    Description                string
    Location                   string
    ReceiverName               string
    Items                      *GenSchema
    AllowsAdditionalItems      bool
    HasAdditionalItems         bool
    AdditionalItems            *GenSchema
    Object                     *GenSchema
    XMLName                    string
    CustomTag                  string
    Properties                 GenSchemaList
    AllOf                      GenSchemaList
    HasAdditionalProperties    bool
    IsAdditionalProperties     bool
    AdditionalProperties       *GenSchema
    StrictAdditionalProperties bool
    ReadOnly                   bool
    IsVirtual                  bool
    IsBaseType                 bool
    HasBaseType                bool
    IsSubType                  bool
    IsExported                 bool
    DiscriminatorField         string
    DiscriminatorValue         string
    Discriminates              map[string]string
    Parents                    []string
    IncludeValidator           bool
    IncludeModel               bool
    Default                    interface{}
    // contains filtered or unexported fields
}

GenSchema contains all the information needed to generate the code for a schema

func (*GenSchema) Zero Uses

func (rt *GenSchema) Zero() string

type GenSchemaList Uses

type GenSchemaList []GenSchema

GenSchemaList is a list of schemas for generation.

It can be sorted by name to get a stable struct layout for version control and such

func (GenSchemaList) Len Uses

func (g GenSchemaList) Len() int

func (GenSchemaList) Less Uses

func (g GenSchemaList) Less(i, j int) bool

func (GenSchemaList) Swap Uses

func (g GenSchemaList) Swap(i, j int)

type GenSecurityRequirement Uses

type GenSecurityRequirement struct {
    Name   string
    Scopes []string
}

GenSecurityRequirement represents a security requirement for an operation

type GenSecurityRequirements Uses

type GenSecurityRequirements []GenSecurityRequirement

GenSecurityRequirements represents a compounded security requirement specification. In a []GenSecurityRequirements complete requirements specification, outer elements are interpreted as optional requirements (OR), and inner elements are interpreted as jointly required (AND).

func (GenSecurityRequirements) Len Uses

func (g GenSecurityRequirements) Len() int

func (GenSecurityRequirements) Less Uses

func (g GenSecurityRequirements) Less(i, j int) bool

func (GenSecurityRequirements) Swap Uses

func (g GenSecurityRequirements) Swap(i, j int)

type GenSecurityScheme Uses

type GenSecurityScheme struct {
    AppName      string
    ID           string
    Name         string
    ReceiverName string
    IsBasicAuth  bool
    IsAPIKeyAuth bool
    IsOAuth2     bool
    Scopes       []string
    Source       string
    Principal    string
    // from spec.SecurityScheme
    Description      string
    Type             string
    In               string
    Flow             string
    AuthorizationURL string
    TokenURL         string
    Extensions       map[string]interface{}
}

GenSecurityScheme represents a security scheme for code generation

type GenSecuritySchemes Uses

type GenSecuritySchemes []GenSecurityScheme

GenSecuritySchemes sorted representation of serializers

func (GenSecuritySchemes) Len Uses

func (g GenSecuritySchemes) Len() int

func (GenSecuritySchemes) Less Uses

func (g GenSecuritySchemes) Less(i, j int) bool

func (GenSecuritySchemes) Swap Uses

func (g GenSecuritySchemes) Swap(i, j int)

type GenSerGroup Uses

type GenSerGroup struct {
    ReceiverName   string
    AppName        string
    Name           string
    MediaType      string
    Implementation string
    AllSerializers GenSerializers
}

GenSerGroup represents a group of serializers, most likely this is a media type to a list of prioritized serializers.

type GenSerGroups Uses

type GenSerGroups []GenSerGroup

GenSerGroups sorted representation of serializer groups

func (GenSerGroups) Len Uses

func (g GenSerGroups) Len() int

func (GenSerGroups) Less Uses

func (g GenSerGroups) Less(i, j int) bool

func (GenSerGroups) Swap Uses

func (g GenSerGroups) Swap(i, j int)

type GenSerializer Uses

type GenSerializer struct {
    ReceiverName   string
    AppName        string
    Name           string
    MediaType      string
    Implementation string
}

GenSerializer represents a single serializer for a particular media type

type GenSerializers Uses

type GenSerializers []GenSerializer

GenSerializers sorted representation of serializers

func (GenSerializers) Len Uses

func (g GenSerializers) Len() int

func (GenSerializers) Less Uses

func (g GenSerializers) Less(i, j int) bool

func (GenSerializers) Swap Uses

func (g GenSerializers) Swap(i, j int)

type GenStatusCodeResponses Uses

type GenStatusCodeResponses []GenResponse

GenStatusCodeResponses a container for status code responses

func (GenStatusCodeResponses) Len Uses

func (g GenStatusCodeResponses) Len() int

func (GenStatusCodeResponses) Less Uses

func (g GenStatusCodeResponses) Less(i, j int) bool

func (GenStatusCodeResponses) MarshalJSON Uses

func (g GenStatusCodeResponses) MarshalJSON() ([]byte, error)

MarshalJSON marshals these responses to json

func (GenStatusCodeResponses) Swap Uses

func (g GenStatusCodeResponses) Swap(i, j int)

func (*GenStatusCodeResponses) UnmarshalJSON Uses

func (g *GenStatusCodeResponses) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals this GenStatusCodeResponses from json

type LanguageConfig Uses

type LanguageConfig map[string]LanguageDefinition

LanguageConfig structure that is obtained from parsing a config file

type LanguageDefinition Uses

type LanguageDefinition struct {
    Layout SectionOpts `mapstructure:"layout"`
}

LanguageDefinition in the configuration file.

func (*LanguageDefinition) ConfigureOpts Uses

func (d *LanguageDefinition) ConfigureOpts(opts *GenOpts) error

ConfigureOpts for generation

type LanguageOpts Uses

type LanguageOpts struct {
    ReservedWords  []string
    BaseImportFunc func(string) string `json:"-"`
    // contains filtered or unexported fields
}

LanguageOpts to describe a language to the code generator

func GoLangOpts Uses

func GoLangOpts() *LanguageOpts

GoLangOpts for rendering items as golang code

func (*LanguageOpts) FormatContent Uses

func (l *LanguageOpts) FormatContent(name string, content []byte) ([]byte, error)

FormatContent formats a file with a language specific formatter

func (*LanguageOpts) Init Uses

func (l *LanguageOpts) Init()

Init the language option

func (*LanguageOpts) MangleFileName Uses

func (l *LanguageOpts) MangleFileName(name string) string

MangleFileName makes sure a file name gets a safe name

func (*LanguageOpts) MangleName Uses

func (l *LanguageOpts) MangleName(name, suffix string) string

MangleName makes sure a reserved word gets a safe name

func (*LanguageOpts) ManglePackageName Uses

func (l *LanguageOpts) ManglePackageName(name, suffix string) string

ManglePackageName makes sure a package gets a safe name. In case of a file system path (e.g. name contains "/" or "\" on Windows), this return only the last element.

func (*LanguageOpts) ManglePackagePath Uses

func (l *LanguageOpts) ManglePackagePath(name string, suffix string) string

ManglePackagePath makes sure a full package path gets a safe name. Only the last part of the path is altered.

func (*LanguageOpts) MangleVarName Uses

func (l *LanguageOpts) MangleVarName(name string) string

MangleVarName makes sure a reserved word gets a safe name

type Repository Uses

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

Repository is the repository for the generator templates

func NewRepository Uses

func NewRepository(funcs template.FuncMap) *Repository

NewRepository creates a new template repository with the provided functions defined

func (*Repository) AddFile Uses

func (t *Repository) AddFile(name, data string) error

AddFile adds a file to the repository. It will create a new template based on the filename. It trims the .gotmpl from the end and converts the name using swag.ToJSONName. This will strip directory separators and Camelcase the next letter. e.g validation/primitive.gotmpl will become validationPrimitive

If the file contains a definition for a template that is protected the whole file will not be added

func (*Repository) DumpTemplates Uses

func (t *Repository) DumpTemplates()

DumpTemplates prints out a dump of all the defined templates, where they are defined and what their dependencies are.

func (*Repository) Get Uses

func (t *Repository) Get(name string) (*template.Template, error)

Get will return the named template from the repository, ensuring that all dependent templates are loaded. It will return an error if a dependent template is not defined in the repository.

func (*Repository) LoadContrib Uses

func (t *Repository) LoadContrib(name string) error

LoadContrib loads template from contrib directory

func (*Repository) LoadDefaults Uses

func (t *Repository) LoadDefaults()

LoadDefaults will load the embedded templates

func (*Repository) LoadDir Uses

func (t *Repository) LoadDir(templatePath string) error

LoadDir will walk the specified path and add each .gotmpl file it finds to the repository

func (*Repository) MustGet Uses

func (t *Repository) MustGet(name string) *template.Template

MustGet a template by name, panics when fails

type SectionOpts Uses

type SectionOpts struct {
    Application     []TemplateOpts `mapstructure:"application"`
    Operations      []TemplateOpts `mapstructure:"operations"`
    OperationGroups []TemplateOpts `mapstructure:"operation_groups"`
    Models          []TemplateOpts `mapstructure:"models"`
}

SectionOpts allows for specifying options to customize the templates used for generation

type TemplateOpts Uses

type TemplateOpts struct {
    Name       string `mapstructure:"name"`
    Source     string `mapstructure:"source"`
    Target     string `mapstructure:"target"`
    FileName   string `mapstructure:"file_name"`
    SkipExists bool   `mapstructure:"skip_exists"`
    SkipFormat bool   `mapstructure:"skip_format"`
}

TemplateOpts allows

Package generator imports 35 packages (graph) and is imported by 5 packages. Updated 2019-08-20. Refresh now. Tools for package owners.