diff --git a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/UrlImport.vue b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/UrlImport.vue
index 076b08cd..920a9cdd 100644
--- a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/UrlImport.vue
+++ b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/UrlImport.vue
@@ -23,9 +23,10 @@
@@ -49,7 +50,7 @@ import { KernelInterceptorService } from "~/services/kernel-interceptor.service"
import { useService } from "dioc/vue"
import * as E from "fp-ts/Either"
import * as O from "fp-ts/Option"
-import { parseBodyAsJSON } from "~/helpers/functional/json"
+import { parseBodyAsJSONOrYAML } from "~/helpers/functional/json"
const interceptorService = useService(KernelInterceptorService)
@@ -98,7 +99,7 @@ const urlFetchLogic =
return E.left("REQUEST_FAILED")
}
- const responsePayload = parseBodyAsJSON(res.right.body)
+ const responsePayload = parseBodyAsJSONOrYAML(res.right.body)
if (O.isSome(responsePayload)) {
// stringify the response payload
diff --git a/packages/hoppscotch-common/src/helpers/functional/json.ts b/packages/hoppscotch-common/src/helpers/functional/json.ts
index bf4b3f32..7ee7af59 100644
--- a/packages/hoppscotch-common/src/helpers/functional/json.ts
+++ b/packages/hoppscotch-common/src/helpers/functional/json.ts
@@ -5,6 +5,7 @@ import { pipe, flow } from "fp-ts/function"
import { MediaType, RelayResponseBody } from "@hoppscotch/kernel"
import { decodeToString } from "~/helpers/functional/parse"
+import { safeParseJSONOrYAML } from "./yaml"
type SafeParseJSON = {
(str: string, convertToArray: true): O.Option>
@@ -49,3 +50,18 @@ export const parseBodyAsJSON = (body: RelayResponseBody): O.Option =>
O.filter((type) => type.includes(MediaType.APPLICATION_JSON)),
O.chain(() => parseBytesToJSON(body.body))
)
+
+/**
+ * Parses response body as JSON or YAML content
+ * @param body Response body from RelayResponse
+ * @returns Option containing parsed data or none if parsing fails
+ */
+export const parseBodyAsJSONOrYAML = (
+ body: RelayResponseBody
+): O.Option =>
+ pipe(
+ body.body,
+ decodeToString,
+ E.fold(() => O.none, safeParseJSONOrYAML),
+ O.map((data) => data as T)
+ )