Fixed preloading of some apps

This commit is contained in:
frikky
2020-05-23 20:59:52 +02:00
parent 8fd2f9df0c
commit ccf5091fc7
4 changed files with 57 additions and 33 deletions
+5 -5
View File
@@ -366,7 +366,7 @@ func generateYaml(swagger *openapi3.Swagger, newmd5 string) (WorkflowApp, []stri
securitySchemes := swagger.Components.SecuritySchemes securitySchemes := swagger.Components.SecuritySchemes
if securitySchemes != nil { if securitySchemes != nil {
log.Printf("%#v", securitySchemes) //log.Printf("%#v", securitySchemes)
api.Authentication = Authentication{ api.Authentication = Authentication{
Required: true, Required: true,
@@ -386,7 +386,7 @@ func generateYaml(swagger *openapi3.Swagger, newmd5 string) (WorkflowApp, []stri
api.Authentication.Parameters[0].Name = securitySchemes["BearerAuth"].Value.Name api.Authentication.Parameters[0].Name = securitySchemes["BearerAuth"].Value.Name
api.Authentication.Parameters[0].In = securitySchemes["BearerAuth"].Value.In api.Authentication.Parameters[0].In = securitySchemes["BearerAuth"].Value.In
api.Authentication.Parameters[0].Scheme = securitySchemes["BearerAuth"].Value.Scheme api.Authentication.Parameters[0].Scheme = securitySchemes["BearerAuth"].Value.Scheme
log.Printf("HANDLE BEARER AUTH") //log.Printf("HANDLE BEARER AUTH")
extraParameters = append(extraParameters, WorkflowAppActionParameter{ extraParameters = append(extraParameters, WorkflowAppActionParameter{
Name: "apikey", Name: "apikey",
Description: "The apikey to use", Description: "The apikey to use",
@@ -402,7 +402,7 @@ func generateYaml(swagger *openapi3.Swagger, newmd5 string) (WorkflowApp, []stri
api.Authentication.Parameters[0].Name = securitySchemes["ApiKeyAuth"].Value.Name api.Authentication.Parameters[0].Name = securitySchemes["ApiKeyAuth"].Value.Name
api.Authentication.Parameters[0].In = securitySchemes["ApiKeyAuth"].Value.In api.Authentication.Parameters[0].In = securitySchemes["ApiKeyAuth"].Value.In
api.Authentication.Parameters[0].Scheme = securitySchemes["ApiKeyAuth"].Value.Scheme api.Authentication.Parameters[0].Scheme = securitySchemes["ApiKeyAuth"].Value.Scheme
log.Printf("HANDLE APIKEY AUTH") //log.Printf("HANDLE APIKEY AUTH")
extraParameters = append(extraParameters, WorkflowAppActionParameter{ extraParameters = append(extraParameters, WorkflowAppActionParameter{
Name: "apikey", Name: "apikey",
Description: "The apikey to use", Description: "The apikey to use",
@@ -789,11 +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 == "" { //log.Printf("TYPE: %#v", param.Value.Schema)
if param.Value.Schema == nil {
continue 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,
+11 -11
View File
@@ -5181,7 +5181,7 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
if err != nil { if err != nil {
log.Printf("Yaml error: %s", err) log.Printf("Yaml error: %s", err)
} else { } else {
log.Printf("Successfully parsed YAML!") //log.Printf("Successfully parsed YAML!")
} }
} else { } else {
isJson = true isJson = true
@@ -5193,8 +5193,8 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
} }
if strings.HasPrefix(version.Swagger, "3.") || strings.HasPrefix(version.OpenAPI, "3.") { if strings.HasPrefix(version.Swagger, "3.") || strings.HasPrefix(version.OpenAPI, "3.") {
log.Println("Handling v3 API") //log.Println("Handling v3 API")
swagger, err := openapi3.NewSwaggerLoader().LoadSwaggerFromData(body) _, err := openapi3.NewSwaggerLoader().LoadSwaggerFromData(body)
if err != nil { if err != nil {
return ParsedOpenApi{}, err return ParsedOpenApi{}, err
} }
@@ -5203,18 +5203,18 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
hasher.Write(body) hasher.Write(body)
idstring = hex.EncodeToString(hasher.Sum(nil)) idstring = hex.EncodeToString(hasher.Sum(nil))
log.Printf("Swagger v3 validation success with ID %s!", idstring) //log.Printf("Swagger v3 validation success with ID %s!", idstring)
log.Printf("Paths: %d", len(swagger.Paths)) //log.Printf("Paths: %d", len(swagger.Paths))
if !isJson { if !isJson {
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)
} }
//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.") {
// Convert // Convert
log.Println("Handling v2 API") //log.Println("Handling v2 API")
var swagger openapi2.Swagger var swagger openapi2.Swagger
//log.Println(string(body)) //log.Println(string(body))
err = json.Unmarshal(body, &swagger) err = json.Unmarshal(body, &swagger)
@@ -5225,7 +5225,7 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
log.Printf("Yaml error: %s", err) log.Printf("Yaml error: %s", err)
return ParsedOpenApi{}, err return ParsedOpenApi{}, err
} else { } else {
log.Printf("Valid yaml!") //log.Printf("Valid yaml!")
} }
} }
@@ -5246,9 +5246,9 @@ func handleSwaggerValidation(body []byte) (ParsedOpenApi, error) {
hasher.Write(swaggerdata) hasher.Write(swaggerdata)
idstring = hex.EncodeToString(hasher.Sum(nil)) idstring = hex.EncodeToString(hasher.Sum(nil))
if !isJson { if !isJson {
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("Swagger v2 -> v3 validation success with ID %s!", idstring) //log.Printf("Swagger v2 -> v3 validation success with ID %s!", idstring)
ctx := context.Background() ctx := context.Background()
err = setOpenApiDatastore(ctx, idstring, parsed) err = setOpenApiDatastore(ctx, idstring, parsed)
@@ -5544,7 +5544,7 @@ func verifySwagger(resp http.ResponseWriter, request *http.Request) {
return return
} }
log.Printf("Should generate yaml") //log.Printf("Should generate yaml")
api, pythonfunctions, err := generateYaml(swagger, newmd5) api, pythonfunctions, err := generateYaml(swagger, newmd5)
if err != nil { if err != nil {
log.Printf("Failed building and generating yaml: %s", err) log.Printf("Failed building and generating yaml: %s", err)
+39 -15
View File
@@ -2959,7 +2959,6 @@ 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))
ctx := context.Background() ctx := context.Background()
workflowapps, err := getAllWorkflowApps(ctx) workflowapps, err := getAllWorkflowApps(ctx)
if err != nil { if err != nil {
@@ -2978,7 +2977,7 @@ func getSpecificApps(resp http.ResponseWriter, request *http.Request) {
appName := strings.ToLower(app.Name) appName := strings.ToLower(app.Name)
appDesc := strings.ToLower(app.Description) appDesc := strings.ToLower(app.Description)
if strings.Contains(appName, search) || strings.Contains(appDesc, search) { 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)) //log.Printf("Name: %s, Generated: %s, Activated: %s", app.Name, strconv.FormatBool(app.Generated), strconv.FormatBool(app.Activated))
returnValues = append(returnValues, app) returnValues = append(returnValues, app)
} }
} }
@@ -2992,7 +2991,6 @@ func getSpecificApps(resp http.ResponseWriter, request *http.Request) {
} }
returnData := fmt.Sprintf(`{"success": true, "reason": %s}`, string(newbody)) returnData := fmt.Sprintf(`{"success": true, "reason": %s}`, string(newbody))
log.Printf("Return: %s", returnData)
resp.WriteHeader(200) resp.WriteHeader(200)
resp.Write([]byte(returnData)) resp.Write([]byte(returnData))
} }
@@ -3293,6 +3291,13 @@ func loadSpecificApps(resp http.ResponseWriter, request *http.Request) {
} }
func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string, onlyname string) error { func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string, onlyname string) error {
ctx := context.Background()
workflowapps, err := getAllWorkflowApps(ctx)
appCounter := 0
if err != nil {
log.Printf("Failed to get existing generated apps")
}
for _, file := range dir { for _, file := range dir {
if len(onlyname) > 0 && file.Name() != onlyname { if len(onlyname) > 0 && file.Name() != onlyname {
continue continue
@@ -3317,7 +3322,8 @@ 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) appCounter += 1
//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())
@@ -3347,7 +3353,7 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
//log.Printf("%s", string(readFile)) //log.Printf("%s", string(readFile))
swagger, err := openapi3.NewSwaggerLoader().LoadSwaggerFromData([]byte(parsedOpenApi.Body)) swagger, err := openapi3.NewSwaggerLoader().LoadSwaggerFromData([]byte(parsedOpenApi.Body))
if err != nil { if err != nil {
log.Printf("Swagger validation error in loop: %s", err) log.Printf("Swagger validation error in loop (%s): %s", filename, err)
continue continue
} }
@@ -3355,10 +3361,10 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
strings.Replace(swagger.Info.Title, " ", "", -1) strings.Replace(swagger.Info.Title, " ", "", -1)
} }
log.Printf("Should generate yaml") //log.Printf("Should generate yaml")
api, _, 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): %s", filename, err)
continue continue
} }
@@ -3369,20 +3375,38 @@ func iterateOpenApiGithub(fs billy.Filesystem, dir []os.FileInfo, extra string,
api.Generated = true api.Generated = true
api.Activated = false api.Activated = false
ctx := context.Background() found := false
err = setWorkflowAppDatastore(ctx, api, api.ID) for _, app := range workflowapps {
if err != nil { if app.ID == api.ID {
log.Printf("Failed setting workflowapp in loop: %s", err) found = true
continue break
} else { } else if app.Name == api.Name && app.AppVersion == api.AppVersion {
log.Printf("Added %s:%s to the database from OpenAPI repo", api.Name, api.AppVersion) found = true
break
}
} }
return nil if !found {
err = setWorkflowAppDatastore(ctx, api, api.ID)
if err != nil {
log.Printf("Failed setting workflowapp in loop: %s", err)
continue
} else {
log.Printf("Added %s:%s to the database from OpenAPI repo", api.Name, api.AppVersion)
}
} else {
//log.Printf("Skipped upload of %s (%s)", api.Name, api.ID)
}
//return nil
} }
} }
} }
if appCounter > 0 {
log.Printf("Preloaded %d OpenApi apps in %s!", appCounter, extra)
}
return nil return nil
} }
+2 -2
View File
@@ -186,7 +186,7 @@ const Apps = (props) => {
} }
var imageline = data.large_image.length === 0 ? var imageline = data.large_image.length === 0 ?
<img alt="Image missing" style={{width: 100, height: 100}} /> <img alt={data.title} style={{width: 100, height: 100}} />
: :
<img alt={data.title} src={data.large_image} style={{width: 100, height: 100, maxWidth: "100%"}} /> <img alt={data.title} src={data.large_image} style={{width: 100, height: 100, maxWidth: "100%"}} />
@@ -356,7 +356,7 @@ const Apps = (props) => {
</Select> </Select>
</div> </div>
{selectedAction.parameters !== undefined ? {selectedAction.parameters !== undefined && selectedAction.parameters !== null ?
<div style={{marginTop: 15, marginBottom: 15}}> <div style={{marginTop: 15, marginBottom: 15}}>
<b>Arguments</b> <b>Arguments</b>
{selectedAction.parameters.map(data => { {selectedAction.parameters.map(data => {