Documentation
¶
Index ¶
- func CheckReq(methodParams []InParam, reqParams map[string]string) (map[string]interface{}, map[string]ValidCond)
- func ToSwag(val interface{}) map[string]*InParam
- type ApiDefinition
- type ApiInfo
- type ApiMethod
- type ApiPaths
- type ApiResponse
- type ApiSchema
- type ApiSpec
- type ApiVerbs
- type InParam
- type ScrRequirement
- type SecurityScheme
- type ValidCond
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckReq ¶
func CheckReq(methodParams []InParam, reqParams map[string]string) (map[string]interface{}, map[string]ValidCond)
CheckReq check input params of request (url or body) and params of method If params doesnt match - return errors as a map methodParams: [{in:form, name:my_param, description:super, format:int16}] reqParams {my_param:req_value1, other_param: req_value2}
Example ¶
methodParams: [{in:form, name:my_param, description:super, format:int16}] reqParams {my_param:req_value1, other_param: req_value2}
demoMethodParams := []InParam{
InParam{
In: "formData",
Name: "demoparam",
Description: "Demo parameter",
SwagType: "integer",
SwagFormat: "int16",
Required: false,
},
InParam{
In: "query",
Name: "demobool",
Description: "Demo boolean",
SwagType: "boolean",
Required: false,
},
InParam{
In: "query",
Name: "demostring",
Description: "Demo string value",
SwagType: "string",
Required: false,
},
}
demoReqParams := map[string]string{
"demoparam": "1234",
"demobool": "true",
"demostring": "",
}
result, conds := CheckReq(demoMethodParams, demoReqParams)
fmt.Println(conds)
fmt.Println(result["demoparam"])
fmt.Println(result["demobool"])
Output: map[] 1234 true
func ToSwag ¶
ToSwag converts params to swag format
Example ¶
package main
import (
"fmt"
)
type SomeThing struct {
IsImportant bool `json:"is_important" summary:"maybe"`
}
// serv_group with locale
type DemoStruct struct {
Id int32 `json:"id" summary:"unique number"`
Name string `json:"name" summary:"name of object"`
ArrSomeThing []*SomeThing `json:"arr_some_thing" summary:"array of some things"`
OptProp *string `json:"opt_prop" summary:"Optional property"`
OptInt *int32 `json:"opt_int"`
ItemUnderStruct *UnderStruct `json:"under_struct"`
}
type UnderStruct struct {
VeryProp string `json:"very_prop" summary:"Very"`
}
func main() {
result := ToSwag(DemoStruct{})
fmt.Println(result["id"].SwagType)
fmt.Println(result["id"].SwagFormat)
fmt.Println(result["name"].SwagType)
fmt.Println(result["arr_some_thing"].SwagType)
// name convention for child elements: arr_child_name
fmt.Println(result["arr_some_thing"].ArrItem.RefParam)
fmt.Println("==opt_prop==")
fmt.Println(result["opt_prop"].SwagType)
fmt.Println("==opt_int==")
fmt.Println(result["opt_int"].SwagType)
fmt.Println(result["opt_int"].SwagFormat)
fmt.Println("==under_struct==")
fmt.Println(result["under_struct"].RefParam)
}
Output: integer int32 string array some_thing ==opt_prop== string ==opt_int== integer int32 ==under_struct== under_struct
Types ¶
type ApiDefinition ¶
type ApiInfo ¶
type ApiInfo struct {
Title string `json:"title"`
Description string `json:"description,omitempty"`
TermsOfService string `json:"termsOfService,omitempty"`
Contact map[string]string `json:"contact,omitempty"`
Version string `json:"version"`
License map[string]string `json:"license,omitempty"`
}
ApiInfo https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#info-object
type ApiMethod ¶
type ApiMethod struct {
Tags []string `json:"tags,omitempty"`
// this field SHOULD be less than 120 characters.
Summary string `json:"summary,omitempty"`
Description string `json:"description"`
OperationId string `json:"operationId,omitempty"`
Consumes []string `json:"consumes,omitempty"`
Produces []string `json:"produces,omitempty"`
Parameters []InParam `json:"parameters,omitempty"`
Responses map[string]ApiResponse `json:"responses,omitempty"`
Deprecated bool `json:"deprecated,omitempty"`
Security []ScrRequirement `json:"security,omitempty"`
}
type ApiResponse ¶
type ApiSchema ¶
type ApiSchema struct {
// All titles and description - in RefStr
RefStr string `json:"$ref,omitempty"`
}
ApiSchema - definition of input and output data types "type": "array",items": {"$ref": "#/definitions/pet" }, "$ref": "someref" http://json-schema.org/example1.html
type ApiSpec ¶
type ApiSpec struct {
Swagger string `json:"swagger"`
Host string `json:"host"`
Info ApiInfo `json:"info"`
BasePath string `json:"basePath"`
Schemes []string `json:"schemes"`
Consumes []string `json:"consumes"`
Produces []string `json:"produces"`
Paths ApiPaths `json:"paths""`
Definitions map[string]ApiDefinition `json:"definitions,omitempty"`
SecurityDefinitions map[string]SecurityScheme `json:"securityDefinitions,omitempty"`
// A declaration of which security schemes are applied for the API as a whole.
// The list of values describes alternative security schemes
// that can be used (that is, there is a logical OR between the security
// requirements). Individual operations can override this definition.
// "security": [{"petstore_auth": ["write:pets","read:pets"]}]
Security []ScrRequirement `json:"security,omitempty"`
}
type InParam ¶
type InParam struct {
Name string `json:"name,omitempty"`
In string `json:"in,omitempty"`
Description string `json:"description,omitempty"`
Required bool `json:"required,omitempty"`
// The value "type" MUST be one of
// "string", "number", "integer", "boolean", "array" or "file".
// If type is "file", the consumes MUST be either "multipart/form-data"
// or " application/x-www-form-urlencoded" and the parameter MUST be in "formData".
SwagType string `json:"type,omitempty"`
ArrItem *InParam `json:"items,omitempty"`
RefParam string `json:"$ref,omitempty"`
// Props and AddtProps doesnt work in UI
//Props map[string]InParam `json:"properties,omitempty"`
//AddtProps map[string]string `json:"additionalProperties,omitempty"`
// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#dataTypeFormat
// int32, int64, float, double, byte
SwagFormat string `json:"format,omitempty"`
Maximum int32 `json:"maximum,omitempty"`
Minimum int32 `json:"minimum,omitempty"`
ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"`
ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"`
MinLength int32 `json:"minLength,omitempty"`
MaxLength int32 `json:"maxLength,omitempty"`
Pattern string `json:"pattern,omitempty"`
}
InParam describes a single operation parameter http://json-schema.org/latest/json-schema-validation.html https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#parameter-object
func (*InParam) IsMatchValue ¶
IsMatchValue checks a value from a request (from url or body) Return unmatched properties, like { unmatched: { valType: { our: string, yours: integer }, maxLength: { our: 10, yours: 20 }, minLength: { our: 2, yours: 0 }, required: { our: true, yours: false }} Rerun ourValue, converted to required SwagType If val is not exists - empty string "" You can not use outValue if ValidConditions is not empty
type ScrRequirement ¶
ScrRequirement - security requirement. https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#securityRequirementObject
type SecurityScheme ¶
type SecurityScheme struct {
ScrType string `json:"type"`
Name string `json:"name,omitempty"`
In string `json:"in,omitempty"`
}
SecurityScheme https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#securityDefinitionsObject Supported schemes are basic authentication, an API key
(either as a header or as a query parameter) and OAuth2's common flows (implicit, password, application and access code).