refactor: init new state for body

This commit is contained in:
liyasthomas
2021-07-23 00:07:39 +05:30
parent 8597c04ff1
commit f694f1ad36
14 changed files with 336 additions and 166 deletions

View File

@@ -1,3 +1,5 @@
import { ValidContentTypes } from "../utils/contenttypes"
export const RESTReqSchemaVersion = "1"
export type HoppRESTParam = {
@@ -12,6 +14,12 @@ export type HoppRESTHeader = {
active: boolean
}
export type HoppRESTReqBody = {
contentType: ValidContentTypes
body: string
isRaw: boolean
}
export interface HoppRESTRequest {
v: string
@@ -21,6 +29,8 @@ export interface HoppRESTRequest {
headers: HoppRESTHeader[]
preRequestScript: string
testScript: string
body: HoppRESTReqBody
}
export function makeRESTRequest(
@@ -36,6 +46,22 @@ export function isHoppRESTRequest(x: any): x is HoppRESTRequest {
return x && typeof x === "object" && "v" in x
}
function parseRequestBody(x: any): HoppRESTReqBody {
if (x.contentType === "application/json") {
return {
contentType: "application/json",
body: x.rawParams,
isRaw: x.rawInput,
}
}
return {
contentType: "application/json",
body: "",
isRaw: x.rawInput,
}
}
export function translateToNewRequest(x: any): HoppRESTRequest {
if (isHoppRESTRequest(x)) {
return x
@@ -59,6 +85,8 @@ export function translateToNewRequest(x: any): HoppRESTRequest {
const preRequestScript = x.preRequestScript
const testScript = x.testScript
const body = parseRequestBody(x)
const result: HoppRESTRequest = {
endpoint,
headers,
@@ -66,6 +94,7 @@ export function translateToNewRequest(x: any): HoppRESTRequest {
method,
preRequestScript,
testScript,
body,
v: RESTReqSchemaVersion,
}

View File

@@ -4,6 +4,7 @@ import {
readonly,
Ref,
ref,
watch,
} from "@nuxtjs/composition-api"
import { Observable, Subscription } from "rxjs"
@@ -58,3 +59,28 @@ export function useStream<T>(
}
})
}
export function pluckRef<T, K extends keyof T>(ref: Ref<T>, key: K): Ref<T[K]> {
return customRef((track, trigger) => {
const stopWatching = watch(ref, (newVal, oldVal) => {
if (newVal[key] !== oldVal[key]) {
trigger()
}
})
onBeforeUnmount(() => {
stopWatching()
})
return {
get() {
track()
return ref.value[key]
},
set(value: T[K]) {
trigger()
ref.value = Object.assign(ref.value, { [key]: value })
},
}
})
}

View File

@@ -1,15 +0,0 @@
export const knownContentTypes = [
"application/json",
"application/ld+json",
"application/hal+json",
"application/vnd.api+json",
"application/xml",
"application/x-www-form-urlencoded",
"multipart/form-data",
"text/html",
"text/plain",
]
export function isJSONContentType(contentType) {
return /\bjson\b/i.test(contentType)
}

View File

@@ -0,0 +1,13 @@
export const knownContentTypes = {
"application/json": "json",
"application/ld+json": "json",
"application/hal+json": "json",
"application/vnd.api+json": "json",
"application/xml": "xml",
"application/x-www-form-urlencoded": "multipart",
"multipart/form-data": "multipart",
"text/html": "html",
"text/plain": "plain",
}
export type ValidContentTypes = keyof typeof knownContentTypes