Fixed POST, PATCH and PUT with JSON parsing

This commit is contained in:
frikky
2020-06-01 11:01:50 +02:00
parent 4e10981db5
commit 67273e611f
3 changed files with 76 additions and 5 deletions
+69 -4
View File
@@ -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
+1 -1
View File
@@ -4485,7 +4485,7 @@ const AngularWorkflow = (props) => {
}
</div>
:
<div style={{padding: 25, }}>
<div style={{padding: 25, maxWidth: 365, overflowX: "hidden",}}>
<Breadcrumbs aria-label="breadcrumb" separator="" style={{color: "white", fontSize: 16}}>
<h2 style={{color: "rgba(255,255,255,0.5)", cursor: "pointer"}} onClick={() => {setExecutionModalView(0)}}>
<DirectionsRunIcon style={{marginRight: 10}} />
+6
View File
@@ -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)
}}
/>