refactor: add safety coersion for loading rest requests from external source

This commit is contained in:
Andrew Bastin
2022-01-05 16:15:06 +05:30
parent 137d562c86
commit ac979239e8
6 changed files with 73 additions and 23 deletions

View File

@@ -151,9 +151,13 @@
<script lang="ts">
import { defineComponent, ref } from "@nuxtjs/composition-api"
import { translateToNewRequest } from "@hoppscotch/data"
import {
safelyExtractRESTRequest,
translateToNewRequest,
} from "@hoppscotch/data"
import { useReadonlyStream } from "~/helpers/utils/composables"
import {
getDefaultRESTRequest,
restSaveContext$,
setRESTRequest,
setRESTSaveContext,
@@ -229,11 +233,17 @@ export default defineComponent({
},
})
else {
setRESTRequest(translateToNewRequest(this.request), {
originLocation: "user-collection",
folderPath: this.folderPath,
requestIndex: this.requestIndex,
})
setRESTRequest(
safelyExtractRESTRequest(
translateToNewRequest(this.request),
getDefaultRESTRequest()
),
{
originLocation: "user-collection",
folderPath: this.folderPath,
requestIndex: this.requestIndex,
}
)
}
},
dragStart({ dataTransfer }) {

View File

@@ -147,9 +147,13 @@
<script lang="ts">
import { defineComponent, ref } from "@nuxtjs/composition-api"
import { translateToNewRequest } from "@hoppscotch/data"
import {
safelyExtractRESTRequest,
translateToNewRequest,
} from "@hoppscotch/data"
import { useReadonlyStream } from "~/helpers/utils/composables"
import {
getDefaultRESTRequest,
restSaveContext$,
setRESTRequest,
setRESTSaveContext,
@@ -220,10 +224,16 @@ export default defineComponent({
},
})
else
setRESTRequest(translateToNewRequest(this.request), {
originLocation: "team-collection",
requestID: this.requestIndex as string,
})
setRESTRequest(
safelyExtractRESTRequest(
translateToNewRequest(this.request),
getDefaultRESTRequest()
),
{
originLocation: "team-collection",
requestID: this.requestIndex as string,
}
)
},
dragStart({ dataTransfer }) {
this.dragging = !this.dragging

View File

@@ -103,6 +103,7 @@
<script setup lang="ts">
import { computed, ref } from "@nuxtjs/composition-api"
import * as timeago from "timeago.js"
import { safelyExtractRESTRequest } from "~/../hoppscotch-data/dist"
import {
useI18n,
useReadonlyStream,
@@ -120,7 +121,7 @@ import {
RESTHistoryEntry,
GQLHistoryEntry,
} from "~/newstore/history"
import { setRESTRequest } from "~/newstore/RESTSession"
import { getDefaultRESTRequest, setRESTRequest } from "~/newstore/RESTSession"
const props = defineProps<{
page: "rest" | "graphql"
@@ -174,7 +175,10 @@ const clearHistory = () => {
}
const useHistory = (entry: any) => {
if (props.page === "rest") setRESTRequest(entry.request)
if (props.page === "rest")
setRESTRequest(
safelyExtractRESTRequest(entry.request, getDefaultRESTRequest())
)
}
const deleteBattleHistoryEntry = (entries: number[]) => {

View File

@@ -5,7 +5,10 @@ import assign from "lodash/assign"
import isEmpty from "lodash/isEmpty"
import * as O from "fp-ts/Option"
import { pipe } from "fp-ts/function"
import { translateToNewRequest } from "@hoppscotch/data"
import {
safelyExtractRESTRequest,
translateToNewRequest,
} from "@hoppscotch/data"
import { cloneDeep } from "lodash"
import {
settingsStore,
@@ -41,7 +44,11 @@ import {
selectedEnvIndex$,
setCurrentEnvironment,
} from "./environments"
import { restRequest$, setRESTRequest } from "./RESTSession"
import {
getDefaultRESTRequest,
restRequest$,
setRESTRequest,
} from "./RESTSession"
import { WSRequest$, setWSRequest } from "./WebSocketSession"
import { SIORequest$, setSIORequest } from "./SocketIOSession"
import { SSERequest$, setSSERequest } from "./SSESession"
@@ -281,7 +288,9 @@ function setupRequestPersistence() {
if (localRequest) {
const parsedLocal = translateToNewRequest(localRequest)
setRESTRequest(parsedLocal)
setRESTRequest(
safelyExtractRESTRequest(parsedLocal, getDefaultRESTRequest())
)
}
restRequest$.subscribe((req) => {

View File

@@ -127,7 +127,11 @@ import "splitpanes/dist/splitpanes.css"
import { map } from "rxjs/operators"
import { Subscription } from "rxjs"
import isEqual from "lodash/isEqual"
import { HoppRESTRequest, HoppRESTAuthOAuth2 } from "@hoppscotch/data"
import {
HoppRESTRequest,
HoppRESTAuthOAuth2,
safelyExtractRESTRequest,
} from "@hoppscotch/data"
import { useSetting } from "~/newstore/settings"
import {
restActiveParamsCount$,
@@ -138,6 +142,7 @@ import {
restAuth$,
useTestScript,
usePreRequestScript,
getDefaultRESTRequest,
} from "~/newstore/RESTSession"
import { translateExtURLParams } from "~/helpers/RESTExtURLParams"
import {
@@ -158,7 +163,12 @@ function bindRequestToURLParams() {
// If query params are empty, or contains code or error param (these are from Oauth Redirect)
// We skip URL params parsing
if (Object.keys(query).length === 0 || query.code || query.error) return
setRESTRequest(translateExtURLParams(query))
setRESTRequest(
safelyExtractRESTRequest(
translateExtURLParams(query),
getDefaultRESTRequest()
)
)
})
}
@@ -226,7 +236,9 @@ export default defineComponent({
const confirmSync = ref(false)
const syncRequest = () => {
setRESTRequest(requestForSync.value!)
setRESTRequest(
safelyExtractRESTRequest(requestForSync.value!, getDefaultRESTRequest())
)
}
setupRequestSync(confirmSync, requestForSync)

View File

@@ -63,14 +63,14 @@ import {
watch,
} from "@nuxtjs/composition-api"
import * as E from "fp-ts/Either"
import { makeRESTRequest } from "@hoppscotch/data"
import { safelyExtractRESTRequest } from "@hoppscotch/data"
import { useGQLQuery } from "~/helpers/backend/GQLClient"
import {
ResolveShortcodeDocument,
ResolveShortcodeQuery,
ResolveShortcodeQueryVariables,
} from "~/helpers/backend/graphql"
import { setRESTRequest } from "~/newstore/RESTSession"
import { getDefaultRESTRequest, setRESTRequest } from "~/newstore/RESTSession"
export default defineComponent({
setup() {
@@ -97,9 +97,14 @@ export default defineComponent({
const data = shortcodeDetails.data
if (E.isRight(data)) {
const request = JSON.parse(data.right.shortcode?.request as string)
const request: unknown = JSON.parse(
data.right.shortcode?.request as string
)
setRESTRequest(
safelyExtractRESTRequest(request, getDefaultRESTRequest())
)
setRESTRequest(makeRESTRequest(request))
router.push({ path: localePath("/") })
}
}