refactor: init new state for body
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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 })
|
||||
},
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
13
helpers/utils/contenttypes.ts
Normal file
13
helpers/utils/contenttypes.ts
Normal 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
|
||||
Reference in New Issue
Block a user