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

View File

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

View File

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

View File

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

View File

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

View File

@@ -63,14 +63,14 @@ import {
watch, watch,
} from "@nuxtjs/composition-api" } from "@nuxtjs/composition-api"
import * as E from "fp-ts/Either" import * as E from "fp-ts/Either"
import { makeRESTRequest } from "@hoppscotch/data" import { safelyExtractRESTRequest } from "@hoppscotch/data"
import { useGQLQuery } from "~/helpers/backend/GQLClient" import { useGQLQuery } from "~/helpers/backend/GQLClient"
import { import {
ResolveShortcodeDocument, ResolveShortcodeDocument,
ResolveShortcodeQuery, ResolveShortcodeQuery,
ResolveShortcodeQueryVariables, ResolveShortcodeQueryVariables,
} from "~/helpers/backend/graphql" } from "~/helpers/backend/graphql"
import { setRESTRequest } from "~/newstore/RESTSession" import { getDefaultRESTRequest, setRESTRequest } from "~/newstore/RESTSession"
export default defineComponent({ export default defineComponent({
setup() { setup() {
@@ -97,9 +97,14 @@ export default defineComponent({
const data = shortcodeDetails.data const data = shortcodeDetails.data
if (E.isRight(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("/") }) router.push({ path: localePath("/") })
} }
} }