@ -11,6 +11,18 @@ import (
"github.com/zeromicro/go-zero/tools/goctl/api/util"
)
const (
formTagKey = "form"
pathTagKey = "path"
headerTagKey = "header"
)
func normalizeHandlerName ( handlerName string ) string {
handler := strings . Replace ( handlerName , "Handler" , "" , 1 )
handler = lowCamelCase ( handler )
return handler
}
func lowCamelCase ( s string ) string {
if len ( s ) < 1 {
return ""
@ -20,21 +32,6 @@ func lowCamelCase(s string) string {
return util . ToLower ( s [ : 1 ] ) + s [ 1 : ]
}
func pathToFuncName ( path string ) string {
if ! strings . HasPrefix ( path , "/" ) {
path = "/" + path
}
if ! strings . HasPrefix ( path , "/api" ) {
path = "/api" + path
}
path = strings . Replace ( path , "/" , "_" , - 1 )
path = strings . Replace ( path , "-" , "_" , - 1 )
camel := util . ToCamelCase ( path )
return util . ToLower ( camel [ : 1 ] ) + camel [ 1 : ]
}
func getBaseName ( str string ) string {
return path . Base ( str )
}
@ -170,3 +167,40 @@ func primitiveType(tp string) (string, bool) {
return "" , false
}
func hasUrlPathParams ( route spec . Route ) bool {
ds , ok := route . RequestType . ( spec . DefineStruct )
if ! ok {
return false
}
return len ( route . RequestTypeName ( ) ) > 0 && len ( ds . GetTagMembers ( pathTagKey ) ) > 0
}
func extractPositionalParamsFromPath ( route spec . Route ) string {
ds , ok := route . RequestType . ( spec . DefineStruct )
if ! ok {
return ""
}
var params [ ] string
for _ , member := range ds . GetTagMembers ( pathTagKey ) {
params = append ( params , fmt . Sprintf ( "%s %s" , member . Type . Name ( ) , getPropertyFromMember ( member ) ) )
}
return strings . Join ( params , ", " )
}
func makeDartRequestUrlPath ( route spec . Route ) string {
path := route . Path
ds , ok := route . RequestType . ( spec . DefineStruct )
if ! ok {
return path
}
for _ , member := range ds . GetTagMembers ( pathTagKey ) {
path = strings . ReplaceAll ( path , ":" + pathTagKey , "${" + getPropertyFromMember ( member ) + "}" )
}
return ` " ` + path + ` " `
}