Compare commits

...

3 Commits

Author SHA1 Message Date
Nolann Biron 631cecc826 Better support for python json 2025-03-19 21:47:57 +01:00
Rodrigo Castro 0bef455a0d fix tests 2025-03-12 18:57:50 +00:00
Rodrigo Castro 9b271dd8d0 change code sample in python 2025-03-12 18:49:35 +00:00
2 changed files with 16 additions and 4 deletions
@@ -385,7 +385,7 @@ describe('python code sample generator', () => {
const output = generator?.generate(input);
expect(output).toBe(
'import requests\n\nresponse = requests.get(\n "https://example.com/path",\n headers={"Content-Type":"application/json"},\n data={"key":"value"}\n)\n\ndata = response.json()'
'import requests\n\nresponse = requests.get(\n "https://example.com/path",\n headers={"Content-Type":"application/json"},\n json={"key":"value"}\n)\n\ndata = response.json()'
);
});
@@ -419,7 +419,7 @@ describe('python code sample generator', () => {
const output = generator?.generate(input);
expect(output).toBe(
'import requests\n\nresponse = requests.get(\n "https://example.com/path",\n headers={"Content-Type":"application/graphql"},\n data="{ key }"\n)\n\ndata = response.json()'
'import requests\n\nresponse = requests.get(\n "https://example.com/path",\n headers={"Content-Type":"application/json"},\n json="{ key }"\n)\n\ndata = response.json()'
);
});
+14 -2
View File
@@ -126,9 +126,14 @@ export const codeSampleGenerators: CodeSampleGenerator[] = [
code += indent(`headers=${stringifyOpenAPI(headers)},\n`, 4);
}
const contentType = headers?.['Content-Type'] || '';
if (body) {
if (body === 'files') {
code += indent(`files=${body}\n`, 4);
} else if (contentType === 'application/json') {
// If the content type is JSON, we use json={}
code += indent(`json=${stringifyOpenAPI(body)}\n`, 4);
} else {
code += indent(`data=${stringifyOpenAPI(body)}\n`, 4);
}
@@ -326,7 +331,9 @@ const BodyGenerators = {
getPythonBody: (body: any, headers?: Record<string, string>) => {
if (!body || !headers) return;
let code = '';
const contentType: string = headers['Content-Type'] || '';
// Copy headers to avoid mutating the original object
const headersCopy = { ...headers };
const contentType: string = headersCopy['Content-Type'] || '';
if (isFormData(contentType)) {
code += 'files = {\n';
@@ -346,7 +353,12 @@ const BodyGenerators = {
body = 'files';
}
return { body, code, headers };
if (isGraphQL(contentType)) {
// Set Content-Type to application/json for GraphQL, recommended by GraphQL spec
headersCopy['Content-Type'] = 'application/json';
}
return { body, code, headers: headersCopy };
},
getHTTPBody: (body: any, headers?: Record<string, string>) => {
if (!body || !headers) return undefined;