Skip to content

Commit b5d3fa7

Browse files
committed
support blob type
1 parent bb81ea0 commit b5d3fa7

File tree

12 files changed

+22
-7
lines changed

12 files changed

+22
-7
lines changed

src/templates/core/ApiRequestOptions.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type ApiRequestOptions = {
1010
readonly formData?: Record<string, any>;
1111
readonly body?: any;
1212
readonly mediaType?: string;
13+
readonly responseType?: 'blob';
1314
readonly responseHeader?: string;
1415
readonly errors?: Record<number, string>;
1516
};

src/templates/core/angular/sendRequest.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ export const sendRequest = <T>(
77
formData: FormData | undefined,
88
headers: HttpHeaders
99
): Observable<HttpResponse<T>> => {
10-
return http.request<T>(options.method, url, {
10+
return http.request(options.method, url, {
1111
headers,
1212
body: body ?? formData,
1313
withCredentials: config.WITH_CREDENTIALS,
1414
observe: 'response',
15+
responseType: options.responseType,
1516
});
1617
};

src/templates/core/axios/sendRequest.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const sendRequest = async <T>(
1616
data: body ?? formData,
1717
method: options.method,
1818
withCredentials: config.WITH_CREDENTIALS,
19+
responseType: options.responseType,
1920
cancelToken: source.token,
2021
};
2122

src/templates/core/fetch/getResponseBody.hbs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const getResponseBody = async (response: Response): Promise<any> => {
1+
export const getResponseBody = async (response: Response, options: ApiRequestOptions): Promise<any> => {
22
if (response.status !== 204) {
33
try {
44
const contentType = response.headers.get('Content-Type');
@@ -7,6 +7,8 @@ export const getResponseBody = async (response: Response): Promise<any> => {
77
const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));
88
if (isJSON) {
99
return await response.json();
10+
} else if (options.responseType === 'blob') {
11+
return await response.blob();
1012
} else {
1113
return await response.text();
1214
}

src/templates/core/fetch/request.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
7272

7373
if (!onCancel.isCancelled) {
7474
const response = await sendRequest(config, options, url, body, formData, headers, onCancel);
75-
const responseBody = await getResponseBody(response);
75+
const responseBody = await getResponseBody(response, options);
7676
const responseHeader = getResponseHeader(response, options.responseHeader);
7777

7878
const result: ApiResult = {

src/templates/core/node/getResponseBody.hbs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const getResponseBody = async (response: Response): Promise<any> => {
1+
export const getResponseBody = async (response: Response, options: ApiRequestOptions): Promise<any> => {
22
if (response.status !== 204) {
33
try {
44
const contentType = response.headers.get('Content-Type');
@@ -7,6 +7,8 @@ export const getResponseBody = async (response: Response): Promise<any> => {
77
const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));
88
if (isJSON) {
99
return await response.json();
10+
} else if (options.responseType === 'blob') {
11+
return await response.blob();
1012
} else {
1113
return await response.text();
1214
}

src/templates/core/node/request.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
7777

7878
if (!onCancel.isCancelled) {
7979
const response = await sendRequest(options, url, body, formData, headers, onCancel);
80-
const responseBody = await getResponseBody(response);
80+
const responseBody = await getResponseBody(response, options);
8181
const responseHeader = getResponseHeader(response, options.responseHeader);
8282

8383
const result: ApiResult = {

src/templates/core/xhr/getResponseBody.hbs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const getResponseBody = (xhr: XMLHttpRequest): any => {
1+
export const getResponseBody = (xhr: XMLHttpRequest, options: ApiRequestOptions): any => {
22
if (xhr.status !== 204) {
33
try {
44
const contentType = xhr.getResponseHeader('Content-Type');
@@ -7,6 +7,8 @@ export const getResponseBody = (xhr: XMLHttpRequest): any => {
77
const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));
88
if (isJSON) {
99
return JSON.parse(xhr.responseText);
10+
} else if (options.responseType === 'blob') {
11+
return xhr.response;
1012
} else {
1113
return xhr.responseText;
1214
}

src/templates/core/xhr/request.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
7575

7676
if (!onCancel.isCancelled) {
7777
const response = await sendRequest(config, options, url, body, formData, headers, onCancel);
78-
const responseBody = getResponseBody(response);
78+
const responseBody = getResponseBody(response, options);
7979
const responseHeader = getResponseHeader(response, options.responseHeader);
8080

8181
const result: ApiResult = {

src/templates/core/xhr/sendRequest.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const sendRequest = async (
1010
const xhr = new XMLHttpRequest();
1111
xhr.open(options.method, url, true);
1212
xhr.withCredentials = config.WITH_CREDENTIALS;
13+
xhr.responseType = options.responseType;
1314

1415
headers.forEach((value, key) => {
1516
xhr.setRequestHeader(key, value);

0 commit comments

Comments
 (0)