core/aws-lsp-core/src/http/requesters.ts (16 lines of code) (raw):

import { Headers, xhr, XHROptions, XHRResponse } from 'request-light' // Abstract away interfaces of existing implementations export type HttpRequestOptions = Pick<XHROptions, 'headers' | 'type'> export type HttpRequestHeaders = Headers export type HttpResponse = XHRResponse export interface HttpRequester { request(url: string, options?: HttpRequestOptions): Promise<HttpResponse> } /** * Abstracted http request class. * * This will ensure we are not locked in to a specific * http request implementation. */ export class DefaultHttpRequester implements HttpRequester { constructor(private readonly requestImpl = xhr) {} /** Sends a http request */ request(url: string, options: HttpRequestOptions = {}): Promise<HttpResponse> { return this.requestImpl({ url, ...options }) } } export function getETag(headers: HttpRequestHeaders): string { return (headers.eTag as string) ?? (headers.ETag as string) ?? (headers.etag as string) }