Skip to content

Commit 589a6a5

Browse files
committed
Empty post body fix
1 parent fc6ae04 commit 589a6a5

5 files changed

Lines changed: 28 additions & 5 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@povio/openapi-codegen-cli",
3-
"version": "0.15.3",
3+
"version": "0.15.4",
44
"main": "./dist/index.js",
55
"bin": {
66
"openapi-codegen": "./dist/sh.js"

src/generators/templates/endpoints.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ export const {{endpointName endpoint}} = ({{{genEndpointParams endpoint}}}{{#if
3232
{{#with (endpointBody endpoint) as | endpointBody |}}
3333
{{#if endpointBody}}{{#if ../../generateParse}}{{{genEndpointParamParse endpointBody endpointBody.name}}}{{else}}{{endpointBody.name}}{{/if}}, {{/if}}
3434
{{/with}}
35+
{{#if (hasUndefinedEndpointBody endpoint)}} undefined,
3536
{{! Config }}
36-
{{{genEndpointConfig endpoint}}}
37+
{{/if}}{{{genEndpointConfig endpoint}}}
3738
)
3839
};
3940

src/generators/utils/generate/generate.endpoints.utils.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ export function getImportedEndpointName(endpoint: Endpoint, options: GenerateOpt
2525
return `${namespacePrefix}${getEndpointName(endpoint)}`;
2626
}
2727

28+
export const requiresBody = (endpoint: Endpoint) => endpoint.method !== OpenAPIV3.HttpMethods.GET;
29+
30+
export const getEndpointBody = (endpoint: Endpoint) => endpoint.parameters.find((param) => param.type === "Body");
31+
32+
export const hasEndpointConfig = (endpoint: Endpoint, resolver: SchemaResolver) => {
33+
const endpointConfig = getEndpointConfig(endpoint);
34+
const hasAxiosRequestConfig = resolver.options.axiosRequestConfig;
35+
return Object.keys(endpointConfig).length > 0 || hasAxiosRequestConfig;
36+
};
37+
2838
export const getEndpointPath = (endpoint: Endpoint) => endpoint.path.replace(/:([a-zA-Z0-9_]+)/g, "${$1}");
2939

3040
export function getEndpointTag(endpoint: Endpoint, options: GenerateOptions) {

src/generators/utils/hbs/hbs.endpoints.utils.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { SchemaResolver } from "src/generators/core/SchemaResolver.class";
44
import { Endpoint } from "src/generators/types/endpoint";
55
import { GenerateOptions } from "src/generators/types/options";
66
import {
7+
getEndpointBody,
78
getEndpointName,
89
getEndpointPath,
910
getImportedEndpointName,
@@ -48,9 +49,7 @@ function registerEndpointPathHelper() {
4849
}
4950

5051
function registerEndpointBodyHelper() {
51-
Handlebars.registerHelper(EndpointsHelpers.EndpointBody, (endpoint: Endpoint) =>
52-
endpoint.parameters.find((params) => params.type === "Body"),
53-
);
52+
Handlebars.registerHelper(EndpointsHelpers.EndpointBody, getEndpointBody);
5453
}
5554

5655
function registerEndpointParamsHelper(resolver: SchemaResolver) {

src/generators/utils/hbs/hbs.partials.utils.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@ import { Endpoint, EndpointParameter } from "src/generators/types/endpoint";
99
import { GenerateZodSchemaData, Import } from "src/generators/types/generate";
1010
import { getAbilityConditionsTypes, hasAbilityConditions } from "src/generators/utils/generate/generate.acl.utils";
1111
import {
12+
getEndpointBody,
1213
getEndpointConfig,
1314
getUpdateQueryEndpoints,
15+
hasEndpointConfig,
1416
mapEndpointParamsToFunctionParams,
17+
requiresBody,
1518
} from "src/generators/utils/generate/generate.endpoints.utils";
1619
import { getHbsPartialTemplateDelegate } from "src/generators/utils/hbs/hbs-template.utils";
1720
import { getDestructuredVariables, isInfiniteQuery, isMutation, isQuery } from "src/generators/utils/query.utils";
@@ -21,6 +24,7 @@ enum PartialsHelpers {
2124
ModelJsDocs = "genModelJsDocs",
2225
Import = "genImport",
2326
EndpointParams = "genEndpointParams",
27+
HasUndefinedEndpointBody = "hasUndefinedEndpointBody",
2428
EndpointConfig = "genEndpointConfig",
2529
EndpointParamParse = "genEndpointParamParse",
2630
QueryKeys = "genQueryKeys",
@@ -38,6 +42,7 @@ export function registerPartialsHbsHelpers(resolver: SchemaResolver) {
3842
registerGenerateModelJsDocsHelper();
3943
registerImportHelper();
4044
registerGenerateEndpointParamsHelper();
45+
registerHasUndefinedEndpointBodyHelper(resolver);
4146
registerGenerateEndpointConfigHelper(resolver);
4247
registerGenerateEndpointParamParseHelper();
4348
registerGenerateQueryKeysHelper(resolver);
@@ -73,6 +78,14 @@ function registerGenerateEndpointParamsHelper() {
7378
);
7479
}
7580

81+
function registerHasUndefinedEndpointBodyHelper(resolver: SchemaResolver) {
82+
Handlebars.registerHelper(
83+
PartialsHelpers.HasUndefinedEndpointBody,
84+
(endpoint: Endpoint) =>
85+
requiresBody(endpoint) && !getEndpointBody(endpoint) && hasEndpointConfig(endpoint, resolver),
86+
);
87+
}
88+
7689
function registerGenerateEndpointConfigHelper(resolver: SchemaResolver) {
7790
Handlebars.registerHelper(PartialsHelpers.EndpointConfig, (endpoint: Endpoint) => {
7891
const endpointConfig = getEndpointConfig(endpoint);

0 commit comments

Comments
 (0)