refactor: urlencoded key value pair system
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import * as A from "fp-ts/Array"
|
||||
import { pipe } from "fp-ts/function"
|
||||
import { pluck, distinctUntilChanged, map, filter } from "rxjs/operators"
|
||||
import { Ref } from "@nuxtjs/composition-api"
|
||||
import {
|
||||
@@ -15,6 +17,11 @@ import { HoppRESTResponse } from "~/helpers/types/HoppRESTResponse"
|
||||
import { useStream } from "~/helpers/utils/composables"
|
||||
import { HoppTestResult } from "~/helpers/types/HoppTestResult"
|
||||
import { HoppRequestSaveContext } from "~/helpers/types/HoppRequestSaveContext"
|
||||
import {
|
||||
parseRawKeyValueEntries,
|
||||
rawKeyValueEntriesToString,
|
||||
RawKeyValueEntry,
|
||||
} from "~/helpers/rawKeyValue"
|
||||
|
||||
type RESTSession = {
|
||||
request: HoppRESTRequest
|
||||
@@ -203,9 +210,30 @@ const dispatchers = defineDispatchers({
|
||||
curr: RESTSession,
|
||||
{ newContentType }: { newContentType: ValidContentTypes | null }
|
||||
) {
|
||||
// TODO: Cleaner implementation
|
||||
// TODO: persist body evenafter switching content typees
|
||||
if (curr.request.body.contentType !== "multipart/form-data") {
|
||||
if (newContentType === "multipart/form-data") {
|
||||
// Preserve entries when comping from urlencoded to multipart
|
||||
if (
|
||||
curr.request.body.contentType === "application/x-www-form-urlencoded"
|
||||
) {
|
||||
return {
|
||||
...curr.request,
|
||||
body: <HoppRESTReqBody>{
|
||||
contentType: "multipart/form-data",
|
||||
body: pipe(
|
||||
curr.request.body.body,
|
||||
parseRawKeyValueEntries,
|
||||
A.map(
|
||||
({ key, value, active }) =>
|
||||
<FormDataKeyValue>{ key, value, active, isFile: false }
|
||||
)
|
||||
),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// Going from non-formdata to form-data, discard contents and set empty array as body
|
||||
return {
|
||||
request: {
|
||||
@@ -232,6 +260,29 @@ const dispatchers = defineDispatchers({
|
||||
}
|
||||
}
|
||||
} else if (newContentType !== "multipart/form-data") {
|
||||
if (newContentType === "application/x-www-form-urlencoded") {
|
||||
return {
|
||||
request: {
|
||||
...curr.request,
|
||||
body: <HoppRESTReqBody>{
|
||||
contentType: newContentType,
|
||||
body: pipe(
|
||||
curr.request.body.body,
|
||||
A.map(
|
||||
({ key, value, isFile, active }) =>
|
||||
<RawKeyValueEntry>{
|
||||
key,
|
||||
value: isFile ? "" : value,
|
||||
active,
|
||||
}
|
||||
),
|
||||
rawKeyValueEntriesToString
|
||||
),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// Going from formdata to non-formdata, discard contents and set empty string
|
||||
return {
|
||||
request: {
|
||||
|
||||
Reference in New Issue
Block a user