@qbraid-core/base
Version:
Core functionality for interacting with qBraid Cloud Services.
82 lines • 2.97 kB
JavaScript
;
// Copyright (c) 2025, qBraid Development Team
// All rights reserved.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.QbraidSessionV1 = exports.DEFAULT_BASE_URL = exports.DEFAULT_USER_DOMAIN = void 0;
/**
* Module for making requests to the qBraid API v1.
*/
const axios_1 = __importDefault(require("axios"));
const _version_1 = require("./_version");
exports.DEFAULT_USER_DOMAIN = 'qbraid.com';
// Current default base URL for qBraid API v1
exports.DEFAULT_BASE_URL = 'https://api-staging.qbraid.com/api/v1';
class QbraidSessionV1 {
apiKey;
userDomain;
baseURL;
client;
constructor(apiKey, userDomain = exports.DEFAULT_USER_DOMAIN, baseURL = exports.DEFAULT_BASE_URL) {
this.apiKey = apiKey;
this.userDomain = userDomain;
this.baseURL = baseURL;
this.client = this.initializeClient();
}
authDataToHeaders(authData) {
let headers = {};
if (authData.apiKey) {
headers['X-Api-Key'] = `${authData.apiKey}`;
}
else {
throw new Error('Invalid authentication data. Please provide API Key for authentication.');
}
return headers;
}
normalizeBaseURL(baseURL) {
return baseURL.replace(/\/+$/, '');
}
getUserAgent() {
return `QbraidCoreJs/${_version_1.version}`;
}
addUserAgent(userAgent) {
const current = this.client.defaults.headers['User-Agent'];
if (typeof current === 'string' && !current.includes(userAgent)) {
this.client.defaults.headers['User-Agent'] = `${current} ${userAgent}`.trim();
}
}
initializeClient() {
// Build auth headers
const authData = { apiKey: this.apiKey };
const authHeaders = this.authDataToHeaders(authData);
const headers = {
'X-Domain': this.userDomain,
'Content-Type': 'application/json; charset=utf-8',
};
// Some environments (browsers) disallow setting User-Agent; add only when allowed
try {
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
if (!isBrowser) {
headers['User-Agent'] = this.getUserAgent();
}
}
catch {
// ignore
}
// Create axios instance
const axiosInstance = axios_1.default.create({
baseURL: this.normalizeBaseURL(this.baseURL),
headers,
});
axiosInstance.interceptors.request.use(async (config) => {
const updatedConfig = { ...config };
updatedConfig.headers.set(authHeaders);
return updatedConfig;
});
return axiosInstance;
}
}
exports.QbraidSessionV1 = QbraidSessionV1;
//# sourceMappingURL=session-v1.js.map