PromucFlow_constructor/app/client/src/transformers/RestActionTransformer.ts

46 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-01-12 01:22:31 +00:00
import { HTTP_METHODS } from "constants/ApiEditorConstants";
import { ApiAction } from "entities/Action";
import _ from "lodash";
2019-12-23 12:12:58 +00:00
export const transformRestAction = (data: ApiAction): ApiAction => {
2019-12-23 12:12:58 +00:00
let action = { ...data };
// GET actions should not save body
if (action.actionConfiguration.httpMethod === HTTP_METHODS[0]) {
delete action.actionConfiguration.body;
}
// Paths should not have query params
2020-01-08 09:19:00 +00:00
if (
action.actionConfiguration.queryParameters &&
action.actionConfiguration.queryParameters.length
2020-01-08 09:19:00 +00:00
) {
const path = action.actionConfiguration.path;
2019-12-23 12:12:58 +00:00
if (path && path.indexOf("?") > -1) {
action = {
...action,
2019-12-23 12:12:58 +00:00
actionConfiguration: {
...action.actionConfiguration,
2019-12-23 12:12:58 +00:00
path: path.substr(0, path.indexOf("?")),
},
};
}
}
// Body should send correct format depending on the content type
if (action.actionConfiguration.httpMethod !== HTTP_METHODS[0]) {
let body: any = "";
2021-01-12 01:22:31 +00:00
if (action.actionConfiguration.body) {
body = action.actionConfiguration.body || undefined;
2021-01-12 01:22:31 +00:00
}
if (!_.isString(body)) body = JSON.stringify(body);
action = {
...action,
actionConfiguration: {
...action.actionConfiguration,
body,
},
};
}
2019-12-23 12:12:58 +00:00
return action;
};