import { FallbackErrorHandler } from '../error/fallback-error-handler'; import { ApiErrorHandler } from '../error/api-error-handler'; import { ErrorHandlerService } from '../error/error-handler.service'; import { LeadSearchService } from './lead-search.service'; import { LeadSearchCollectionConverter } from './lead-search.collection.converter'; import { ElasticSearchClient } from '../search/elastic-search.client'; import { LeadSearchConverter } from './lead-search.converter'; import { LeadSearchDeserializer } from './lead-search.deserializer'; import { LeadSearchParamsBuilder } from './lead-search-params.builder'; export function LeadSearchFactory( protocol: string, host: string, port: number, organizationId: string, headers: { [key: string]: any } ): LeadSearchService { const searchClient: ElasticSearchClient = new ElasticSearchClient( protocol, host, port, '/organizations/' + organizationId + '/search', headers ); const converter: LeadSearchCollectionConverter = new LeadSearchCollectionConverter( new LeadSearchConverter(new LeadSearchDeserializer())); const paramsBuilder: LeadSearchParamsBuilder = new LeadSearchParamsBuilder(); const errorHandler: ErrorHandlerService = new ErrorHandlerService(new ApiErrorHandler(), new FallbackErrorHandler()); return new LeadSearchService(searchClient, converter, paramsBuilder, errorHandler); }