import topologyConstants from '../../topologyConstants' import AuthRequestProxy = require("../../portalAuthorization/AuthRequestProxy") import { IClusterClientProvider } from "../../typings/IClusterClientProvider" import { IAuthProvider } from "../../typings/IAuthProvider" import { AddressResolveResponse, AddressSuggestParams, SuggestParams, VerifyAddressResult, StructureAddress, StructuredAddressResolveParams, VerifyAddressParams, AddressNode, HouseSuggestParams, CadastralObject } from "./IFias" import { IClusterClientResponse } from "../../typings/IClusterClient" export interface OrganizationRequisitesDeps { clusterClientProvider: IClusterClientProvider; authProvider: IAuthProvider; } const FIAS_ROSREESTR_METHODS_TIMEOUT = 40000 const { fiasVersion } = topologyConstants export class FiasClient { private _http: AuthRequestProxy constructor({ clusterClientProvider, authProvider }: OrganizationRequisitesDeps) { const clusterClient = clusterClientProvider.createClusterClient('fias') this._http = new AuthRequestProxy({ clusterClient, authProvider }) } verifyAddress(data: StructureAddress[], params?: VerifyAddressParams) { return this._http.send({ method: 'POST', url: `${fiasVersion}/verify`, data, params }) } getRegionsList() { return this._http.send({ method: 'GET', url: `${fiasVersion}/addresses/regions` }) } postResolve(addresses: string[], params? :{ version: string }) { const data = { Addresses: addresses } return this._http.send({ method: 'POST', url: `${fiasVersion}/resolve`, params, data }) } postStructuredAddressesResolve(params: StructuredAddressResolveParams) { return this._http.send({ method: 'GET', url: `${fiasVersion}/addresses/resolve`, params }) } getHouseSuggest(params: HouseSuggestParams) { return this._http.send({ method: 'GET', url: `${fiasVersion}/houses`, params }) } getRoomsSuggest(params: SuggestParams) { return this._http.send({ method: 'GET', url: `${fiasVersion}/rooms`, params }) } getStead(params: SuggestParams) { return this._http.send({ method: 'GET', url: `${fiasVersion}/steads`, params }) } getCadastralByFiasId(id: string) { return this._http.send({ method: 'GET', url: `${fiasVersion}/cadastre/resolve/${id}` }) } getCadastralSuggest(data: StructureAddress) { return this._http.send({ method: 'POST', url: `${fiasVersion}/cadastre/suggest`, timeout: FIAS_ROSREESTR_METHODS_TIMEOUT, data: data }) } getAddressSuggest(params: AddressSuggestParams) { return this._http.send({ method: 'GET', url: `${fiasVersion}/addresses`, params }) } getFullAddress(fiasId: string, params?: { version: string } ) { return this._http.send({ method: 'GET', url: `${fiasVersion}/addresses/structural/${fiasId}`, params }) } getInfoByCadastres(cadastralNumbers: string[]) { return this._http.send({ method: 'POST', url: `${fiasVersion}/cadastre/info`, data: cadastralNumbers }) } getAddressByCadastre(cadastreNumber: string) { return this._http.send({ method: 'GET', url: `${fiasVersion}/cadastre/info/${cadastreNumber}` }) } }