Add subscription support + license extension on renewal
This commit is contained in:
+83
@@ -0,0 +1,83 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.EndpointFetchHttpClientResponse = exports.EndpointFetchHttpClient = void 0;
|
||||
const utils_js_1 = require("../utils.js");
|
||||
const HttpClient_js_1 = require("./HttpClient.js");
|
||||
const STRIPE_API_HOST = 'api.stripe.com';
|
||||
class EndpointFetchHttpClient extends HttpClient_js_1.HttpClient {
|
||||
/** @override */
|
||||
getClientName() {
|
||||
return 'endpointFetch';
|
||||
}
|
||||
async makeRequest(host, port, path, method, headers, requestData, protocol, timeout) {
|
||||
if (!path.startsWith('/')) {
|
||||
throw new Error(`Only relative paths are supported, got: "${path}"`);
|
||||
}
|
||||
if (host !== STRIPE_API_HOST) {
|
||||
throw new HttpClient_js_1.HttpClientRuntimeError(`Stripe: This entrypoint only supports Stripe API requests to ${STRIPE_API_HOST}. Received request for ${host}.`);
|
||||
}
|
||||
if (typeof endpointFetch !== 'function') {
|
||||
throw new HttpClient_js_1.HttpClientRuntimeError('Stripe: EndpointFetchHttpClient requires `endpointFetch()` from a Stripe Script runtime or a test mock.');
|
||||
}
|
||||
const methodHasPayload = method == 'POST' || method == 'PUT' || method == 'PATCH';
|
||||
const body = requestData || (methodHasPayload ? '' : undefined);
|
||||
const endpointFetchRequest = {
|
||||
endpoint: 'stripe_api',
|
||||
path,
|
||||
method,
|
||||
headers: this._getHeaders(headers),
|
||||
};
|
||||
if (body !== undefined) {
|
||||
endpointFetchRequest.body = body;
|
||||
}
|
||||
try {
|
||||
const response = await endpointFetch(endpointFetchRequest);
|
||||
return new EndpointFetchHttpClientResponse(response);
|
||||
}
|
||||
catch (e) {
|
||||
const response = EndpointFetchHttpClient._responseFromError(e);
|
||||
if (response) {
|
||||
return new EndpointFetchHttpClientResponse(response);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
_getHeaders(headers) {
|
||||
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [
|
||||
key,
|
||||
(0, utils_js_1.parseHttpHeaderAsString)(value),
|
||||
]));
|
||||
}
|
||||
static _responseFromError(error) {
|
||||
if (!error || typeof error !== 'object') {
|
||||
return null;
|
||||
}
|
||||
const endpointFetchError = error;
|
||||
if (typeof endpointFetchError.status !== 'number') {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
status: endpointFetchError.status,
|
||||
body: endpointFetchError.body ?? '',
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.EndpointFetchHttpClient = EndpointFetchHttpClient;
|
||||
class EndpointFetchHttpClientResponse extends HttpClient_js_1.HttpClientResponse {
|
||||
constructor(res) {
|
||||
super(res.status, {});
|
||||
this._res = res;
|
||||
}
|
||||
getRawResponse() {
|
||||
return this._res;
|
||||
}
|
||||
toStream(streamCompleteCallback) {
|
||||
throw new HttpClient_js_1.HttpClientRuntimeError('Stripe: EndpointFetchHttpClient does not support streaming responses.');
|
||||
}
|
||||
toJSON() {
|
||||
const body = this._res.body || '';
|
||||
return Promise.resolve().then(() => this._parseResponseBody(body));
|
||||
}
|
||||
}
|
||||
exports.EndpointFetchHttpClientResponse = EndpointFetchHttpClientResponse;
|
||||
//# sourceMappingURL=EndpointFetchHttpClient.js.map
|
||||
Reference in New Issue
Block a user