n8n-nodes-withings 0.6.2 → 0.7.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.
package/README.md CHANGED
@@ -135,6 +135,17 @@ Most operations support the following parameters:
135
135
 
136
136
  ## Version History
137
137
 
138
+ - 0.7.0: **Major refactoring for improved code quality and maintainability**
139
+ - Restructured codebase with better separation of concerns
140
+ - Reduced main node file from 1065 to 627 lines (-41%)
141
+ - Added comprehensive TypeScript interfaces and type safety
142
+ - Centralized all constants and configuration
143
+ - Extracted token refresh logic into reusable helper functions
144
+ - Added extensive JSDoc documentation throughout codebase
145
+ - Eliminated code duplication in validation and retry logic
146
+ - Improved error handling with proper n8n error types
147
+ - No breaking changes - all functionality maintained
148
+ - 0.6.3: Fixed "Unable to sign without access token" error in sleep summary endpoint with enhanced token validation and special handling for sleep-related requests
138
149
  - 0.6.2: Fixed "This scope is not allowed" error by ensuring proper scope formatting with "user." prefix in authorization URL
139
150
  - 0.6.1: Version update for release
140
151
  - 0.6.0: Implemented signature generation and nonce retrieval for enhanced security based on withings-node-oauth2 library
@@ -10,7 +10,7 @@ export declare class WithingsOAuth2Api implements ICredentialType {
10
10
  tokenDataPostReceiveProcess: {
11
11
  includeCredentialsOnRefreshOnBody: boolean;
12
12
  preSend: (requestOptions: IHttpRequestOptions, credentials: IDataObject) => Promise<IHttpRequestOptions>;
13
- expiresIn: number;
13
+ expiresIn: 15;
14
14
  autoRefresh: boolean;
15
15
  format: string;
16
16
  property: string;
@@ -37,6 +37,7 @@ exports.WithingsOAuth2Api = void 0;
37
37
  const https = __importStar(require("https"));
38
38
  const process = __importStar(require("process"));
39
39
  const withings_1 = require("../utils/withings");
40
+ const constants_1 = require("../utils/constants");
40
41
  class WithingsOAuth2Api {
41
42
  constructor() {
42
43
  this.name = 'withingsOAuth2Api';
@@ -56,13 +57,13 @@ class WithingsOAuth2Api {
56
57
  displayName: 'Authorization URL',
57
58
  name: 'authUrl',
58
59
  type: 'hidden',
59
- default: 'https://account.withings.com/oauth2_user/authorize2',
60
+ default: constants_1.WITHINGS_API.AUTH_URL,
60
61
  },
61
62
  {
62
63
  displayName: 'Access Token URL',
63
64
  name: 'accessTokenUrl',
64
65
  type: 'hidden',
65
- default: 'https://wbsapi.withings.net/v2/oauth2?action=requesttoken',
66
+ default: constants_1.WITHINGS_API.TOKEN_URL,
66
67
  },
67
68
  {
68
69
  displayName: 'Client ID',
@@ -87,7 +88,7 @@ class WithingsOAuth2Api {
87
88
  displayName: 'Scope',
88
89
  name: 'scope',
89
90
  type: 'string',
90
- default: 'user.info,user.metrics,user.activity,user.sleepevents',
91
+ default: constants_1.DEFAULT_SCOPES,
91
92
  description: 'Comma-separated list of scopes with the "user." prefix. Common scopes: user.info, user.metrics, user.activity, user.sleepevents',
92
93
  },
93
94
  ];
@@ -108,9 +109,7 @@ class WithingsOAuth2Api {
108
109
  if (!requestOptions.headers) {
109
110
  requestOptions.headers = {};
110
111
  }
111
- requestOptions.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
112
- requestOptions.headers['Pragma'] = 'no-cache';
113
- requestOptions.headers['Expires'] = '0';
112
+ Object.assign(requestOptions.headers, constants_1.CACHE_HEADERS);
114
113
  if (credentials.clientId && credentials.clientSecret) {
115
114
  try {
116
115
  const nonce = await (0, withings_1.getNonce)(credentials.clientId, credentials.clientSecret, async (options) => {
@@ -158,7 +157,7 @@ class WithingsOAuth2Api {
158
157
  }
159
158
  return requestOptions;
160
159
  },
161
- expiresIn: 15,
160
+ expiresIn: constants_1.TOKEN_CONFIG.EXPIRES_IN,
162
161
  autoRefresh: true,
163
162
  format: 'json',
164
163
  property: 'body',
@@ -172,8 +171,7 @@ class WithingsOAuth2Api {
172
171
  properties: {
173
172
  headers: {
174
173
  Authorization: '=Bearer {{$credentials.accessToken}}',
175
- 'Cache-Control': 'no-cache, no-store, must-revalidate',
176
- 'Pragma': 'no-cache',
174
+ ...constants_1.CACHE_HEADERS,
177
175
  'X-Request-Timestamp': '={{Date.now()}}',
178
176
  },
179
177
  qs: {
@@ -183,7 +181,7 @@ class WithingsOAuth2Api {
183
181
  };
184
182
  this.test = {
185
183
  request: {
186
- baseURL: 'https://wbsapi.withings.net',
184
+ baseURL: constants_1.WITHINGS_API.BASE_URL,
187
185
  url: '/v2/user',
188
186
  method: 'GET',
189
187
  qs: {
@@ -192,10 +190,9 @@ class WithingsOAuth2Api {
192
190
  },
193
191
  headers: {
194
192
  'Accept': 'application/json',
195
- 'Cache-Control': 'no-cache, no-store, must-revalidate',
196
- 'Pragma': 'no-cache',
193
+ ...constants_1.CACHE_HEADERS,
197
194
  },
198
- timeout: 10000,
195
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
199
196
  },
200
197
  };
201
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WithingsOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/WithingsOAuth2Api.credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WithingsOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/WithingsOAuth2Api.credentials.ts"],"names":[],"mappings":"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"}