jobsuche-api-js
Version:
A JavaScript wrapper for the Arbeitsagentur jobs API, allowing developers to easily integrate job search functionality into their applications.
84 lines (83 loc) • 3.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.jobsSearchOld = jobsSearchOld;
exports.jobsSearch = jobsSearch;
const axios_1 = __importDefault(require("axios"));
const paramsToAlias_1 = require("../helpers/paramsToAlias");
const urls_1 = require("../constants/urls");
// const authManager = new AuthManager(
// 'c003a37f-024f-462a-b36d-b001be4cd24a',
// '32a39620-32b3-4307-9aa1-511e3d7f48a8'
// );
const DEFAULT_TIMEOUT = 10000; // 10 seconds
let cancelTokenSource = null;
/**
* Fetches job search results based on the provided parameters.
* @param {Partial<IArbeitsAgenturJobArgsProps>} [params] - The search parameters (optional).
* @returns {Promise<JobSearchResponse | null>} - The job search results.
*/
async function jobsSearchOld(params) {
const translatedParams = params ? (0, paramsToAlias_1.paramsToAlias)(params) : undefined;
try {
// NOTE No need for this anymore.
// const accessToken = await authManager.getAccessToken();
// header.OAuthAccessToken = accessToken;
// NOTE use this for authorization.
// header["X-Api-Key"] = "jobboerse-jobsuche";
const response = await axios_1.default.get(urls_1.jobLink, {
headers: urls_1.headers,
params: translatedParams,
});
const data = response.data;
return data;
}
catch (error) {
console.error("Error fetching job search results:", error.message);
return null;
}
}
/**
* @function jobsSearch without OAuth access token it is using the new auth header "X-Api-Key"
* Fetches job search results based on the provided parameters.
* @param {Partial<IArbeitsAgenturJobArgsProps>} [params] - The search parameters (optional).
* @returns {Promise<JobSearchResponse | null>} - The job search results.
*/
async function jobsSearch(params) {
var _a;
if (cancelTokenSource) {
cancelTokenSource.cancel("Operation canceled due to new request.");
}
cancelTokenSource = axios_1.default.CancelToken.source();
const translatedParams = params ? (0, paramsToAlias_1.paramsToAlias)(params) : undefined;
// const headers = {
// "X-Api-Key": "jobboerse-jobsuche",
// };
try {
const response = await axios_1.default.get(urls_1.jobLink, {
headers: urls_1.headers,
params: translatedParams,
timeout: DEFAULT_TIMEOUT, // Add timeout here
cancelToken: cancelTokenSource.token,
});
cancelTokenSource = null; // reset cancel token
const data = response.data;
return data;
}
catch (error) {
if (axios_1.default.isAxiosError(error)) {
console.warn("====error GET JOB DETAILS V3 FUNCTION====", error.message);
// Retry on timeout
if (error.code === "ECONNABORTED" || ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
console.log("Retrying to fetch job details...");
// Optional: Add a small delay before retrying
await new Promise((resolve) => setTimeout(resolve, 1000));
return await jobsSearch(); // Retry the function
}
}
console.error("Error fetching job search results:", error.message);
return null;
}
}