n8n-nodes-jygse-vw-weconnect 0.2.14 → 0.2.15

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.
@@ -40,6 +40,8 @@ exports.VwWeConnect = void 0;
40
40
  const n8n_workflow_1 = require("n8n-workflow");
41
41
  const crypto = __importStar(require("crypto"));
42
42
  const axios_1 = __importDefault(require("axios"));
43
+ const axios_cookiejar_support_1 = require("axios-cookiejar-support");
44
+ const tough_cookie_1 = require("tough-cookie");
43
45
  class VwWeConnect {
44
46
  constructor() {
45
47
  this.description = {
@@ -220,6 +222,9 @@ async function vwLogin(context, email, password) {
220
222
  const state = generateTraceId(); // Use UUID as state
221
223
  const traceId = generateTraceId(); // For weconnect-trace-id header
222
224
  const codeVerifier = generateCodeVerifier();
225
+ // Create cookie jar for session management (like ioBroker)
226
+ const jar = new tough_cookie_1.CookieJar();
227
+ const client = (0, axios_cookiejar_support_1.wrapper)(axios_1.default.create({ jar }));
223
228
  // Browser-like headers (EXACTLY from ioBroker.vw-connect)
224
229
  const browserHeaders = {
225
230
  'User-Agent': VW_USER_AGENT,
@@ -242,9 +247,8 @@ async function vwLogin(context, email, password) {
242
247
  '&state=' + state +
243
248
  '&code_challenge=' + codeChallenge +
244
249
  '&code_challenge_method=S256';
245
- // Use axios directly to have full control over redirect handling
246
- // n8n's httpRequest helper has issues with custom scheme redirects
247
- const authorizeResponse = await axios_1.default.get(authorizeUrl, {
250
+ // Use axios with cookie jar for session management
251
+ const authorizeResponse = await client.get(authorizeUrl, {
248
252
  headers: browserHeaders,
249
253
  maxRedirects: 0, // Don't follow any redirects
250
254
  validateStatus: () => true, // Accept any status code
@@ -302,9 +306,9 @@ async function vwLogin(context, email, password) {
302
306
  if (!currentUrl.startsWith('http') && !currentUrl.startsWith('/')) {
303
307
  break;
304
308
  }
305
- // Follow the redirect using axios
309
+ // Follow the redirect using axios with cookie jar
306
310
  const followUrl = currentUrl.startsWith('http') ? currentUrl : `https://identity.vwgroup.io${currentUrl}`;
307
- const followResponse = await axios_1.default.get(followUrl, {
311
+ const followResponse = await client.get(followUrl, {
308
312
  headers: browserHeaders,
309
313
  maxRedirects: 0,
310
314
  validateStatus: () => true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-jygse-vw-weconnect",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "n8n community node for VW We Connect - Control your Volkswagen T6.1 and other VW vehicles",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -44,10 +44,13 @@
44
44
  ]
45
45
  },
46
46
  "dependencies": {
47
- "axios": "^1.6.0"
47
+ "axios": "^1.6.0",
48
+ "axios-cookiejar-support": "^5.0.0",
49
+ "tough-cookie": "^4.1.0"
48
50
  },
49
51
  "devDependencies": {
50
52
  "@types/node": "^20.10.0",
53
+ "@types/tough-cookie": "^4.0.5",
51
54
  "@typescript-eslint/parser": "^6.0.0",
52
55
  "eslint": "^8.56.0",
53
56
  "gulp": "^4.0.2",