@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
JavaScript
;
/**
* 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