@lineai/bluebeam-api
Version:
Your unofficial library for Bluebeam API for human and AI developers. Provides TypeScript support, entity classes, and developer-friendly features. Perfect for AI coders, construction professionals, and document management tasks. Includes comprehensive JS
56 lines • 4.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthInterceptor = void 0;
const http_client_1 = require("./http-client");
/**
* Interceptor that handles automatic token refresh on 401 errors
* Implements the same interface as HttpClient for compatibility
*/
class AuthInterceptor {
constructor(config, auth, storage, autoRefresh) {
this.config = config;
this.auth = auth;
this.storage = storage;
this.autoRefresh = autoRefresh;
this.httpClient = (0, http_client_1.createHttpClient)(config);
}
async get(endpoint) {
return this.executeWithRetry(() => this.httpClient.get(endpoint));
}
async post(endpoint, data, isFormData) {
return this.executeWithRetry(() => this.httpClient.post(endpoint, data, isFormData));
}
async put(endpoint, data) {
return this.executeWithRetry(() => this.httpClient.put(endpoint, data));
}
async delete(endpoint) {
return this.executeWithRetry(() => this.httpClient.delete(endpoint));
}
async executeWithRetry(requestFn) {
try {
return await requestFn();
}
catch (error) {
// Only retry on 401 if autoRefresh is enabled
if (!this.autoRefresh || error.status !== 401) {
throw error;
}
try {
// Refresh token
await this.auth.refreshAccessToken();
// Get fresh token from storage
const tokens = await this.storage.getTokens();
// Create new HTTP client with fresh token
this.httpClient = (0, http_client_1.createHttpClient)(Object.assign(Object.assign({}, this.config), { access_token: tokens === null || tokens === void 0 ? void 0 : tokens.access_token }));
// Retry request once
return await requestFn();
}
catch (refreshError) {
// Refresh failed, throw original error
throw error;
}
}
}
}
exports.AuthInterceptor = AuthInterceptor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXV0aC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwrQ0FBMkU7QUFFM0U7OztHQUdHO0FBQ0gsTUFBYSxlQUFlO0lBRzFCLFlBQ1UsTUFBb0IsRUFDcEIsSUFBaUIsRUFDakIsT0FBcUIsRUFDckIsV0FBb0I7UUFIcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFFNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLDhCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLFFBQWdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsUUFBZ0IsRUFDaEIsSUFBYyxFQUNkLFVBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQ1AsUUFBZ0IsRUFDaEIsSUFBYztRQUVkLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBSSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBSSxRQUFnQjtRQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQzVCLFNBQTJCO1FBRTNCLElBQUk7WUFDRixPQUFPLE1BQU0sU0FBUyxFQUFFLENBQUM7U0FDMUI7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQiw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzdDLE1BQU0sS0FBSyxDQUFDO2FBQ2I7WUFFRCxJQUFJO2dCQUNGLGdCQUFnQjtnQkFDaEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBRXJDLCtCQUErQjtnQkFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUU5QywwQ0FBMEM7Z0JBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSw4QkFBZ0Isa0NBQzdCLElBQUksQ0FBQyxNQUFNLEtBQ2QsWUFBWSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLElBQ2xDLENBQUM7Z0JBRUgscUJBQXFCO2dCQUNyQixPQUFPLE1BQU0sU0FBUyxFQUFFLENBQUM7YUFDMUI7WUFBQyxPQUFPLFlBQVksRUFBRTtnQkFDckIsdUNBQXVDO2dCQUN2QyxNQUFNLEtBQUssQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF2RUQsMENBdUVDIn0=