Initial backend app search engine finished
This commit is contained in:
@@ -773,8 +773,6 @@ func handleGet(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor
|
|||||||
Parameters: extraParameters,
|
Parameters: extraParameters,
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("FUNCTION: %#v", action)
|
|
||||||
|
|
||||||
action.Returns.Schema.Type = "string"
|
action.Returns.Schema.Type = "string"
|
||||||
baseUrl := fmt.Sprintf("%s%s", api.Link, actualPath)
|
baseUrl := fmt.Sprintf("%s%s", api.Link, actualPath)
|
||||||
|
|
||||||
@@ -791,6 +789,11 @@ func handleGet(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []Wor
|
|||||||
optionalParameters := []WorkflowAppActionParameter{}
|
optionalParameters := []WorkflowAppActionParameter{}
|
||||||
if len(path.Get.Parameters) > 0 {
|
if len(path.Get.Parameters) > 0 {
|
||||||
for _, param := range path.Get.Parameters {
|
for _, param := range path.Get.Parameters {
|
||||||
|
if param.Value.Schema.Ref == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("TYPE: %#v", param.Value.Schema)
|
||||||
curParam := WorkflowAppActionParameter{
|
curParam := WorkflowAppActionParameter{
|
||||||
Name: param.Value.Name,
|
Name: param.Value.Name,
|
||||||
Description: param.Value.Description,
|
Description: param.Value.Description,
|
||||||
@@ -1013,7 +1016,7 @@ func handleDelete(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []
|
|||||||
|
|
||||||
func handlePost(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, firstQuery bool) (WorkflowAppAction, string) {
|
func handlePost(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, firstQuery bool) (WorkflowAppAction, string) {
|
||||||
// What to do with this, hmm
|
// What to do with this, hmm
|
||||||
log.Printf("PATH: %s", actualPath)
|
//log.Printf("PATH: %s", actualPath)
|
||||||
functionName := fixFunctionName(path.Post.Summary, actualPath)
|
functionName := fixFunctionName(path.Post.Summary, actualPath)
|
||||||
|
|
||||||
action := WorkflowAppAction{
|
action := WorkflowAppAction{
|
||||||
|
|||||||
@@ -5210,8 +5210,6 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
|
|||||||
log.Printf("FIXME: NEED TO TRANSFORM FROM YAML TO JSON for %s", idstring)
|
log.Printf("FIXME: NEED TO TRANSFORM FROM YAML TO JSON for %s", idstring)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Body: %s", string(swaggerdata))
|
|
||||||
|
|
||||||
//return nil
|
//return nil
|
||||||
//return ParsedOpenApi{}, err
|
//return ParsedOpenApi{}, err
|
||||||
} else { //strings.HasPrefix(version.Swagger, "2.") || strings.HasPrefix(version.OpenAPI, "2.") {
|
} else { //strings.HasPrefix(version.Swagger, "2.") || strings.HasPrefix(version.OpenAPI, "2.") {
|
||||||
@@ -5261,7 +5259,6 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Down here?")
|
|
||||||
if len(swaggerdata) > 0 {
|
if len(swaggerdata) > 0 {
|
||||||
body = swaggerdata
|
body = swaggerdata
|
||||||
}
|
}
|
||||||
|
|||||||
+49
-27
@@ -86,10 +86,11 @@ type WorkflowApp struct {
|
|||||||
Downloaded bool `json:"downloaded" yaml:"downloaded" required:false datastore:"downloaded"`
|
Downloaded bool `json:"downloaded" yaml:"downloaded" required:false datastore:"downloaded"`
|
||||||
Sharing bool `json:"sharing" yaml:"sharing" required:false datastore:"sharing"`
|
Sharing bool `json:"sharing" yaml:"sharing" required:false datastore:"sharing"`
|
||||||
Verified bool `json:"verified" yaml:"verified" required:false datastore:"verified"`
|
Verified bool `json:"verified" yaml:"verified" required:false datastore:"verified"`
|
||||||
|
Activated bool `json:"activated" yaml:"activated" required:false datastore:"activated"`
|
||||||
Tested bool `json:"tested" yaml:"tested" required:false datastore:"tested"`
|
Tested bool `json:"tested" yaml:"tested" required:false datastore:"tested"`
|
||||||
Owner string `json:"owner" datastore:"owner" yaml:"owner"`
|
Owner string `json:"owner" datastore:"owner" yaml:"owner"`
|
||||||
PrivateID string `json:"private_id" yaml:"private_id" required:false datastore:"private_id"`
|
PrivateID string `json:"private_id" yaml:"private_id" required:false datastore:"private_id"`
|
||||||
Description string `json:"description" datastore:"description" required:false yaml:"description"`
|
Description string `json:"description" datastore:"description,noindex" required:false yaml:"description"`
|
||||||
Environment string `json:"environment" datastore:"environment" required:true yaml:"environment"`
|
Environment string `json:"environment" datastore:"environment" required:true yaml:"environment"`
|
||||||
SmallImage string `json:"small_image" datastore:"small_image,noindex" required:false yaml:"small_image"`
|
SmallImage string `json:"small_image" datastore:"small_image,noindex" required:false yaml:"small_image"`
|
||||||
LargeImage string `json:"large_image" datastore:"large_image,noindex" yaml:"large_image" required:false`
|
LargeImage string `json:"large_image" datastore:"large_image,noindex" yaml:"large_image" required:false`
|
||||||
@@ -2918,6 +2919,7 @@ func handleGetfile(resp http.ResponseWriter, request *http.Request) ([]byte, err
|
|||||||
return buf.Bytes(), nil
|
return buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Basically a search for apps that aren't activated yet
|
||||||
func getSpecificApps(resp http.ResponseWriter, request *http.Request) {
|
func getSpecificApps(resp http.ResponseWriter, request *http.Request) {
|
||||||
cors := handleCors(resp, request)
|
cors := handleCors(resp, request)
|
||||||
if cors {
|
if cors {
|
||||||
@@ -2958,9 +2960,41 @@ func getSpecificApps(resp http.ResponseWriter, request *http.Request) {
|
|||||||
// FIXME - continue the search here with github repos etc.
|
// FIXME - continue the search here with github repos etc.
|
||||||
// Caching might be smart :D
|
// Caching might be smart :D
|
||||||
log.Printf("Body: %s", string(body))
|
log.Printf("Body: %s", string(body))
|
||||||
|
ctx := context.Background()
|
||||||
|
workflowapps, err := getAllWorkflowApps(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error: Failed getting workflowapps: %s", err)
|
||||||
|
resp.WriteHeader(401)
|
||||||
|
resp.Write([]byte(`{"success": false}`))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
returnValues := []WorkflowApp{}
|
||||||
|
search := strings.ToLower(tmpBody.Search)
|
||||||
|
for _, app := range workflowapps {
|
||||||
|
if !app.Activated && app.Generated {
|
||||||
|
// This might be heavy with A LOT
|
||||||
|
// Not too worried with todays tech tbh..
|
||||||
|
appName := strings.ToLower(app.Name)
|
||||||
|
appDesc := strings.ToLower(app.Description)
|
||||||
|
if strings.Contains(appName, search) || strings.Contains(appDesc, search) {
|
||||||
|
log.Printf("Name: %s, Generated: %s, Activated: %s", app.Name, strconv.FormatBool(app.Generated), strconv.FormatBool(app.Activated))
|
||||||
|
returnValues = append(returnValues, app)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newbody, err := json.Marshal(returnValues)
|
||||||
|
if err != nil {
|
||||||
|
resp.WriteHeader(401)
|
||||||
|
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Failed unpacking workflow executions"}`)))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
returnData := fmt.Sprintf(`{"success": true, "reason": %s}`, string(newbody))
|
||||||
|
log.Printf("Return: %s", returnData)
|
||||||
resp.WriteHeader(200)
|
resp.WriteHeader(200)
|
||||||
resp.Write([]byte(fmt.Sprintf(`{"success": true}`)))
|
resp.Write([]byte(returnData))
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateAppInput(resp http.ResponseWriter, request *http.Request) {
|
func validateAppInput(resp http.ResponseWriter, request *http.Request) {
|
||||||
@@ -3283,6 +3317,7 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
|
|||||||
// Check the file
|
// Check the file
|
||||||
filename := file.Name()
|
filename := file.Name()
|
||||||
if strings.Contains(filename, "yaml") || strings.Contains(filename, "yml") {
|
if strings.Contains(filename, "yaml") || strings.Contains(filename, "yml") {
|
||||||
|
log.Printf("File: %s", filename)
|
||||||
//log.Printf("Found file: %s", filename)
|
//log.Printf("Found file: %s", filename)
|
||||||
tmpExtra := fmt.Sprintf("%s%s/", extra, file.Name())
|
tmpExtra := fmt.Sprintf("%s%s/", extra, file.Name())
|
||||||
|
|
||||||
@@ -3304,8 +3339,6 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("%#v", parsedOpenApi)
|
|
||||||
|
|
||||||
// 2. With parsedOpenApi.ID:
|
// 2. With parsedOpenApi.ID:
|
||||||
//http://localhost:3000/apps/new?id=06b1376f77b0563a3b1747a3a1253e88
|
//http://localhost:3000/apps/new?id=06b1376f77b0563a3b1747a3a1253e88
|
||||||
|
|
||||||
@@ -3322,14 +3355,8 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
|
|||||||
strings.Replace(swagger.Info.Title, " ", "", -1)
|
strings.Replace(swagger.Info.Title, " ", "", -1)
|
||||||
}
|
}
|
||||||
|
|
||||||
basePath, err := buildStructure(swagger, parsedOpenApi.ID)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Failed to build base structure in loop: %s", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("Should generate yaml")
|
log.Printf("Should generate yaml")
|
||||||
api, pythonfunctions, err := generateYaml(swagger, parsedOpenApi.ID)
|
api, _, err := generateYaml(swagger, parsedOpenApi.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed building and generating yaml in loop: %s", err)
|
log.Printf("Failed building and generating yaml in loop: %s", err)
|
||||||
continue
|
continue
|
||||||
@@ -3337,26 +3364,20 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
|
|||||||
|
|
||||||
// FIXME: Configure user?
|
// FIXME: Configure user?
|
||||||
api.Owner = ""
|
api.Owner = ""
|
||||||
err = dumpApi(basePath, api)
|
api.ID = parsedOpenApi.ID
|
||||||
|
api.IsValid = true
|
||||||
|
api.Generated = true
|
||||||
|
api.Activated = false
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
err = setWorkflowAppDatastore(ctx, api, api.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed dumping yaml in loop: %s", err)
|
log.Printf("Failed setting workflowapp in loop: %s", err)
|
||||||
continue
|
continue
|
||||||
|
} else {
|
||||||
|
log.Printf("Added %s:%s to the database from OpenAPI repo", api.Name, api.AppVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Should this continue on activation?
|
|
||||||
|
|
||||||
identifier := fmt.Sprintf("%s-%s", swagger.Info.Title, parsedOpenApi.ID)
|
|
||||||
classname := strings.Replace(identifier, " ", "", -1)
|
|
||||||
classname = strings.Replace(classname, "-", "", -1)
|
|
||||||
parsedCode, err := dumpPython(basePath, classname, swagger.Info.Version, pythonfunctions)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Failed dumping python in loop: %s", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
identifier = strings.Replace(identifier, " ", "-", -1)
|
|
||||||
identifier = strings.Replace(identifier, "_", "-", -1)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3583,6 +3604,7 @@ func setNewWorkflowApp(resp http.ResponseWriter, request *http.Request) {
|
|||||||
workflowapp.ID = uuid.NewV4().String()
|
workflowapp.ID = uuid.NewV4().String()
|
||||||
workflowapp.IsValid = true
|
workflowapp.IsValid = true
|
||||||
workflowapp.Generated = false
|
workflowapp.Generated = false
|
||||||
|
workflowapp.Activated = true
|
||||||
|
|
||||||
err = setWorkflowAppDatastore(ctx, workflowapp, workflowapp.ID)
|
err = setWorkflowAppDatastore(ctx, workflowapp, workflowapp.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -652,6 +652,11 @@ const Apps = (props) => {
|
|||||||
})
|
})
|
||||||
.then((responseJson) => {
|
.then((responseJson) => {
|
||||||
console.log(responseJson)
|
console.log(responseJson)
|
||||||
|
if (responseJson.success) {
|
||||||
|
if (responseJson.reason !== undefined && responseJson.reason.length > 0) {
|
||||||
|
setFilteredApps(responseJson.reason)
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
alert.error(error.toString())
|
alert.error(error.toString())
|
||||||
|
|||||||
Reference in New Issue
Block a user