From bac9d79125c3e4fa749cad45d0fc578830b28d1d Mon Sep 17 00:00:00 2001 From: Jonathan Roesner Date: Wed, 29 May 2024 12:40:53 +0200 Subject: [PATCH] fix bugs: failing openapi import and bad code transformation --- client/src/utils/httpsnippet.tsx | 8 ++++++-- .../com/espero/yaade/services/OpenApiService.kt | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/client/src/utils/httpsnippet.tsx b/client/src/utils/httpsnippet.tsx index da3698a..e37dbc7 100644 --- a/client/src/utils/httpsnippet.tsx +++ b/client/src/utils/httpsnippet.tsx @@ -58,12 +58,16 @@ function generateHTTPSnippet( value: header.value, }; }); + const uri = interpolated.data.uri ?? 'https://example.com'; + const url = uri.startsWith('http') ? uri : `http://${uri}`; const opts: any = { method: interpolated.data.method ?? 'GET', - url: interpolated.data.uri ?? 'https://example.com', + url, headers: headers ?? [], - postData, }; + if (opts.method !== 'GET') { + opts.postData = postData; + } const snippet = new HTTPSnippet(opts); const res = snippet.convert(target, client); if (typeof res !== 'string') { diff --git a/server/src/main/kotlin/com/espero/yaade/services/OpenApiService.kt b/server/src/main/kotlin/com/espero/yaade/services/OpenApiService.kt index 2eafb78..8652797 100644 --- a/server/src/main/kotlin/com/espero/yaade/services/OpenApiService.kt +++ b/server/src/main/kotlin/com/espero/yaade/services/OpenApiService.kt @@ -2,14 +2,18 @@ package com.espero.yaade.services import com.espero.yaade.model.db.CollectionDb import com.espero.yaade.model.db.RequestDb +import com.espero.yaade.server.Server import io.swagger.v3.oas.models.OpenAPI import io.swagger.v3.oas.models.Operation +import io.vertx.core.impl.logging.LoggerFactory import io.vertx.core.json.JsonArray import io.vertx.core.json.JsonObject import org.openapitools.codegen.examples.ExampleGenerator object OpenApiService { + private val log = LoggerFactory.getLogger(Server::class.java) + private fun extractRequestFromOperation( path: String, basePath: String, @@ -48,10 +52,16 @@ object OpenApiService { val mediaType = mediaTypes[0] val schema = operation.requestBody.content[mediaType]?.schema - val examples = exampleGenerator.generate(null, mediaTypes, schema) - if (examples.isNotEmpty()) { - body = examples[0]["example"] + try { + val examples = exampleGenerator.generate(null, mediaTypes, schema) + if (examples.isNotEmpty()) { + body = examples[0]["example"] + } + } catch (e: Exception) { + // NOTE: we don't want to crash the whole thing if we can't generate an example + log.error("Error generating example for request body", e) } + } }