func petAPIRouterBuilder(spec *loads.Document, api *untyped.API, analyzed *analysis.Spec) *defaultRouteBuilder { builder := newDefaultRouteBuilder(spec, newRoutableUntypedAPI(spec, api, new(Context))) builder.AddRoute("GET", "/pets", analyzed.AllPaths()["/pets"].Get) builder.AddRoute("POST", "/pets", analyzed.AllPaths()["/pets"].Post) builder.AddRoute("DELETE", "/pets/{id}", analyzed.AllPaths()["/pets/{id}"].Delete) builder.AddRoute("GET", "/pets/{id}", analyzed.AllPaths()["/pets/{id}"].Get) return builder }
func discriminatorInfo(doc *analysis.Spec) *discInfo { baseTypes := make(map[string]discor) for _, sch := range doc.AllDefinitions() { if sch.Schema.Discriminator != "" { tpe, _ := sch.Schema.Extensions.GetString("x-go-name") if tpe == "" { tpe = swag.ToGoName(sch.Name) } baseTypes[sch.Ref.String()] = discor{ FieldName: sch.Schema.Discriminator, GoType: tpe, JSONName: sch.Name, } } } subTypes := make(map[string]discee) for _, sch := range doc.SchemasWithAllOf() { for _, ao := range sch.Schema.AllOf { if ao.Ref.String() != "" { if bt, ok := baseTypes[ao.Ref.String()]; ok { name, _ := sch.Schema.Extensions.GetString("x-class") if name == "" { name = sch.Name } tpe, _ := sch.Schema.Extensions.GetString("x-go-name") if tpe == "" { tpe = swag.ToGoName(sch.Name) } dce := discee{ FieldName: bt.FieldName, FieldValue: name, Ref: sch.Ref, ParentRef: ao.Ref, JSONName: sch.Name, GoType: tpe, } subTypes[sch.Ref.String()] = dce bt.Children = append(bt.Children, dce) baseTypes[ao.Ref.String()] = bt } } } } return &discInfo{Discriminators: baseTypes, Discriminated: subTypes} }
func gatherOperations(specDoc *analysis.Spec, operationIDs []string) map[string]opRef { var oprefs opRefs for method, pathItem := range specDoc.Operations() { for path, operation := range pathItem { // nm := ensureUniqueName(operation.ID, method, path, operations) vv := *operation oprefs = append(oprefs, opRef{ Key: swag.ToGoName(strings.ToLower(method) + " " + path), Method: method, Path: path, ID: vv.ID, Op: &vv, }) } } sort.Sort(oprefs) operations := make(map[string]opRef) for _, opr := range oprefs { nm := opr.ID if nm == "" { nm = opr.Key } _, found := operations[nm] if found { nm = opr.Key } if len(operationIDs) == 0 || containsString(operationIDs, opr.ID) || containsString(operationIDs, nm) { opr.ID = nm opr.Op.ID = nm operations[nm] = opr } } return operations }