diff --git a/backend/go-app/main.go b/backend/go-app/main.go index f86a557c..501384cc 100644 --- a/backend/go-app/main.go +++ b/backend/go-app/main.go @@ -728,9 +728,8 @@ func handleRegisterVerification(resp http.ResponseWriter, request *http.Request) Userdata := users[0] - // FIXME: Not for cloud! Userdata.Verified = true - err = shuffle.SetUser(ctx, &Userdata) + err = shuffle.SetUser(ctx, &Userdata, true) if err != nil { log.Printf("Failed adding verification for user %s: %s", Userdata.Username, err) resp.WriteHeader(401) @@ -740,7 +739,7 @@ func handleRegisterVerification(resp http.ResponseWriter, request *http.Request) resp.WriteHeader(200) resp.Write([]byte(fmt.Sprintf(`{"success": true, "reason": "%s"}`, defaultMessage))) - log.Printf("%s SUCCESSFULLY FINISHED REGISTRATION", Userdata.Username) + log.Printf("[INFO] %s SUCCESSFULLY FINISHED REGISTRATION", Userdata.Username) } func handleSetEnvironments(resp http.ResponseWriter, request *http.Request) { @@ -928,7 +927,7 @@ func createNewUser(username, password, role, apikey string, org shuffle.OrgMini) newUser.Id = ID.String() newUser.VerificationToken = verifyToken.String() - err = shuffle.SetUser(ctx, newUser) + err = shuffle.SetUser(ctx, newUser, true) if err != nil { log.Printf("Error adding User %s: %s", username, err) return err @@ -941,14 +940,14 @@ func createNewUser(username, password, role, apikey string, org shuffle.OrgMini) if err != nil { log.Printf("Failed updating org with user %s", newUser.Username) } else { - log.Printf("Successfully updated org with user %s!", newUser.Username) + log.Printf("[INFO] Successfully updated org with user %s!", newUser.Username) } } - err = increaseStatisticsField(ctx, "successful_register", username, 1, org.Id) - if err != nil { - log.Printf("Failed to increase total apps loaded stats: %s", err) - } + //err = increaseStatisticsField(ctx, "successful_register", username, 1, org.Id) + //if err != nil { + // log.Printf("Failed to increase total apps loaded stats: %s", err) + //} return nil } @@ -1152,7 +1151,7 @@ func handleUpdateUser(resp http.ResponseWriter, request *http.Request) { foundUser.Username = t.Username } - err = shuffle.SetUser(ctx, foundUser) + err = shuffle.SetUser(ctx, foundUser, true) if err != nil { log.Printf("Error patching user %s: %s", foundUser.Username, err) resp.WriteHeader(401) @@ -1287,7 +1286,7 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) { userInfo.Orgs = newStringOrgs - err = shuffle.SetUser(ctx, &userInfo) + err = shuffle.SetUser(ctx, &userInfo, true) if err != nil { log.Printf("Error patching User for activeOrg: %s", err) } else { @@ -1304,7 +1303,7 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) { userInfo.ActiveOrg = shuffle.OrgMini{ Id: userInfo.Orgs[0], } - err = shuffle.SetUser(ctx, &userInfo) + err = shuffle.SetUser(ctx, &userInfo, true) if err != nil { log.Printf("Error patching User for activeOrg: %s", err) } @@ -1423,7 +1422,7 @@ func handlePasswordReset(resp http.ResponseWriter, request *http.Request) { Userdata.Password = string(hashedPassword) Userdata.ResetTimeout = 0 Userdata.ResetReference = "" - err = shuffle.SetUser(ctx, &Userdata) + err = shuffle.SetUser(ctx, &Userdata, true) if err != nil { log.Printf("Error adding User %s: %s", Userdata.Username, err) resp.WriteHeader(200) @@ -1630,7 +1629,7 @@ func handleLogin(resp http.ResponseWriter, request *http.Request) { } Userdata.Session = sessionToken - err = shuffle.SetUser(ctx, &Userdata) + err = shuffle.SetUser(ctx, &Userdata, true) if err != nil { log.Printf("Failed updating user when setting session: %s", err) resp.WriteHeader(500) @@ -1641,7 +1640,7 @@ func handleLogin(resp http.ResponseWriter, request *http.Request) { loginData = fmt.Sprintf(`{"success": true, "cookies": [{"key": "session_token", "value": "%s", "expiration": %d}]}`, sessionToken, expiration.Unix()) } - log.Printf("%s SUCCESSFULLY LOGGED IN with session %s", data.Username, Userdata.Session) + log.Printf("[INFO] %s SUCCESSFULLY LOGGED IN with session %s", data.Username, Userdata.Session) resp.WriteHeader(200) resp.Write([]byte(loginData)) @@ -4204,6 +4203,7 @@ func verifySwagger(resp http.ResponseWriter, request *http.Request) { swaggerLoader.IsExternalRefsAllowed = true swagger, err := swaggerLoader.LoadSwaggerFromData(body) if err != nil { + log.Println(string(body)) log.Printf("[ERROR] Swagger validation error: %s", err) resp.WriteHeader(500) resp.Write([]byte(`{"success": false, "reason": "Failed verifying openapi"}`)) @@ -4389,7 +4389,7 @@ func verifySwagger(resp http.ResponseWriter, request *http.Request) { user.PrivateApps[foundNumber] = api } - err = shuffle.SetUser(ctx, &user) + err = shuffle.SetUser(ctx, &user, true) if err != nil { log.Printf("[ERROR] Failed adding verification for user %s: %s", user.Username, err) resp.WriteHeader(500) @@ -5083,7 +5083,7 @@ func runInit(ctx context.Context) { } } - err = shuffle.SetUser(ctx, &user) + err = shuffle.SetUser(ctx, &user, true) if err != nil { log.Printf("Failed to reset user") } else { @@ -5132,7 +5132,7 @@ func runInit(ctx context.Context) { Name: activeOrgs[0].Name, } - err = shuffle.SetUser(ctx, &user) + err = shuffle.SetUser(ctx, &user, true) if err != nil { log.Printf("Failed updating user %s with org", user.Username) } else { diff --git a/backend/go-app/oauth2.go b/backend/go-app/oauth2.go index 164c803d..71d3cbbd 100644 --- a/backend/go-app/oauth2.go +++ b/backend/go-app/oauth2.go @@ -458,7 +458,7 @@ func handleNewOutlookRegister(resp http.ResponseWriter, request *http.Request) { }) // Set apikey for the user if they don't have one - err = shuffle.SetUser(ctx, Userdata) + err = shuffle.SetUser(ctx, Userdata, true) if err != nil { log.Printf("Failed setting user data for %s: %s", Userdata.Username, err) resp.WriteHeader(401) diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 20ab9791..4952f40f 100644 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -2051,7 +2051,7 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request //log.Println(body) //if string(body)[0] == "\"" && string(body)[string(body) - log.Printf("Body: %s", string(body)) + log.Printf("[INFO] Body: %s", string(body)) } var execution shuffle.ExecutionRequest @@ -2093,9 +2093,9 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request return shuffle.WorkflowExecution{}, fmt.Sprintf("Startnode %s was not found in actions", workflow.Start), errors.New(fmt.Sprintf("Startnode %s was not found in actions", workflow.Start)) } } else if len(execution.Start) > 0 { - - log.Printf("[ERROR] START ACTION %s IS WRONG ID LENGTH %d!", execution.Start, len(execution.Start)) - return shuffle.WorkflowExecution{}, fmt.Sprintf("Startnode %s was not found in actions", execution.Start), errors.New(fmt.Sprintf("Startnode %s was not found in actions", execution.Start)) + //log.Printf("[INFO] !") + //log.Printf("[ERROR] START ACTION %s IS WRONG ID LENGTH %d!", execution.Start, len(execution.Start)) + //return shuffle.WorkflowExecution{}, fmt.Sprintf("Startnode %s was not found in actions", execution.Start), errors.New(fmt.Sprintf("Startnode %s was not found in actions", execution.Start)) } if len(execution.ExecutionId) == 36 { @@ -2245,10 +2245,10 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request //log.Println(string(mappedData)) - if len(workflowExecution.Start) == 0 { + if len(workflowExecution.Start) == 0 && len(workflowExecution.Workflow.Start) > 0 { workflowExecution.Start = workflowExecution.Workflow.Start } - log.Printf("[INFO] New startnode: %s", workflowExecution.Start) + //log.Printf("[INFO] New startnode: %s", workflowExecution.Start) childNodes := findChildNodes(workflowExecution, workflowExecution.Start) @@ -2411,13 +2411,20 @@ func handleExecution(id string, workflow shuffle.Workflow, request *http.Request } } } - //childNodes := findChildNodes(workflowExecution, workflowExecution.Start) if !startFound { - log.Printf("[ERROR] Startnode %s doesn't exist!!", workflowExecution.Start) - return shuffle.WorkflowExecution{}, fmt.Sprintf("Workflow action %s doesn't exist in workflow", workflowExecution.Start), errors.New(fmt.Sprintf(`Workflow start node "%s" doesn't exist. Exiting!`, workflowExecution.Start)) + if len(workflowExecution.Start) == 0 && len(workflowExecution.Workflow.Start) > 0 { + workflowExecution.Start = workflow.Start + } else if len(workflowExecution.Workflow.Actions) > 0 { + workflowExecution.Start = workflowExecution.Workflow.Actions[0].ID + } else { + log.Printf("[ERROR] Startnode %s doesn't exist!!", workflowExecution.Start) + return shuffle.WorkflowExecution{}, fmt.Sprintf("Workflow action %s doesn't exist in workflow", workflowExecution.Start), errors.New(fmt.Sprintf(`Workflow start node "%s" doesn't exist. Exiting!`, workflowExecution.Start)) + } } + //log.Printf("EXECUTION START: %s", workflowExecution.Start) + // Verification for execution environments workflowExecution.Results = defaultResults workflowExecution.Workflow.Actions = newActions @@ -3364,7 +3371,7 @@ func deleteWorkflowApp(resp http.ResponseWriter, request *http.Request) { } user.PrivateApps = privateApps - err = shuffle.SetUser(ctx, &user) + err = shuffle.SetUser(ctx, &user, true) if err != nil { log.Printf("[ERROR] Failed removing %s app for user %s: %s", app.Name, user.Username, err) resp.WriteHeader(401) @@ -4197,7 +4204,7 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string, if !found { err = shuffle.SetWorkflowAppDatastore(ctx, api, api.ID) if err != nil { - log.Printf("Failed setting workflowapp in loop: %s", err) + log.Printf("[WARNING] Failed setting workflowapp in loop: %s", err) continue } else { appCounter += 1 @@ -4584,7 +4591,7 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin err = shuffle.SetWorkflowAppDatastore(ctx, workflowapp, workflowapp.ID) if err != nil { - log.Printf("Failed setting workflowapp: %s", err) + log.Printf("[WARNING] Failed setting workflowapp in intro: %s", err) continue } diff --git a/frontend/src/components/ConfigureWorkflow.jsx b/frontend/src/components/ConfigureWorkflow.jsx index 95457675..5dba1179 100644 --- a/frontend/src/components/ConfigureWorkflow.jsx +++ b/frontend/src/components/ConfigureWorkflow.jsx @@ -17,6 +17,7 @@ const Workflow = (props) => { const [requiredTriggers, setRequiredTriggers] = React.useState([]) const [previousAuth, setPreviousAuth] = React.useState(appAuthentication) const [firstLoad, setFirstLoad] = React.useState("") + const [itemChanged, setItemChanged] = React.useState(false) var finished = false if (workflow === undefined || workflow === null) { @@ -216,6 +217,7 @@ const Workflow = (props) => { newWebhook(workflow.triggers[trigger.index]) saveWorkflow(workflow) + setItemChanged(true) }}> {trigger.status !== "running" ? "Start" : "Running"} @@ -232,6 +234,7 @@ const Workflow = (props) => { submitSchedule(workflow.triggers[trigger.index], trigger.index) saveWorkflow(workflow) + setItemChanged(true) }}> {trigger.status !== "running" ? "Start" : "Running"} @@ -350,6 +353,7 @@ const Workflow = (props) => { : @@ -426,8 +431,12 @@ const Workflow = (props) => { */} diff --git a/frontend/src/components/ParsedAction.jsx b/frontend/src/components/ParsedAction.jsx index b4eabc2a..c5295876 100644 --- a/frontend/src/components/ParsedAction.jsx +++ b/frontend/src/components/ParsedAction.jsx @@ -87,17 +87,21 @@ const ParsedAction = (props) => { responseJson.loop_versions = selectedApp.loop_versions } - var foundAction = responseJson.actions.find(action => action.name === selectedAction.name) + var foundAction = responseJson.actions.find(action => action.name.toLowerCase() === selectedAction.name.toLowerCase()) + console.log("FOUNDACTION: ", foundAction) if (foundAction !== null && foundAction !== undefined) { + var foundparams = [] for (var paramkey in foundAction.parameters) { const param = foundAction.parameters[paramkey] - const foundParam = selectedAction.parameters.find(item => item.name === param.name) + const foundParam = selectedAction.parameters.find(item => item.name.toLowerCase() === param.name.toLowerCase()) if (foundParam === undefined) { - //console.log("COULDNT find Param: ", param) + console.log("COULDNT find Param: ", param) } else { foundAction.parameters[paramkey] = foundParam } + + //foundparams.push(param.name) } } else { alert.error("Couldn't find action "+selectedAction.name) @@ -285,6 +289,8 @@ const ParsedAction = (props) => { "value": event.target.value, }] + console.log("IN IF: ", paramcheck) + } else { const subparamindex = paramcheck["value_replace"].findIndex(param => param.key === data.name) if (subparamindex === -1) { @@ -295,11 +301,25 @@ const ParsedAction = (props) => { } else { paramcheck["value_replace"][subparamindex]["value"] = event.target.value } + + console.log("IN ELSE: ", paramcheck) } //console.log("PARAM: ", paramcheck) - - selectedActionParameters[count]["value_replace"] = paramcheck - selectedAction.parameters[count]["value_replace"] = paramcheck + //if (paramcheck.id === undefined) { + // console.log("Normal paramcheck") + //} else { + // selectedActionParameters[count]["value_replace"] = paramcheck + // selectedAction.parameters[count]["value_replace"] = paramcheck + //} + + if (paramcheck["value_replace"] === undefined) { + selectedActionParameters[count]["value_replace"] = paramcheck + selectedAction.parameters[count]["value_replace"] = paramcheck + } else { + selectedActionParameters[count]["value_replace"] = paramcheck["value_replace"] + selectedAction.parameters[count]["value_replace"] = paramcheck["value_replace"] + } + console.log("RESULT: ", selectedAction) setSelectedAction(selectedAction) //setUpdate(Math.random()) return @@ -718,7 +738,6 @@ const ParsedAction = (props) => { value={selectedActionParameters[count].value} fullWidth onChange={(e) => { - console.log("VAL: ", e.target.value) changeActionParameter(e, count, data) setUpdate(Math.random()) }} @@ -1234,7 +1253,7 @@ const ParsedAction = (props) => { }} fullWidth onChange={(e) => { - console.log("CHOSE AN AUTHENTICATION OPTION: ", e.target.value) + //console.log("CHOSE AN AUTHENTICATION OPTION: ", e.target.value) selectedAction.selectedAuthentication = e.target.value selectedAction.authentication_id = e.target.value.id setSelectedAction(selectedAction) @@ -1243,7 +1262,7 @@ const ParsedAction = (props) => { style={{backgroundColor: theme.palette.inputColor, color: "white", height: 50, maxWidth: rightsidebarStyle.maxWidth-80,}} > {selectedAction.authentication.map(data => { - console.log("DATA: ", data) + //console.log("AUTH DATA: ", data) return( {data.label} - ({data.app.app_version}) diff --git a/frontend/src/views/AngularWorkflow.jsx b/frontend/src/views/AngularWorkflow.jsx index 5c76fd77..bc03a65b 100644 --- a/frontend/src/views/AngularWorkflow.jsx +++ b/frontend/src/views/AngularWorkflow.jsx @@ -5730,7 +5730,7 @@ const AngularWorkflow = (props) => { const timestamp = new Date(data.started_at*1000).toISOString().split('.')[0].split("T").join(" ") - var calculatedResult = data.workflow.actions.length + var calculatedResult = data.workflow.actions !== undefined && data.workflow.actions !== null ? data.workflow.actions.length : 0 for (var key in data.workflow.triggers) { const trigger = data.workflow.triggers[key] if ((trigger.app_name === "User Input" && trigger.trigger_type === "USERINPUT") || (trigger.app_name === "Shuffle Workflow" && trigger.trigger_type === "SUBFLOW")) { diff --git a/frontend/src/views/AppCreator.jsx b/frontend/src/views/AppCreator.jsx index 34149bd0..27c3c9a2 100644 --- a/frontend/src/views/AppCreator.jsx +++ b/frontend/src/views/AppCreator.jsx @@ -338,7 +338,6 @@ const AppCreator = (props) => { throw new Error("NOT 200 :O") } - //console.log("DATA: ", response.text()) return response.json() }) .then((responseJson) => { @@ -373,6 +372,7 @@ const AppCreator = (props) => { const handleGetRef = (parameter, data) => { if (parameter["$ref"] === undefined) { + console.log("$ref not found in getref: ") return parameter } @@ -530,6 +530,8 @@ const AppCreator = (props) => { "example_response": "", } + //console.log("Schema is application/json: ", methodvalue) + //console.log("DATA", data) if (methodvalue["requestBody"] !== undefined) { //console.log("Handle requestbody: ", methodvalue["requestBody"]) if (methodvalue["requestBody"]["content"] !== undefined) { @@ -541,12 +543,22 @@ const AppCreator = (props) => { tmpobject[prop] = `\$\{${prop}\}` } + //console.log("Data: ", data) for (var subkey in methodvalue["requestBody"]["content"]["application/json"]["schema"]["required"]) { const tmpitem = methodvalue["requestBody"]["content"]["application/json"]["schema"]["required"][subkey] tmpobject[tmpitem] = `\$\{${tmpitem}\}` } newaction["body"] = JSON.stringify(tmpobject, null, 2) + } else if (methodvalue["requestBody"]["content"]["application/json"]["schema"]["$ref"] !== undefined && methodvalue["requestBody"]["content"]["application/json"]["schema"]["$ref"] !== null) { + const retRef = handleGetRef(methodvalue["requestBody"]["content"]["application/json"]["schema"], data) + var newbody = {} + // Can handle default, required, description and type + for (var propkey in retRef.properties) { + const parsedkey = propkey.replaceAll(" ", "_").toLowerCase() + newbody[parsedkey] = "${"+parsedkey+"}" + } + newaction["body"] = JSON.stringify(newbody, null, 2) } } } else if (methodvalue["requestBody"]["content"]["application/xml"] !== undefined) { @@ -603,6 +615,117 @@ const AppCreator = (props) => { } } } + } else { + var selectedReturn = "" + if (methodvalue.responses["200"] !== undefined) { + selectedReturn = "200" + } else if (methodvalue.responses["201"] !== undefined) { + selectedReturn = "201" + } + + // Parsing examples. This should be standardized lol + if (methodvalue.responses[selectedReturn] !== undefined) { + const selectedExample = methodvalue.responses[selectedReturn] + if (selectedExample["content"] !== undefined) { + if (selectedExample["content"]["application/json"] !== undefined) { + if (selectedExample["content"]["application/json"]["schema"] !== undefined) { + if (selectedExample["content"]["application/json"]["schema"]["$ref"] !== undefined) { + //console.log("REF EXAMPLE: ", selectedExample["content"]["application/json"]["schema"]) + const parameter = handleGetRef(selectedExample["content"]["application/json"]["schema"], data) + //console.log("GOT REF RETURN AS EXAMPLE: ", parameter) + + if (parameter.properties !== undefined && parameter["type"] === "object") { + var newbody = {} + for (var propkey in parameter.properties) { + const parsedkey = propkey.replaceAll(" ", "_").toLowerCase() + if (parameter.properties[propkey].type === "string") { + if (parameter.properties[propkey].description !== undefined) { + newbody[parsedkey] = parameter.properties[propkey].description + } else { + newbody[parsedkey] = "" + } + } else if (parameter.properties[propkey].type.includes("int")) { + newbody[parsedkey] = 0 + } else { + console.log("CANT HANDLE TYPE ", parameter.properties[propkey].type) + newbody[parsedkey] = [] + } + } + newaction.example_response = JSON.stringify(newbody, null, 2) + } else { + console.log("CANT HANDLE PARAM: (1) ", parameter.properties) + } + } else { + // Just selecting the first one. bleh. + if (selectedExample["content"]["application/json"]["schema"]["allOf"] !== undefined) { + //console.log("ALLOF: ", selectedExample["content"]["application/json"]["schema"]["allOf"]) + //console.log("BAD EXAMPLE: (SKIP ALLOF) ", selectedExample["content"]["application/json"]["schema"]["allOf"]) + var selectedComponent = selectedExample["content"]["application/json"]["schema"]["allOf"] + if (selectedComponent.length >= 1) { + selectedComponent = selectedComponent[0] + + const parameter = handleGetRef(selectedComponent, data) + if (parameter.properties !== undefined && parameter["type"] === "object") { + var newbody = {} + for (var propkey in parameter.properties) { + const parsedkey = propkey.replaceAll(" ", "_").toLowerCase() + if (parameter.properties[propkey].type === "string") { + if (parameter.properties[propkey].description !== undefined) { + newbody[parsedkey] = parameter.properties[propkey].description + } else { + newbody[parsedkey] = "" + } + } else if (parameter.properties[propkey].type.includes("int")) { + newbody[parsedkey] = 0 + } else { + console.log("CANT HANDLE TYPE ", parameter.properties[propkey].type) + newbody[parsedkey] = [] + } + } + + newaction.example_response = JSON.stringify(newbody, null, 2) + //newaction.example_response = JSON.stringify(parameter.properties, null, 2) + } else { + //newaction.example_response = parameter.properties + console.log("CANT HANDLE PARAM: (3) ", parameter.properties) + } + } else { + + } + } else if (selectedExample["content"]["application/json"]["schema"]["properties"] !== undefined) { + if (selectedExample["content"]["application/json"]["schema"]["properties"]["data"] !== undefined) { + const parameter = handleGetRef(selectedExample["content"]["application/json"]["schema"]["properties"]["data"], data) + if (parameter.properties !== undefined && parameter["type"] === "object") { + var newbody = {} + for (var propkey in parameter.properties) { + const parsedkey = propkey.replaceAll(" ", "_").toLowerCase() + if (parameter.properties[propkey].type === "string") { + if (parameter.properties[propkey].description !== undefined) { + newbody[parsedkey] = parameter.properties[propkey].description + } else { + newbody[parsedkey] = "" + } + } else if (parameter.properties[propkey].type.includes("int")) { + newbody[parsedkey] = 0 + } else { + console.log("CANT HANDLE TYPE ", parameter.properties[propkey].type) + newbody[parsedkey] = [] + } + } + + newaction.example_response = JSON.stringify(newbody, null, 2) + //newaction.example_response = JSON.stringify(parameter.properties, null, 2) + } else { + //newaction.example_response = parameter.properties + console.log("CANT HANDLE PARAM: (2) ", parameter.properties) + } + } + } + } + } + } + } + } } } @@ -727,7 +850,6 @@ const AppCreator = (props) => { } } - console.log("INVALID9: ", data) if (securitySchemes !== undefined) { for (const [key, value] of Object.entries(securitySchemes)) { if (value.scheme === "bearer") { diff --git a/frontend/src/views/Workflows.jsx b/frontend/src/views/Workflows.jsx index 8a2c9176..ddd62883 100644 --- a/frontend/src/views/Workflows.jsx +++ b/frontend/src/views/Workflows.jsx @@ -136,6 +136,7 @@ export const validateJson = (showResult) => { const Workflows = (props) => { const { globalUrl, isLoggedIn, isLoaded, removeCookie, cookies, userdata} = props; document.title = "Shuffle - Workflows" + const referenceUrl = globalUrl+"/api/v1/hooks/" const alert = useAlert() const classes = useStyles(); @@ -544,9 +545,7 @@ const Workflows = (props) => { } } - const sanitizeWorkflow = (data) => { - data["owner"] = "" - console.log("Sanitize start: ", data) + const deduplicateIds = (data) => { if (data.triggers !== null && data.triggers !== undefined) { for (var key in data.triggers) { const trigger = data.triggers[key] @@ -561,6 +560,17 @@ const Workflows = (props) => { } const newId = uuid.v4() + if (trigger.trigger_type === "WEBHOOK") { + //"http://localhost:5002/api/v1/hooks/webhook_db179eb0-cb0c-4d2a-9c4b-53d2625a5008" + const hookname = "webhook_"+newId + if (trigger.parameters.length === 2) { + trigger.parameters[0].value = referenceUrl+"webhook_"+trigger.id + trigger.parameters[1].value = "webhook_"+trigger.id + } else { + alert.info("Something is wrong with the webhook in the copy") + } + } + for (var branchkey in data.branches) { const branch = data.branches[branchkey] if (branch.source_id === trigger.id) { @@ -626,8 +636,13 @@ const Workflows = (props) => { } } - //console.log(data) - //return + return data + } + + const sanitizeWorkflow = (data) => { + data["owner"] = "" + console.log("Sanitize start: ", data) + data = deduplicateIds(data) data["org"] = [] data["org_id"] = "" @@ -701,7 +716,8 @@ const Workflows = (props) => { alert.success("Copying workflow "+data.name) data.id = "" data.name = data.name+"_copy" - console.log("COPIED DATA: ", data) + data = deduplicateIds(data) + //console.log("COPIED DATA: ", data) //return fetch(globalUrl+"/api/v1/workflows", {