ja-geotiff
Version:
GeoTIFF image decoding in JavaScript
52 lines (45 loc) • 1.15 kB
JavaScript
import { BaseClient, BaseResponse } from "./base.js"
class FetchResponse extends BaseResponse {
/**
* BaseResponse facade for fetch API Response
* @param {Response} response
*/
constructor(response) {
super()
this.response = response
}
get status() {
return this.response.status
}
getHeader(name) {
return this.response.headers.get(name)
}
async getData() {
const data = this.response.arrayBuffer
? await this.response.arrayBuffer()
: (await this.response.buffer()).buffer
return data
}
}
export class FetchClient extends BaseClient {
constructor(url, credentials) {
super(url)
this.credentials = credentials
}
/**
* @param {{headers: HeadersInit, signal: AbortSignal}} [options={}]
* @returns {Promise<FetchResponse>}
*/
async request({ headers, signal } = {}) {
let url = this.url
if (Array.isArray(this.url)) {
url = this.url[Math.floor(Math.random() * this.url.length)]
}
const response = await fetch(url, {
headers,
credentials: this.credentials,
signal,
})
return new FetchResponse(response)
}
}