All files / core/search search.ts

100% Statements 4/4
100% Branches 0/0
100% Functions 2/2
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                                        11x                                         11x   8x             8x    
import { LablebHttpClient } from "../../http-client";
import { SearchRequestParams } from "../../request/search/search.request.type";
import { camelCaseToSnackCaseObject, } from "../../utils";
import { LablebAPIResponseWrapper, LablebSDKContext } from "../lableb-client/lableb-client.type";
import { injectFeedbackDataIntoSearchResponse } from "./search.injector";
import { SearchResponse, SearchResponseWithFeedback } from "./search.type";
 
 
/**
 * call the api(including creating the request and intercept the response)
 * then inject the feedback data in
 */
export async function lablebClientSearch(
 
    this: LablebSDKContext,
 
    searchOptions: SearchRequestParams
 
): Promise<LablebAPIResponseWrapper<SearchResponseWithFeedback>> {
 
    return injectFeedbackDataIntoSearchResponse({
        searchOptions,
        searchResponse: await lablebClientNativeSearch.bind(this)(searchOptions),
        globalOptions: this.globalOptions
    });
}
 
 
/**
 * use request builder to form the search request
 * call any interceptor before doing the request
 * call the api 
 */
async function lablebClientNativeSearch(
 
    this: LablebSDKContext,
 
    searchOptions: SearchRequestParams
 
): Promise<LablebAPIResponseWrapper<SearchResponse>> {
 
    const { url, headers, method, params } = await this.requestBuilder.search(searchOptions);
 
    const interceptedRequestParams = ({
        method,
        url,
        headers,
        params: camelCaseToSnackCaseObject(params),
    });
 
    return await LablebHttpClient(interceptedRequestParams);
}