UNPKG

@ministryofjustice/probation-search-frontend

Version:

A shared UI component to search for probation cases from within your Express/Nunjucks application

50 lines 2.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const superagent_1 = __importDefault(require("superagent")); const environments_1 = __importDefault(require("../environments")); class ProbationSearchClient { hmppsAuthClient; dataSource; constructor(hmppsAuthClient, dataSource) { this.hmppsAuthClient = hmppsAuthClient; this.dataSource = dataSource; } async search({ query, matchAllTerms = true, providersFilter = [], asUsername, pageNumber = 1, pageSize = 10, }) { if (this.dataSource instanceof Array) { return Promise.resolve(this.localSearch(this.dataSource, pageNumber, pageSize)); } const token = await this.hmppsAuthClient.getToken(asUsername); const apiConfig = this.getApiConfig(this.dataSource).searchApi; const response = await superagent_1.default .post(`${apiConfig.url}/phrase?page=${pageNumber - 1}&size=${pageSize}`) .auth(token, { type: 'bearer' }) .timeout(apiConfig.timeout) .retry(2) .send({ phrase: query, probationAreasFilter: providersFilter.map(provider => provider.substring(0, 3)), matchAllTerms, }); return response.body; } localSearch(data, page, size) { const content = data.slice((page - 1) * size, page * size); return { content, probationAreaAggregations: [], size: content.length, totalElements: data.length, totalPages: Math.ceil(data.length / size), }; } getApiConfig(dataSource) { if (dataSource === 'dev' || dataSource === 'preprod' || dataSource === 'prod') return environments_1.default[dataSource]; return dataSource; } } exports.default = ProbationSearchClient; //# sourceMappingURL=probationSearchClient.js.map