@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
45 lines (29 loc) • 1.37 kB
text/typescript
import { LablebHttpClient } from "../../http-client";
import { RecommendRequestParams } from "../../request/recommend/recommend.request.type";
import { camelCaseToSnackCaseObject } from "../../utils";
import { LablebAPIResponseWrapper, LablebSDKContext } from "../lableb-client/lableb-client.type";
import { injectFeedbackDataIntoRecommendResponse } from "./recommend.injector";
import { RecommendResponse, RecommendResponseWithFeedback } from "./recommend.type";
export async function lablebClientRecommend(
this: LablebSDKContext,
recommendOptions: RecommendRequestParams
): Promise<LablebAPIResponseWrapper<RecommendResponseWithFeedback>> {
return injectFeedbackDataIntoRecommendResponse({
recommendOptions,
recommendResponse: await lablebClientNativeRecommend.bind(this)(recommendOptions),
globalOptions: this.globalOptions,
});
}
async function lablebClientNativeRecommend(
this: LablebSDKContext,
recommendOptions: RecommendRequestParams
): Promise<LablebAPIResponseWrapper<RecommendResponse>> {
const { url, headers, method, params } = await this.requestBuilder.recommend(recommendOptions);
const interceptedRequestParams = ({
method,
url,
headers,
params: camelCaseToSnackCaseObject(params),
});
return await LablebHttpClient(interceptedRequestParams);
}