@deltares/fews-pi-requests
Version:
Library for making requests to the FEWS PI webservice
167 lines (166 loc) • 6.61 kB
TypeScript
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";
import { ProductAttributesFilter } from "./requestParameters/productAttributesFilter.js";
export declare class PiArchiveWebserviceProvider {
private readonly baseUrl;
private readonly maxUrlLength;
private readonly explodeQueryParameters;
readonly API_ENDPOINT = "rest/fewspiservice/v1";
private readonly 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;
explodeQueryParameters?: boolean;
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;
/**
* Construct URL for attribute request
*
* @param filter an object with request query parameters
* @returns complete url for making a request
*/
productsAttributesUrl(filter: ProductAttributesFilter): URL;
/**
* Add or update product attributes
*
* @param metadataPath
* @param attributes
* @returns Attributes PI API response
* @throws 'Fetch Error' if fetch result is not ok
*/
postProductAttributes(filter: ProductAttributesFilter): Promise<string>;
/**
* 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;
}