コード例 #1
0
ファイル: shared.go プロジェクト: johnqxu/swagger-gin
func gatherModels(specDoc *spec.Document, modelNames []string) map[string]spec.Schema {
	models, mnc := make(map[string]spec.Schema), len(modelNames)
	for k, v := range specDoc.Spec().Definitions {
		for _, nm := range modelNames {
			if mnc == 0 || k == nm {
				models[k] = v
			}
		}
	}
	return models
}
コード例 #2
0
ファイル: generator.go プロジェクト: johnqxu/swagger-gin
func (g *Generator) generateOperations(buf *bytes.Buffer, specDoc *spec.Document) {
	g.Buffer = buf
	paths := specDoc.AllPaths()

	g.p("package operations")
	g.p()

	for _, path := range paths {
		operations := path.PathItemProps
		if post := operations.Post; post != nil {
			g.generateOperation(post)
		}
		if get := operations.Get; get != nil {
			g.generateOperation(get)
		}
		if put := operations.Put; put != nil {
			g.generateOperation(put)
		}
		if del := operations.Delete; del != nil {
			g.generateOperation(del)
		}
	}
}
コード例 #3
0
ファイル: shared.go プロジェクト: johnqxu/swagger-gin
func appNameOrDefault(specDoc *spec.Document, name, defaultName string) string {
	if name == "" {
		if specDoc.Spec().Info != nil && specDoc.Spec().Info.Title != "" {
			name = specDoc.Spec().Info.Title
		} else {
			name = defaultName
		}
	}
	return swag.ToGoName(name)
}
コード例 #4
0
ファイル: shared.go プロジェクト: johnqxu/swagger-gin
func gatherOperations(specDoc *spec.Document, operationIDs []string) map[string]spec.Operation {
	operations := make(map[string]spec.Operation)
	if len(operationIDs) == 0 {
		for _, k := range specDoc.OperationIDs() {
			if op, ok := specDoc.OperationForName(k); ok {
				operations[k] = *op
			}
		}
	} else {
		for _, k := range specDoc.OperationIDs() {
			for _, nm := range operationIDs {
				if k == nm {
					if op, ok := specDoc.OperationForName(k); ok {
						operations[k] = *op
					}
				}
			}
		}
	}
	return operations
}
コード例 #5
0
ファイル: generator.go プロジェクト: johnqxu/swagger-gin
func (g *Generator) generateHandlers(buf *bytes.Buffer, specDoc *spec.Document) {
	g.Buffer = buf
	paths := specDoc.AllPaths()
	groups := make(map[string]string)

	g.p("package ", specDoc.Spec().Info.Title)
	g.p()
	g.p()
	g.p("import (")
	g.p("	\"github.com/gin-gonic/gin\"")
	g.p(")")
	g.p()

	for _, path := range paths {
		operations := path.PathItemProps
		if post := operations.Post; post != nil {
			tag := post.OperationProps.Tags[0]
			groups[tag] = g.caps(tag)
		}
		if get := operations.Get; get != nil {
			tag := get.OperationProps.Tags[0]
			groups[tag] = g.caps(tag)
		}
		if put := operations.Put; put != nil {
			tag := put.OperationProps.Tags[0]
			groups[tag] = g.caps(tag)
		}
		if del := operations.Delete; del != nil {
			tag := del.OperationProps.Tags[0]
			groups[tag] = g.caps(tag)
		}
	}

	g.p("var (")
	for _, group := range groups {
		g.p(group, " *gin.RouterGroup")
	}
	g.p(")")
	g.p()
	g.p("func AddRoutes() {")

	for group, _ := range groups {
		for pname, path := range paths {
			operations := path.PathItemProps
			if post := operations.Post; post != nil {
				g.generateRouter("POST", group, pname, post)
			}
			if get := operations.Get; get != nil {
				g.generateRouter("GET", group, pname, get)
			}
			if put := operations.Put; put != nil {
				g.generateRouter("PUT", group, pname, put)
			}
			if del := operations.Delete; del != nil {
				g.generateRouter("DELETE", group, pname, del)
			}
		}
		g.p()
	}

	g.p("}")
	g.p()

	for group, _ := range groups {
		for _, path := range paths {
			operations := path.PathItemProps
			if post := operations.Post; post != nil {
				g.generateHandler(group, post)
			}
			if get := operations.Get; get != nil {
				g.generateHandler(group, get)
			}
			if put := operations.Put; put != nil {
				g.generateHandler(group, put)
			}
			if del := operations.Delete; del != nil {
				g.generateHandler(group, del)
			}
		}
	}
}