UNPKG

@deltares/fews-pi-requests

Version:

Library for making requests to the FEWS PI webservice

148 lines (147 loc) 5.88 kB
import type { ArchiveLocationsFilter, AttributesFilter, ExternalForecastsFilter, ProductsMetaDataFilter, TimeSeriesFilter } from "./requestParameters"; import type { ArchiveAreas, ArchiveAttributes, ArchiveExternalNetCDFStorageForecasts, ArchiveLocations, ArchiveParameters, ArchiveProductsMetadata, TimeSeriesResponse } from "./response"; import type { TransformRequestFunction } from "@deltares/fews-web-oc-utils"; import { BaseFilter } from "./requestParameters/baseFilter"; import { ArchiveSources } from "./response/archivesources"; import { ArchiveParametersFilter } from "./requestParameters/archiveParametersFilter"; export declare class PiArchiveWebserviceProvider { private baseUrl; private maxUrlLength; readonly API_ENDPOINT = "rest/fewspiservice/v1"; private webservice; addPiJsonFormat(queryParameters: string): string; /** * Constructor for PiArchiveWebserviceProvider * * @param url the base url where the PI servive is available * @param {Object} [options] Optional constructor options * @param {number} [options.maxUrlLength] A number that specifies the maximum length of the URL. If the URL length exceeds this value, the requests will be split up. * @param {TransformRequestFunction} [options.transformRequestFn] A function that can be used to modify the Request * before it is sent to the server. This function takes a Request as a parameter and returns the modified Request. * If this option is not specified, the Request will be sent as is. */ constructor(url: string, options?: { maxUrlLength?: number; transformRequestFn?: TransformRequestFunction; }); /** * Request parameters * * @param filter an object with request query parameters * @returns Parameters PI API response * @throws 'Fetch Error' if fetch result is not ok */ getParameters(filter: ArchiveParametersFilter): Promise<ArchiveParameters>; /** * Construct URL for parameters request * * @param filter an object with request query parameters * @returns complete url for making a request */ parametersUrl(filter: ArchiveParametersFilter): URL; /** * Request locations from the archive * * @param filter an object with request query parameters * @returns Locations PI API response * @throws 'Fetch Error' if fetch result is not ok */ getLocations(filter: ArchiveLocationsFilter): Promise<ArchiveLocations>; /** * Construct URL for locations request * * @param filter an object with request query parameters * @returns complete url for making a request */ locationsUrl(filter: ArchiveLocationsFilter): URL; /** * Request areas from the archive * * @param filter an object with request query parameters * @returns ArchiveAreas PI API response * @throws 'Fetch Error' if fetch result is not ok */ getAreas(filter: BaseFilter): Promise<ArchiveAreas>; /** * Construct URL for archive areas request * * @param filter an object with request query parameters * @returns complete url for making a request */ areasUrl(filter: BaseFilter): URL; /** * Request sources from the archive * * @param filter an object with request query parameters * @returns ArchiveSources PI API response * @throws 'Fetch Error' if fetch result is not ok */ getSources(filter: BaseFilter): Promise<ArchiveSources>; /** * Construct URL for archive sources request * * @param filter an object with request query parameters * @returns complete url for making a request */ sourcesUrl(filter: BaseFilter): URL; /** * Request attributes * * @param filter an object with request query parameters * @returns Attributes PI API response * @throws 'Fetch Error' if fetch result is not ok */ getAttributes(filter: AttributesFilter): Promise<ArchiveAttributes>; /** * Construct URL for attribute request * * @param filter an object with request query parameters * @returns complete url for making a request */ attributesUrl(filter: AttributesFilter): URL; /** * Request external forecasts * * @param filter an object with request query parameters * @returns External Forecasts PI API response * @throws 'Fetch Error' if fetch result is not ok */ getExternalForecasts(filter: ExternalForecastsFilter): Promise<ArchiveExternalNetCDFStorageForecasts>; /** * Construct URL for external forecast request * * @param filter an object with request query parameters * @returns complete url for making a request */ externalForecastsUrl(filter: ExternalForecastsFilter): URL; /** * Request product metadata from archive * * @param filter an object with request query parameters * @returns ProductsMetaData PI API response * @throws 'Fetch Error' if fetch result is not ok */ getProductsMetaData(filter: ProductsMetaDataFilter): Promise<ArchiveProductsMetadata>; /** * Construct URL for locations request * * @param queryParameters query string * @returns complete url for making a request */ productsMetaDataUrl(queryParameters: string): URL; /** * Request Time Series * * @param filter an object with request query parameters * @returns Time Series PI API response * @throws 'Fetch Error' if fetch result is not ok */ getTimeSeries(filter: TimeSeriesFilter): Promise<TimeSeriesResponse>; /** * Construct URL for time series request * * @param filter an object with request query parameters * @returns complete url for making a request */ timeSeriesUrl(filter: TimeSeriesFilter): URL; }