UNPKG

@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

136 lines 11.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createHttpClient = void 0; const constants_1 = require("./constants"); const createHttpClient = (config) => { const baseUrl = config.base_url || constants_1.DEFAULT_BASE_URL; const getHeaders = (endpoint, isFormData = false) => { const isOAuth = endpoint.startsWith('/oauth2/'); const baseHeaders = { client_id: config.client_id }; const contentTypeHeaders = isFormData ? { 'Content-Type': 'application/x-www-form-urlencoded' } : { 'Content-Type': 'application/json' }; const authHeaders = !isOAuth && config.access_token ? { Authorization: `Bearer ${config.access_token}` } : {}; return Object.assign(Object.assign(Object.assign({}, baseHeaders), contentTypeHeaders), authHeaders); }; const createApiError = (response, error) => { const baseError = { error: (response === null || response === void 0 ? void 0 : response.statusText) || (error instanceof Error ? error.message : 'Network error'), status: (response === null || response === void 0 ? void 0 : response.status) || 0, }; return baseError; }; const parseResponseHeaders = (response) => { const headerEntries = Array.from(response.headers.entries()); return Object.fromEntries(headerEntries); }; const parseResponseData = async (response) => { const contentType = response.headers.get('content-type'); if (contentType && contentType.includes('application/json')) { return response.json(); } return response.text(); }; const makeRequest = async (options) => { const { method, url, headers = {}, body } = options; const requestInit = Object.assign({ method, headers: Object.assign({}, headers) }, (body && { body })); try { const response = await fetch(url, requestInit); if (!response.ok) { const errorData = createApiError(response); try { const errorJson = (await response.json()); const errorObj = Object.assign(Object.assign({}, errorData), errorJson); const error = new Error(errorObj.error || `HTTP ${response.status}`); // eslint-disable-next-line functional/immutable-data Object.assign(error, errorObj); return Promise.reject(error); } catch (_a) { const error = new Error(errorData.error || `HTTP ${response.status}`); // eslint-disable-next-line functional/immutable-data Object.assign(error, errorData); return Promise.reject(error); } } const data = await parseResponseData(response); const responseHeaders = parseResponseHeaders(response); return { data, status: response.status, headers: responseHeaders, }; } catch (error) { if (error && typeof error === 'object' && 'status' in error) { return Promise.reject(error); } const apiError = createApiError({}, error); return Promise.reject(apiError); } }; const getBaseUrl = () => { return baseUrl; }; const prepareRequestBody = (data, isFormData) => { if (!data) return undefined; if (isFormData && data instanceof FormData) { return data; } if (isFormData) { const params = new URLSearchParams(); Object.entries(data).forEach(([key, value]) => { if (value !== undefined && value !== null) { params.append(key, value); } }); return params.toString(); } return JSON.stringify(data); }; return { async get(endpoint) { const baseUrl = getBaseUrl(); return makeRequest({ method: 'GET', url: `${baseUrl}${endpoint}`, headers: getHeaders(endpoint), }); }, async post(endpoint, data, isFormData = false) { const baseUrl = getBaseUrl(); const body = prepareRequestBody(data, isFormData); return makeRequest({ method: 'POST', url: `${baseUrl}${endpoint}`, headers: getHeaders(endpoint, isFormData), body, isFormData, }); }, async put(endpoint, data) { const baseUrl = getBaseUrl(); const body = data ? JSON.stringify(data) : undefined; return makeRequest({ method: 'PUT', url: `${baseUrl}${endpoint}`, headers: getHeaders(endpoint), body, }); }, async delete(endpoint) { const baseUrl = getBaseUrl(); return makeRequest({ method: 'DELETE', url: `${baseUrl}${endpoint}`, headers: getHeaders(endpoint), }); }, }; }; exports.createHttpClient = createHttpClient; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2h0dHAtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLDJDQUErQztBQWdCeEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQW9CLEVBQUUsRUFBRTtJQUN2RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLDRCQUFnQixDQUFDO0lBRXBELE1BQU0sVUFBVSxHQUFHLENBQ2pCLFFBQWdCLEVBQ2hCLFVBQVUsR0FBRyxLQUFLLEVBQ00sRUFBRTtRQUMxQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUEyQixFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUUsTUFBTSxrQkFBa0IsR0FBMkIsVUFBVTtZQUMzRCxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsbUNBQW1DLEVBQUU7WUFDekQsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFlBQVk7WUFDN0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFVBQVUsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCxxREFBWSxXQUFXLEdBQUssa0JBQWtCLEdBQUssV0FBVyxFQUFHO0lBQ25FLENBQUMsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBa0IsRUFBRSxLQUFlLEVBQVksRUFBRTtRQUN2RSxNQUFNLFNBQVMsR0FBYTtZQUMxQixLQUFLLEVBQ0gsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsVUFBVTtnQkFDcEIsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDNUQsTUFBTSxFQUFFLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE1BQU0sS0FBSSxDQUFDO1NBQzlCLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBa0IsRUFBMEIsRUFBRTtRQUMxRSxNQUFNLGFBQWEsR0FBMkMsS0FBSyxDQUFDLElBQUksQ0FDdEUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FDM0IsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBSyxRQUFrQixFQUFjLEVBQUU7UUFDcEUsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQzNELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBZ0IsQ0FBQztTQUN0QztRQUNELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBMkIsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQ3ZCLE9BQTJCLEVBQ0QsRUFBRTtRQUM1QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVwRCxNQUFNLFdBQVcsbUJBQ2YsTUFBTSxFQUNOLE9BQU8sb0JBQU8sT0FBTyxLQUNsQixDQUFDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3RCLENBQUM7UUFFRixJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNoQixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLElBQUk7b0JBQ0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBNEIsQ0FBQztvQkFDckUsTUFBTSxRQUFRLG1DQUFRLFNBQVMsR0FBSyxTQUFTLENBQUUsQ0FBQztvQkFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxxREFBcUQ7b0JBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUMvQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO2dCQUFDLFdBQU07b0JBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxRQUFRLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUN0RSxxREFBcUQ7b0JBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUNoQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO2FBQ0Y7WUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLGlCQUFpQixDQUFJLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZELE9BQU87Z0JBQ0wsSUFBSTtnQkFDSixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLE9BQU8sRUFBRSxlQUFlO2FBQ3pCLENBQUM7U0FDSDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQzNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtZQUVELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxFQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQUcsR0FBVyxFQUFFO1FBQzlCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsSUFBYSxFQUNiLFVBQW1CLEVBQ1ksRUFBRTtRQUNqQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTVCLElBQUksVUFBVSxJQUFJLElBQUksWUFBWSxRQUFRLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNyQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQThCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUN0RSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtvQkFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxDQUFDLEdBQUcsQ0FDUCxRQUFnQjtZQUVoQixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztZQUU3QixPQUFPLFdBQVcsQ0FBSTtnQkFDcEIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLFFBQVEsRUFBRTtnQkFDNUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7YUFDOUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsUUFBZ0IsRUFDaEIsSUFBYyxFQUNkLFVBQVUsR0FBRyxLQUFLO1lBRWxCLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUVsRCxPQUFPLFdBQVcsQ0FBSTtnQkFDcEIsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLFFBQVEsRUFBRTtnQkFDNUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO2dCQUN6QyxJQUFJO2dCQUNKLFVBQVU7YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsS0FBSyxDQUFDLEdBQUcsQ0FDUCxRQUFnQixFQUNoQixJQUFjO1lBRWQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFckQsT0FBTyxXQUFXLENBQUk7Z0JBQ3BCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLEdBQUcsRUFBRSxHQUFHLE9BQU8sR0FBRyxRQUFRLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUM3QixJQUFJO2FBQ0wsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssQ0FBQyxNQUFNLENBQ1YsUUFBZ0I7WUFFaEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFFN0IsT0FBTyxXQUFXLENBQUk7Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsUUFBUSxFQUFFO2dCQUM1QixPQUFPLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzthQUM5QixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQW5MVyxRQUFBLGdCQUFnQixvQkFtTDNCIn0=