@socialgouv/fiches-travail-data-types 4.625.0 → 4.627.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,15 +8,12 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const got_1 = __importDefault(require("got"));
9
9
  const p_limit_1 = __importDefault(require("p-limit"));
10
10
  const path_1 = __importDefault(require("path"));
11
- const generateHeaders_1 = require("./generateHeaders");
11
+ const injectToken_1 = require("./injectToken");
12
12
  const scrapUrl_1 = require("./scrapUrl");
13
13
  const FEED_URL = "https://travail-emploi.gouv.fr/?page=oseo_json";
14
14
  const limit = (0, p_limit_1.default)(10);
15
15
  async function fetchFeed(url) {
16
- const response = await got_1.default.post(url, {
17
- headers: (0, generateHeaders_1.generateHeaders)({
18
- "Content-Type": "application/json",
19
- }),
16
+ const response = await got_1.default.post((0, injectToken_1.injectToken)(url), {
20
17
  http2: true,
21
18
  retry: 3,
22
19
  });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Inject a specific token to bypass bot protection
3
+ */
4
+ export function injectToken(url: any): string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.injectToken = void 0;
4
+ /**
5
+ * Inject a specific token to bypass bot protection
6
+ */
7
+ function injectToken(url) {
8
+ if (!process.env.TOKEN_MT) {
9
+ throw Error("Token (cgtoken) is required to fetch the data. This token is provided by the travail-emploi.gouv.fr team.");
10
+ }
11
+ if (url.includes("?")) {
12
+ return `${url}&cgtoken=${process.env.TOKEN_MT}`;
13
+ }
14
+ else {
15
+ return `${url}?cgtoken=${process.env.TOKEN_MT}`;
16
+ }
17
+ }
18
+ exports.injectToken = injectToken;
@@ -6,23 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.scrapUrl = void 0;
7
7
  const got_1 = __importDefault(require("got"));
8
8
  const jsdom_1 = require("jsdom");
9
- const generateHeaders_1 = require("./generateHeaders");
9
+ const injectToken_1 = require("./injectToken");
10
10
  const parseDom_1 = require("./parseDom");
11
11
  async function scrapUrl(id, url) {
12
- const headers = (0, generateHeaders_1.generateHeaders)();
13
12
  try {
14
- let response = await (0, got_1.default)(url, {
13
+ let response = await (0, got_1.default)((0, injectToken_1.injectToken)(url), {
15
14
  followRedirect: true,
16
- headers,
17
15
  http2: true,
18
16
  retry: 3,
19
17
  });
20
18
  if (/HTTP 30\d/.test(response.body)) {
21
19
  const [, redirectUrl] = response.body.match(/href="(.*)"/);
22
20
  try {
23
- response = await (0, got_1.default)(redirectUrl, {
21
+ response = await (0, got_1.default)((0, injectToken_1.injectToken)(redirectUrl), {
24
22
  followRedirect: true,
25
- headers,
26
23
  http2: true,
27
24
  retry: 3,
28
25
  });
@@ -41,7 +38,7 @@ async function scrapUrl(id, url) {
41
38
  err = new Error(`Parsing Error: ${error.message}`);
42
39
  }
43
40
  else if (error instanceof got_1.default.HTTPError) {
44
- err = new Error(`HTTP Error: ${error.response.statusCode} - ${error.options.url.href} - ${error.message}`);
41
+ err = new Error(`HTTP Error: ${error.response.statusCode} - ${url} - ${error.message}`);
45
42
  }
46
43
  else {
47
44
  err = new Error(error.message);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@socialgouv/fiches-travail-data-types",
3
- "version": "4.625.0",
3
+ "version": "4.627.0",
4
4
  "main": "build/index.js",
5
5
  "module": "build/index.js",
6
6
  "files": [
@@ -1,4 +0,0 @@
1
- /**
2
- * Build the header for request with a specific token to bypass bot protection
3
- */
4
- export function generateHeaders(extras: any): any;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateHeaders = void 0;
4
- /**
5
- * Build the header for request with a specific token to bypass bot protection
6
- */
7
- function generateHeaders(extras) {
8
- if (!process.env.TOKEN_MT) {
9
- throw Error("Token (cgtoken) is required to fetch the data. This token is provided by the travail-emploi.gouv.fr team.");
10
- }
11
- return {
12
- ...extras,
13
- Cookie: `cgtoken=${process.env.TOKEN_MT};`,
14
- };
15
- }
16
- exports.generateHeaders = generateHeaders;