Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix - app deployment issue #154

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 73 additions & 3 deletions codegen.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,69 @@ func GetValidParameters(parameters []string) []string {
return newParams
}

func HandleCheckDuplicates(slice []string, item string) bool {
for _, s := range slice {
if s == item {
return true
}
}
return false
}

func HandleAddParameter(param string, usedParams *[]string) []string {
if param == "" {
return nil
}

parts := strings.Split(param, ",")
var validParts []string

for _, part := range parts {
part = strings.TrimSpace(part)
if part == "" {
continue
}

paramName := strings.TrimSpace(strings.SplitN(part, "=", 2)[0])

if !HandleCheckDuplicates(*usedParams, paramName) {
*usedParams = append(*usedParams, paramName)
validParts = append(validParts, part)
}
}
return validParts
}

func BuildParameterString(params ...string) string {
var usedParams []string
var result []string

for _, param := range params {
trimmedParam := strings.TrimPrefix(param, ",")
result = append(result, HandleAddParameter(trimmedParam, &usedParams)...)
}

if len(result) > 0 {
return ", " + strings.Join(result, " , ")
}
return ""
}

func HandleCheckValidURL(url string) string {
parts := strings.Split(url, "/")

for i, part := range parts {
switch {
case strings.HasPrefix(part, "{") && !strings.HasSuffix(part, "}"):
parts[i] = part + "}"
case strings.HasSuffix(part, "}") && !strings.HasPrefix(part, "{"):
parts[i] = "{" + part
}
}

return strings.Join(parts, "/")
}

// This function generates the python code that's being used.
// This is really meta when you program it. Handling parameters is hard here.
func MakePythoncode(swagger *openapi3.Swagger, name, url, method string, parameters, optionalQueries, headers []string, fileField string, api WorkflowApp, handleFile bool) (string, string) {
Expand Down Expand Up @@ -624,7 +687,7 @@ func MakePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet

urlParameter := ", url"
urlInline := "{url}"

url = HandleCheckValidURL(url)
// Specific check for SSL verification
// This is critical for onprem stuff.
// Added to_file as of July 2022
Expand Down Expand Up @@ -662,7 +725,6 @@ func MakePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet
}
}
}

functionname := strings.ToLower(fmt.Sprintf("%s_%s", method, name))
if strings.Contains(strings.ToLower(name), strings.ToLower(method)) {
functionname = strings.ToLower(name)
Expand Down Expand Up @@ -747,7 +809,8 @@ func MakePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet
// Extra param for url if it's changeable
// Extra param for authentication scheme(s)
// The last weird one is the body.. Tabs & spaces sucks.
parsedParameters := fmt.Sprintf("%s%s%s%s%s%s%s",

parsedParameters := BuildParameterString(
authenticationParameter,
urlParameter,
fileParameter,
Expand Down Expand Up @@ -2171,6 +2234,13 @@ func FixFunctionName(functionName, actualPath string, lowercase bool) string {
functionName = strings.ToLower(functionName)
}

re := regexp.MustCompile(`[^A-Za-z0-9_]`)
functionName = re.ReplaceAllString(functionName, "_")

if len(functionName) == 0 || (functionName[0] < 'A' || (functionName[0] > 'Z' && functionName[0] < 'a') || functionName[0] > 'z') {
functionName = "_" + functionName
}

return functionName
}

Expand Down
Loading