shelving
Version:
Toolkit for using data in JavaScript.
23 lines (22 loc) • 975 B
JavaScript
import { ResponseError } from "../../error/ResponseError.js";
import { createXMLRequest } from "../../util/http.js";
import { ClientAPIProvider } from "./ClientAPIProvider.js";
/** API provider that always sends request bodies as XML and parses responses as plain text. */
export class XMLAPIProvider extends ClientAPIProvider {
_createBodyRequest(method, url, payload, options, caller) {
return createXMLRequest(method, url, payload, options, caller);
}
/**
* Parse a text `Response` for an endpoint.
*
* - Non-2xx responses become `ResponseError`.
* - The response body is always returned as raw text.
*/
async parseResponse(_endpoint, response, caller = this.parseResponse) {
const { ok, status } = response;
const content = await response.text();
if (!ok)
throw new ResponseError(content || `Error ${status}`, { code: status, cause: response, caller });
return content;
}
}