Skip to content

Commit

Permalink
refactor(javascript): simplify transporter.request (#617)
Browse files Browse the repository at this point in the history
  • Loading branch information
Haroenv committed Jun 1, 2022
1 parent 2e17ec6 commit af6c83d
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import type {
StackFrame,
TransporterOptions,
Transporter,
Headers,
QueryParameters,
} from '../types';

Expand Down Expand Up @@ -99,7 +98,7 @@ export function createTransporter({
const method = request.method;

// On `GET`, the data is proxied to query parameters.
const dataQueryParameters: Record<string, any> =
const dataQueryParameters: QueryParameters =
request.method === 'GET'
? {
...request.data,
Expand Down Expand Up @@ -238,10 +237,6 @@ export function createTransporter({

function createRequest<TResponse>(
baseRequest: Request,
methodOptions: {
headers: Headers;
queryParameters: QueryParameters;
},
baseRequestOptions?: RequestOptions
): Promise<TResponse> {
const mergedData: Request['data'] = Array.isArray(baseRequest.data)
Expand All @@ -258,12 +253,12 @@ export function createTransporter({
cacheable: baseRequestOptions?.cacheable,
timeout: baseRequestOptions?.timeout,
queryParameters: {
...methodOptions.queryParameters,
...baseRequest.queryParameters,
...baseRequestOptions?.queryParameters,
},
headers: {
Accept: 'application/json',
...methodOptions.headers,
...baseRequest.headers,
...baseRequestOptions?.headers,
},
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import type { Headers } from './Transporter';
import type { Headers, QueryParameters } from './Transporter';

export type Method = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';

export type Request = {
method: Method;
path: string;
queryParameters: QueryParameters;
data?: Array<Record<string, any>> | Record<string, any>;
headers: Headers;
cacheable?: boolean;
/**
* Some POST methods in the Algolia REST API uses the `read` transporter.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,6 @@ export type Transporter = {
*/
request: <TResponse>(
baseRequest: Request,
methodOptions: {
headers: Headers;
queryParameters: QueryParameters;
},
baseRequestOptions?: RequestOptions
) => Promise<TResponse>;
};
7 changes: 3 additions & 4 deletions templates/javascript/api-single.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,8 @@ export function create{{capitalizedApiName}}(options: CreateClientOptions{{#hasR
const request: Request = {
method: '{{httpMethod}}',
path: requestPath,
queryParameters,
headers,
{{#bodyParam}}
data: {{paramName}},
{{/bodyParam}}
Expand All @@ -226,10 +228,7 @@ export function create{{capitalizedApiName}}(options: CreateClientOptions{{#hasR
{{/vendorExtensions.x-cacheable}}
};

return transporter.request(request, {
queryParameters,
headers,
}, requestOptions);
return transporter.request(request, requestOptions);
},

{{/operation}}
Expand Down

0 comments on commit af6c83d

Please sign in to comment.