UNPKG

jobsuche-api-js

Version:

A JavaScript wrapper for the Arbeitsagentur jobs API, allowing developers to easily integrate job search functionality into their applications.

78 lines (77 loc) 3.08 kB
import axios from "axios"; import { paramsToAlias } from "../helpers/paramsToAlias"; import { headers, jobLink } from "../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 ? 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.get(jobLink, { 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.CancelToken.source(); const translatedParams = params ? paramsToAlias(params) : undefined; // const headers = { // "X-Api-Key": "jobboerse-jobsuche", // }; try { const response = await axios.get(jobLink, { 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.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; } } export { jobsSearchOld, jobsSearch };