UNPKG

@deltares/fews-wms-requests

Version:

Library for making requests to the FEWS WMS-T webservice

40 lines (34 loc) 1.94 kB
import {GetCapabilitiesFilter} from "./requestParameters/getCapabilitiesFilter"; import type {GetCapabilitiesResponse} from "./response/getCapabilitiesResponse"; import {GetLegendGraphicFilter} from "./requestParameters/getLegendGraphicFilter"; import type {GetLegendGraphicResponse} from "./response/getLegendGraphicResponse"; import {BaseWMSFilter} from "./requestParameters/baseWmsFilter"; import {filterToParamsWMS} from "./utils/filterToParams"; import {WMSRequestType} from "./types/wmsRequestType"; import {PiRestService} from "@deltares/fews-web-oc-utils"; import type {TransformRequestFunction} from "@deltares/fews-web-oc-utils"; export class WMSProvider { private readonly baseUrl: string webservice: PiRestService; constructor(baseUrl: string, options: {transformRequestFn?: TransformRequestFunction} = {}) { this.baseUrl = baseUrl this.webservice = new PiRestService(baseUrl, options.transformRequestFn); } async getCapabilities(filter: GetCapabilitiesFilter): Promise<GetCapabilitiesResponse> { return this.executeWMSRequest(WMSRequestType.GetCapabilities, filter) } async getLegendGraphic(filter: GetLegendGraphicFilter): Promise<GetLegendGraphicResponse> { filter = {...{service: 'WMS', version: '1.3'}, ...filter} return this.executeWMSRequest(WMSRequestType.GetLegendGraphic, filter) } private async executeWMSRequest<filterType extends BaseWMSFilter, responseType>(requestType: WMSRequestType, filter: filterType): Promise<responseType> { const defaults: Partial<BaseWMSFilter> = { format: 'application/json', } const filterWithDefaults = {...defaults, ...filter} const queryParameters = filterToParamsWMS(requestType, filterWithDefaults) const url = `${this.baseUrl}${queryParameters}`; const res = await this.webservice.getData<responseType>(url); return res.data; } }