@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
69 lines • 7.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpClientFactory = exports.ClientNames = void 0;
const platform_error_1 = require("../errors/platform_error");
const axios_client_1 = require("./clients/axios_client");
var ClientNames;
(function (ClientNames) {
ClientNames["Axios"] = "axios";
// Fetch = 'fetch',
// Xhr = 'xhr'
})(ClientNames || (exports.ClientNames = ClientNames = {}));
/**
* @class HttpClientFactory
* @classdesc
* A factory class to generate http clients
* @example
* const httpClient = HttpClientFactory.getHttpClient('axios');
* const response = await httpClient.post("https://example.com", { foo: "bar" });
* if (response.type === "success") {
* console.log(response.statusCode);
* console.log(response.responseBody);
* } else if (response.type === "application-error") {
* console.log(response.statusCode);
* console.log(response.message);
* console.log(response.responseBody);
* } else if (response.type === "client-error") {
* console.log(response.statusCode);
* console.log(response.message);
* }
*/
class HttpClientFactory {
static getHttpClient(name, options) {
switch (name) {
case ClientNames.Axios:
return new axios_client_1.AxiosClient(options);
// case ClientNames.Fetch:
// return require('./clients/fetch').FetchClient;
// case ClientNames.Xhr:
// return require('./clients/xhr').XhrClient;
default:
throw new platform_error_1.PlatformError('Invalid client name');
}
}
/**
* Create HTTP client with metrics and logging capabilities
* @param name - Client name (currently only supports Axios)
* @param logger - Logger instance for request/response logging
* @param statsClient - Stats client instance for metrics collection
* @param defaultStatTags - Default stat tags for all requests
* @param options - Axios configuration options
* @returns Enhanced HTTP client with logging and metrics
*/
static getHttpClientWithMetrics(name, logger, statsClient, defaultStatTags, options) {
switch (name) {
case ClientNames.Axios: {
const observabilityConfig = {
logger,
statsClient,
defaultStatTags: defaultStatTags || {},
};
return new axios_client_1.AxiosClient(options, observabilityConfig);
}
default:
throw new platform_error_1.PlatformError('Invalid client name');
}
}
}
exports.HttpClientFactory = HttpClientFactory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQXlEO0FBT3pELHlEQUFxRDtBQVlyRCxJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixjQUFjO0FBQ2hCLENBQUMsRUFKVyxXQUFXLDJCQUFYLFdBQVcsUUFJdEI7QUFLRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFpQixFQUFFLE9BQXVCO1FBQzdELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFdBQVcsQ0FBQyxLQUFLO2dCQUNwQixPQUFPLElBQUksMEJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQywwQkFBMEI7WUFDMUIscURBQXFEO1lBQ3JELHdCQUF3QjtZQUN4QixpREFBaUQ7WUFDakQ7Z0JBQ0UsTUFBTSxJQUFJLDhCQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLHdCQUF3QixDQUM3QixJQUFpQixFQUNqQixNQUFvQixFQUNwQixXQUE4QixFQUM5QixlQUF5QyxFQUN6QyxPQUF1QjtRQUV2QixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxtQkFBbUIsR0FBbUM7b0JBQzFELE1BQU07b0JBQ04sV0FBVztvQkFDWCxlQUFlLEVBQUUsZUFBZSxJQUFJLEVBQUU7aUJBQ3ZDLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLDBCQUFXLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNEO2dCQUNFLE1BQU0sSUFBSSw4QkFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTNDRCw4Q0EyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3BsYXRmb3JtX2Vycm9yJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIElIdHRwTG9nZ2VyLFxuICBJSHR0cFN0YXRzQ2xpZW50LFxuICBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWcsXG59IGZyb20gJy4vY2xpZW50cy90eXBlcyc7XG5pbXBvcnQgeyBBeGlvc0NsaWVudCB9IGZyb20gJy4vY2xpZW50cy9heGlvc19jbGllbnQnO1xuXG5leHBvcnQge1xuICBBcGlSZXNwb25zZSxcbiAgQXBwbGljYXRpb25FcnJvckFwaVJlc3BvbnNlLFxuICBDbGllbnRFcnJvckFwaVJlc3BvbnNlLFxuICBTdWNjZXNzZnVsQXBpUmVzcG9uc2UsXG4gIFJlc3BvbnNlUGFyc2VyLFxuICBJSHR0cExvZ2dlcixcbiAgSUh0dHBTdGF0c0NsaWVudCxcbn0gZnJvbSAnLi9jbGllbnRzL3R5cGVzJztcblxuZXhwb3J0IGVudW0gQ2xpZW50TmFtZXMge1xuICBBeGlvcyA9ICdheGlvcycsXG4gIC8vIEZldGNoID0gJ2ZldGNoJyxcbiAgLy8gWGhyID0gJ3hocidcbn1cblxuLy8gQXMgd2UgYWRkIG1vcmUgY2xpZW50cywgd2Ugd2lsbCB1bmlvbiB0aGVtIGhlcmVcbmV4cG9ydCB0eXBlIGNsaWVudE9wdGlvbnMgPSBBeGlvc1JlcXVlc3RDb25maWc7XG5cbi8qKlxuICogQGNsYXNzIEh0dHBDbGllbnRGYWN0b3J5XG4gKiBAY2xhc3NkZXNjXG4gKiBBIGZhY3RvcnkgY2xhc3MgdG8gZ2VuZXJhdGUgaHR0cCBjbGllbnRzXG4gKiBAZXhhbXBsZVxuICogY29uc3QgaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoJ2F4aW9zJyk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGh0dHBDbGllbnQucG9zdChcImh0dHBzOi8vZXhhbXBsZS5jb21cIiwgeyBmb286IFwiYmFyXCIgfSk7XG4gKiBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi1lcnJvclwiKSB7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICogY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJjbGllbnQtZXJyb3JcIikge1xuICogY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5tZXNzYWdlKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnRGYWN0b3J5IHtcbiAgc3RhdGljIGdldEh0dHBDbGllbnQobmFtZTogQ2xpZW50TmFtZXMsIG9wdGlvbnM/OiBjbGllbnRPcHRpb25zKTogSHR0cENsaWVudCB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIENsaWVudE5hbWVzLkF4aW9zOlxuICAgICAgICByZXR1cm4gbmV3IEF4aW9zQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgLy8gY2FzZSBDbGllbnROYW1lcy5GZXRjaDpcbiAgICAgIC8vICAgICByZXR1cm4gcmVxdWlyZSgnLi9jbGllbnRzL2ZldGNoJykuRmV0Y2hDbGllbnQ7XG4gICAgICAvLyBjYXNlIENsaWVudE5hbWVzLlhocjpcbiAgICAgIC8vICAgICByZXR1cm4gcmVxdWlyZSgnLi9jbGllbnRzL3hocicpLlhockNsaWVudDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBQbGF0Zm9ybUVycm9yKCdJbnZhbGlkIGNsaWVudCBuYW1lJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBIVFRQIGNsaWVudCB3aXRoIG1ldHJpY3MgYW5kIGxvZ2dpbmcgY2FwYWJpbGl0aWVzXG4gICAqIEBwYXJhbSBuYW1lIC0gQ2xpZW50IG5hbWUgKGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEF4aW9zKVxuICAgKiBAcGFyYW0gbG9nZ2VyIC0gTG9nZ2VyIGluc3RhbmNlIGZvciByZXF1ZXN0L3Jlc3BvbnNlIGxvZ2dpbmdcbiAgICogQHBhcmFtIHN0YXRzQ2xpZW50IC0gU3RhdHMgY2xpZW50IGluc3RhbmNlIGZvciBtZXRyaWNzIGNvbGxlY3Rpb25cbiAgICogQHBhcmFtIGRlZmF1bHRTdGF0VGFncyAtIERlZmF1bHQgc3RhdCB0YWdzIGZvciBhbGwgcmVxdWVzdHNcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBeGlvcyBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHJldHVybnMgRW5oYW5jZWQgSFRUUCBjbGllbnQgd2l0aCBsb2dnaW5nIGFuZCBtZXRyaWNzXG4gICAqL1xuICBzdGF0aWMgZ2V0SHR0cENsaWVudFdpdGhNZXRyaWNzKFxuICAgIG5hbWU6IENsaWVudE5hbWVzLFxuICAgIGxvZ2dlcj86IElIdHRwTG9nZ2VyLFxuICAgIHN0YXRzQ2xpZW50PzogSUh0dHBTdGF0c0NsaWVudCxcbiAgICBkZWZhdWx0U3RhdFRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBvcHRpb25zPzogY2xpZW50T3B0aW9ucyxcbiAgKTogSHR0cENsaWVudCB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIENsaWVudE5hbWVzLkF4aW9zOiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFiaWxpdHlDb25maWc6IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZyA9IHtcbiAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgc3RhdHNDbGllbnQsXG4gICAgICAgICAgZGVmYXVsdFN0YXRUYWdzOiBkZWZhdWx0U3RhdFRhZ3MgfHwge30sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgQXhpb3NDbGllbnQob3B0aW9ucywgb2JzZXJ2YWJpbGl0eUNvbmZpZyk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgUGxhdGZvcm1FcnJvcignSW52YWxpZCBjbGllbnQgbmFtZScpO1xuICAgIH1cbiAgfVxufVxuIl19