UNPKG

@lineai/gov-deals

Version:

Explore Federal contracts for government building renovations, city hall renovations, courthouse updates, library modernizations, federal building improvement contracts, base housing and facilities upgrades.

74 lines 4.91 kB
"use strict"; /** * SAM.gov API Client */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SamClient = void 0; const axios_1 = __importDefault(require("axios")); const errors_1 = require("../../core/errors"); /** * Simple SAM.gov API client */ class SamClient { constructor(options) { if (!options.apiKey) { throw new Error('SAM.gov API key is required'); } this.apiKey = options.apiKey; this.axios = axios_1.default.create({ baseURL: options.baseUrl || 'https://api.sam.gov/prod', timeout: options.timeout || 30000, headers: { 'Accept': 'application/json', }, }); } /** * Make a GET request */ async get(path, params) { try { // Always add API key to query parameters const allParams = Object.assign({ api_key: this.apiKey }, params); const response = await this.axios.get(path, { params: allParams }); return response.data; } catch (error) { this.handleError(error); } } /** * Make a POST request */ async post(path, data, params) { try { // Always add API key to query parameters const allParams = Object.assign({ api_key: this.apiKey }, params); const response = await this.axios.post(path, data, { params: allParams }); return response.data; } catch (error) { this.handleError(error); } } /** * Handle errors */ handleError(error) { var _a, _b, _c, _d; if (axios_1.default.isAxiosError(error)) { const status = (_a = error.response) === null || _a === void 0 ? void 0 : _a.status; const message = ((_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message) || error.message; if (status === 401 || status === 403) { throw new errors_1.AuthenticationError(`Authentication failed: ${message}`); } throw new errors_1.ApiError(`SAM.gov API error: ${message}`, status, (_d = error.response) === null || _d === void 0 ? void 0 : _d.data); } throw error; } } exports.SamClient = SamClient; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudHMvc2FtL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7OztBQUVILGtEQUE2QztBQUM3Qyw4Q0FBa0U7QUFRbEU7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFJcEIsWUFBWSxPQUF5QjtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLDBCQUEwQjtZQUN0RCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLO1lBQ2pDLE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBSSxJQUFZLEVBQUUsTUFBNEI7UUFDckQsSUFBSTtZQUNGLHlDQUF5QztZQUN6QyxNQUFNLFNBQVMsbUJBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQ2pCLE1BQU0sQ0FDVixDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN0RSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFJLElBQVksRUFBRSxJQUFjLEVBQUUsTUFBNEI7UUFDdEUsSUFBSTtZQUNGLHlDQUF5QztZQUN6QyxNQUFNLFNBQVMsbUJBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQ2pCLE1BQU0sQ0FDVixDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDN0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLEtBQVU7O1FBQzVCLElBQUksZUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE1BQU0sQ0FBQztZQUN0QyxNQUFNLE9BQU8sR0FBRyxDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxJQUFJLDBDQUFFLE9BQU8sS0FBSSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBRS9ELElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUNwQyxNQUFNLElBQUksNEJBQW1CLENBQUMsMEJBQTBCLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDcEU7WUFFRCxNQUFNLElBQUksaUJBQVEsQ0FDaEIsc0JBQXNCLE9BQU8sRUFBRSxFQUMvQixNQUFNLEVBQ04sTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxJQUFJLENBQ3JCLENBQUM7U0FDSDtRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBNUVELDhCQTRFQyJ9