diff --git a/backend/go-app/codegen.go b/backend/go-app/codegen.go index 0a6a9811..67507d14 100644 --- a/backend/go-app/codegen.go +++ b/backend/go-app/codegen.go @@ -247,6 +247,8 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet queryString := "" queryData := "" + log.Printf("URL START: %s", url) + // FIXME - this might break - need to check if ? or & should be set as query parameterData := "" if len(optionalQueries) > 0 { @@ -279,7 +281,13 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet if swagger.Components.SecuritySchemes["ApiKeyAuth"].Value.In == "header" { authenticationSetup = fmt.Sprintf("headers[\"%s\"] = apikey", swagger.Components.SecuritySchemes["ApiKeyAuth"].Value.Name) } else if swagger.Components.SecuritySchemes["ApiKeyAuth"].Value.In == "query" { - authenticationSetup = fmt.Sprintf("url+=f\"?%s={apikey}\"", swagger.Components.SecuritySchemes["ApiKeyAuth"].Value.Name) + // This might suck lol + key := "?" + if strings.Contains(url, "?") { + key = "&" + } + + authenticationSetup = fmt.Sprintf("url+=f\"%s%s={apikey}\"", key, swagger.Components.SecuritySchemes["ApiKeyAuth"].Value.Name) } } } @@ -308,25 +316,53 @@ func makePythoncode(swagger *openapi3.Swagger, name, url, method string, paramet bodyParameter := "" bodyAddin := "" + bodyFormatter := "" postParameters := []string{"post", "patch", "put"} for _, item := range postParameters { if method == item { bodyParameter = ", body=\"\"" - bodyAddin = ", json=body" + bodyAddin = ", data=body" + + // FIXME: Does JSON data work? + bodyFormatter = ` + if (body.startswith("{") and body.endswith("}")) or (body.startswith("[") and body.endswith("]")): + try: + body = json.dumps(body) + except: + pass + ` break } } // Extra param for url if it's changeable // Extra param for authentication scheme(s) - + log.Printf("URL OTHER: %s", url) data := fmt.Sprintf(` async def %s(self%s%s%s%s%s): headers={} url=f"%s%s" %s %s + %s return requests.%s(url, headers=headers%s%s).text - `, functionname, authenticationParameter, urlParameter, parameterData, queryString, bodyParameter, urlInline, url, authenticationSetup, queryData, method, authenticationAddin, bodyAddin) + `, + functionname, + authenticationParameter, + urlParameter, + parameterData, + queryString, + bodyParameter, + urlInline, + url, + authenticationSetup, + queryData, + bodyFormatter, + method, + authenticationAddin, + bodyAddin, + ) + + log.Printf("DATA: %s", data) //log.Println(data) //log.Println(functionname) @@ -776,6 +812,10 @@ func handleConnect(swagger *openapi3.Swagger, api WorkflowApp, extraParameters [ parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -883,6 +923,11 @@ func handleGet(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor parameters = append(parameters, param.Value.Name) + // Skipping simial + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -986,6 +1031,10 @@ func handleHead(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wo parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -1089,6 +1138,10 @@ func handleDelete(swagger *openapi3.Swagger, api WorkflowApp, extraParameters [] parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -1197,6 +1250,10 @@ func handlePost(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wo parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -1300,6 +1357,10 @@ func handlePatch(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []W parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false @@ -1404,6 +1465,10 @@ func handlePut(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor parameters = append(parameters, param.Value.Name) + if strings.Contains(baseUrl, fmt.Sprintf("%s={%s}", param.Value.Name, param.Value.Name)) { + continue + } + if firstQuery { baseUrl = fmt.Sprintf("%s?%s={%s}", baseUrl, param.Value.Name, param.Value.Name) firstQuery = false diff --git a/frontend/src/AngularWorkflow.js b/frontend/src/AngularWorkflow.js index 8a4adeb6..e09aed33 100644 --- a/frontend/src/AngularWorkflow.js +++ b/frontend/src/AngularWorkflow.js @@ -4485,7 +4485,7 @@ const AngularWorkflow = (props) => { } : -
+

{setExecutionModalView(0)}}> diff --git a/frontend/src/AppCreator.js b/frontend/src/AppCreator.js index c8b99057..a02317ba 100644 --- a/frontend/src/AppCreator.js +++ b/frontend/src/AppCreator.js @@ -1262,6 +1262,11 @@ const AppCreator = (props) => { parsedurl = request.url } + if (parsedurl.includes("<") && parsedurl.includes(">")) { + parsedurl = parsedurl.split("<").join("{") + parsedurl = parsedurl.split(">").join("}") + } + if (parsedurl.startsWith("http") || parsedurl.startsWith("ftp")) { if (parsedurl !== undefined && parsedurl.includes(parameterName)) { // Remove <> etc. @@ -1282,6 +1287,7 @@ const AppCreator = (props) => { setActionField("url", parsedurl) setUrlPath(parsedurl) } + //console.log("URL: ", request.url) }} />