n8n-nodes-smartfetch 0.1.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/LICENSE +674 -0
- package/README.md +65 -0
- package/dist/coverage/favicon.png +0 -0
- package/dist/coverage/sort-arrow-sprite.png +0 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.d.ts +5 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.js +287 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.js.map +1 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.json +18 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.test.d.ts +1 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.test.js +338 -0
- package/dist/nodes/Smartfetch/Smartfetch.node.test.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/index.d.ts +4 -0
- package/dist/nodes/Smartfetch/cache/index.js +23 -0
- package/dist/nodes/Smartfetch/cache/index.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/memory.d.ts +8 -0
- package/dist/nodes/Smartfetch/cache/memory.js +45 -0
- package/dist/nodes/Smartfetch/cache/memory.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/memory.test.d.ts +1 -0
- package/dist/nodes/Smartfetch/cache/memory.test.js +89 -0
- package/dist/nodes/Smartfetch/cache/memory.test.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/postgres.d.ts +23 -0
- package/dist/nodes/Smartfetch/cache/postgres.js +105 -0
- package/dist/nodes/Smartfetch/cache/postgres.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/postgres.test.d.ts +1 -0
- package/dist/nodes/Smartfetch/cache/postgres.test.js +175 -0
- package/dist/nodes/Smartfetch/cache/postgres.test.js.map +1 -0
- package/dist/nodes/Smartfetch/cache/types.d.ts +15 -0
- package/dist/nodes/Smartfetch/cache/types.js +16 -0
- package/dist/nodes/Smartfetch/cache/types.js.map +1 -0
- package/dist/nodes/Smartfetch/smartfetch.dark.svg +13 -0
- package/dist/nodes/Smartfetch/smartfetch.svg +13 -0
- package/dist/package.json +59 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# n8n-nodes-smartfetch
|
|
2
|
+
|
|
3
|
+
An n8n community node that provides HTTP GET requests with built-in caching. Think of it as a superset of the native HTTP Request node, but with simple cache controls that don't overwhelm non-technical users.
|
|
4
|
+
|
|
5
|
+
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- **HTTP GET with caching** - Automatically cache responses to reduce API calls
|
|
14
|
+
- **Flexible cache storage** - Memory (fast, ephemeral) or PostgreSQL (persistent)
|
|
15
|
+
- **Simple TTL controls** - Preset durations (5min, 1hr, 1day, 1week, 1month) or custom
|
|
16
|
+
- **Multiple auth methods** - Basic, Bearer, Digest, Header, and Query authentication
|
|
17
|
+
- **Secure cache keys** - Credentials are hashed (SHA-256) so different auth = different cache
|
|
18
|
+
|
|
19
|
+
## Cache Storage Options
|
|
20
|
+
|
|
21
|
+
### Memory
|
|
22
|
+
- Fast, in-process caching
|
|
23
|
+
- Cleared when n8n restarts
|
|
24
|
+
- Good for development or short-lived caches
|
|
25
|
+
|
|
26
|
+
### PostgreSQL
|
|
27
|
+
- Persistent caching across restarts
|
|
28
|
+
- Auto-creates cache table with schema:
|
|
29
|
+
- `key` (VARCHAR) - hashed cache key
|
|
30
|
+
- `request_url` (TEXT) - original URL for debugging
|
|
31
|
+
- `response` (JSONB) - cached response data
|
|
32
|
+
- `cached_at` (TIMESTAMPTZ) - when cached
|
|
33
|
+
- `ttl` (INT) - time-to-live in seconds
|
|
34
|
+
- Configurable table name (multiple caches per database)
|
|
35
|
+
- SSL enabled by default
|
|
36
|
+
|
|
37
|
+
## Authentication
|
|
38
|
+
|
|
39
|
+
| Method | Description |
|
|
40
|
+
|--------|-------------|
|
|
41
|
+
| None | No authentication |
|
|
42
|
+
| Basic Auth | Username/password via Authorization header |
|
|
43
|
+
| Bearer Auth | Token via Authorization: Bearer header |
|
|
44
|
+
| Digest Auth | Challenge-response authentication |
|
|
45
|
+
| Header Auth | Custom header name/value |
|
|
46
|
+
| Query Auth | API key as query parameter |
|
|
47
|
+
|
|
48
|
+
## Compatibility
|
|
49
|
+
|
|
50
|
+
Tested with n8n version 2.2.4.
|
|
51
|
+
|
|
52
|
+
## Usage
|
|
53
|
+
|
|
54
|
+
1. Add the Smartfetch node to your workflow
|
|
55
|
+
2. Enter the URL to fetch
|
|
56
|
+
3. Select authentication method (if needed)
|
|
57
|
+
4. Choose cache storage (Memory or PostgreSQL)
|
|
58
|
+
5. Set cache duration
|
|
59
|
+
6. Execute!
|
|
60
|
+
|
|
61
|
+
Subsequent executions with the same URL and credentials will return cached responses until TTL expires.
|
|
62
|
+
|
|
63
|
+
## Resources
|
|
64
|
+
|
|
65
|
+
- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class Smartfetch implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Smartfetch = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const cache_1 = require("./cache");
|
|
7
|
+
class Smartfetch {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.description = {
|
|
10
|
+
displayName: 'Smartfetch',
|
|
11
|
+
name: 'smartfetch',
|
|
12
|
+
icon: { light: 'file:smartfetch.svg', dark: 'file:smartfetch.dark.svg' },
|
|
13
|
+
group: ['transform'],
|
|
14
|
+
version: 1,
|
|
15
|
+
subtitle: 'GET with caching',
|
|
16
|
+
description: 'HTTP GET request with built-in caching',
|
|
17
|
+
defaults: {
|
|
18
|
+
name: 'Smartfetch',
|
|
19
|
+
},
|
|
20
|
+
usableAsTool: true,
|
|
21
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
22
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
23
|
+
credentials: [
|
|
24
|
+
{
|
|
25
|
+
name: 'httpBasicAuth',
|
|
26
|
+
required: true,
|
|
27
|
+
displayOptions: { show: { authentication: ['httpBasicAuth'] } },
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'httpBearerAuth',
|
|
31
|
+
required: true,
|
|
32
|
+
displayOptions: { show: { authentication: ['httpBearerAuth'] } },
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'httpDigestAuth',
|
|
36
|
+
required: true,
|
|
37
|
+
displayOptions: { show: { authentication: ['httpDigestAuth'] } },
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'httpHeaderAuth',
|
|
41
|
+
required: true,
|
|
42
|
+
displayOptions: { show: { authentication: ['httpHeaderAuth'] } },
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'httpQueryAuth',
|
|
46
|
+
required: true,
|
|
47
|
+
displayOptions: { show: { authentication: ['httpQueryAuth'] } },
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'postgres',
|
|
51
|
+
required: true,
|
|
52
|
+
displayOptions: { show: { cacheStorage: ['postgres'] } },
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
properties: [
|
|
56
|
+
{
|
|
57
|
+
displayName: 'URL',
|
|
58
|
+
name: 'url',
|
|
59
|
+
type: 'string',
|
|
60
|
+
default: '',
|
|
61
|
+
required: true,
|
|
62
|
+
placeholder: 'https://api.example.com/data',
|
|
63
|
+
description: 'The URL to fetch',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Authentication',
|
|
67
|
+
name: 'authentication',
|
|
68
|
+
type: 'options',
|
|
69
|
+
options: [
|
|
70
|
+
{ name: 'Basic Auth', value: 'httpBasicAuth' },
|
|
71
|
+
{ name: 'Bearer Auth', value: 'httpBearerAuth' },
|
|
72
|
+
{ name: 'Digest Auth', value: 'httpDigestAuth' },
|
|
73
|
+
{ name: 'Header Auth', value: 'httpHeaderAuth' },
|
|
74
|
+
{ name: 'None', value: 'none' },
|
|
75
|
+
{ name: 'Query Auth', value: 'httpQueryAuth' },
|
|
76
|
+
],
|
|
77
|
+
default: 'none',
|
|
78
|
+
description: 'The authentication method to use',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
displayName: 'Cache Storage',
|
|
82
|
+
name: 'cacheStorage',
|
|
83
|
+
type: 'options',
|
|
84
|
+
options: [
|
|
85
|
+
{
|
|
86
|
+
name: 'Memory',
|
|
87
|
+
value: 'memory',
|
|
88
|
+
description: 'Fast, but cleared when n8n restarts',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'PostgreSQL',
|
|
92
|
+
value: 'postgres',
|
|
93
|
+
description: 'Persistent cache in PostgreSQL database',
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
default: 'memory',
|
|
97
|
+
description: 'Where to store cached responses',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
displayName: 'Cache Table Name',
|
|
101
|
+
name: 'cacheTableName',
|
|
102
|
+
type: 'string',
|
|
103
|
+
default: 'smartfetch_cache',
|
|
104
|
+
placeholder: 'e.g. smartfetch_cache',
|
|
105
|
+
displayOptions: {
|
|
106
|
+
show: {
|
|
107
|
+
cacheStorage: ['postgres'],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
required: true,
|
|
111
|
+
description: 'PostgreSQL table name for cache (will be created if it does not exist)',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
displayName: 'Cache Duration',
|
|
115
|
+
name: 'cacheDuration',
|
|
116
|
+
type: 'options',
|
|
117
|
+
options: [
|
|
118
|
+
{ name: '5 Minutes', value: 300 },
|
|
119
|
+
{ name: '1 Hour', value: 3600 },
|
|
120
|
+
{ name: '1 Day', value: 86400 },
|
|
121
|
+
{ name: '1 Week', value: 604800 },
|
|
122
|
+
{ name: '1 Month', value: 2592000 },
|
|
123
|
+
{ name: 'Custom', value: 'custom' },
|
|
124
|
+
],
|
|
125
|
+
default: 3600,
|
|
126
|
+
description: 'How long to cache responses',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
displayName: 'Custom TTL (Seconds)',
|
|
130
|
+
name: 'customTtl',
|
|
131
|
+
type: 'number',
|
|
132
|
+
default: 3600,
|
|
133
|
+
displayOptions: {
|
|
134
|
+
show: {
|
|
135
|
+
cacheDuration: ['custom'],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
description: 'Custom cache duration in seconds',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async execute() {
|
|
144
|
+
const items = this.getInputData();
|
|
145
|
+
const returnData = [];
|
|
146
|
+
let cacheAdapter;
|
|
147
|
+
let postgresAdapter = null;
|
|
148
|
+
const cacheStorage = this.getNodeParameter('cacheStorage', 0);
|
|
149
|
+
if (cacheStorage === 'postgres') {
|
|
150
|
+
const credentials = (await this.getCredentials('postgres'));
|
|
151
|
+
const tableName = this.getNodeParameter('cacheTableName', 0);
|
|
152
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {
|
|
153
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Cache table name must start with a letter or underscore and contain only alphanumeric characters and underscores');
|
|
154
|
+
}
|
|
155
|
+
if (tableName.length > 63) {
|
|
156
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Cache table name must be 63 characters or less (PostgreSQL identifier limit)');
|
|
157
|
+
}
|
|
158
|
+
postgresAdapter = new cache_1.PostgresCacheAdapter(credentials, tableName);
|
|
159
|
+
cacheAdapter = postgresAdapter;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
cacheAdapter = new cache_1.MemoryCacheAdapter();
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
for (let i = 0; i < items.length; i++) {
|
|
166
|
+
const url = this.getNodeParameter('url', i);
|
|
167
|
+
const authentication = this.getNodeParameter('authentication', i);
|
|
168
|
+
const cacheDuration = this.getNodeParameter('cacheDuration', i);
|
|
169
|
+
let ttl;
|
|
170
|
+
if (cacheDuration === 'custom') {
|
|
171
|
+
ttl = this.getNodeParameter('customTtl', i);
|
|
172
|
+
if (!Number.isFinite(ttl) || ttl <= 0 || ttl > 31536000) {
|
|
173
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Custom TTL must be a positive number between 1 and 31536000 seconds (1 year)', { itemIndex: i });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
ttl = cacheDuration;
|
|
178
|
+
}
|
|
179
|
+
let credentialHash;
|
|
180
|
+
if (authentication !== 'none') {
|
|
181
|
+
const credentials = await this.getCredentials(authentication);
|
|
182
|
+
const credentialString = JSON.stringify(credentials);
|
|
183
|
+
credentialHash = (0, crypto_1.createHash)('sha256').update(credentialString).digest('hex');
|
|
184
|
+
}
|
|
185
|
+
const cacheKey = (0, cache_1.generateCacheKey)(url, credentialHash);
|
|
186
|
+
const cachedEntry = await cacheAdapter.get(cacheKey);
|
|
187
|
+
if (cachedEntry && (0, cache_1.isCacheValid)(cachedEntry)) {
|
|
188
|
+
try {
|
|
189
|
+
returnData.push({
|
|
190
|
+
json: JSON.parse(cachedEntry.response),
|
|
191
|
+
pairedItem: { item: i },
|
|
192
|
+
});
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
try {
|
|
197
|
+
await cacheAdapter.delete(cacheKey);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
let response;
|
|
205
|
+
const requestOptions = {
|
|
206
|
+
method: 'GET',
|
|
207
|
+
url,
|
|
208
|
+
json: true,
|
|
209
|
+
};
|
|
210
|
+
if (authentication === 'none') {
|
|
211
|
+
response = (await this.helpers.httpRequest(requestOptions));
|
|
212
|
+
}
|
|
213
|
+
else if (authentication === 'httpBasicAuth') {
|
|
214
|
+
const credentials = await this.getCredentials('httpBasicAuth');
|
|
215
|
+
const basicAuth = Buffer.from(`${credentials.user}:${credentials.password}`).toString('base64');
|
|
216
|
+
requestOptions.headers = {
|
|
217
|
+
Authorization: `Basic ${basicAuth}`,
|
|
218
|
+
};
|
|
219
|
+
response = (await this.helpers.httpRequest(requestOptions));
|
|
220
|
+
}
|
|
221
|
+
else if (authentication === 'httpBearerAuth') {
|
|
222
|
+
const credentials = await this.getCredentials('httpBearerAuth');
|
|
223
|
+
requestOptions.headers = {
|
|
224
|
+
Authorization: `Bearer ${credentials.token}`,
|
|
225
|
+
};
|
|
226
|
+
response = (await this.helpers.httpRequest(requestOptions));
|
|
227
|
+
}
|
|
228
|
+
else if (authentication === 'httpDigestAuth') {
|
|
229
|
+
const credentials = await this.getCredentials('httpDigestAuth');
|
|
230
|
+
response = (await this.helpers.httpRequest({
|
|
231
|
+
...requestOptions,
|
|
232
|
+
auth: {
|
|
233
|
+
username: credentials.user,
|
|
234
|
+
password: credentials.password,
|
|
235
|
+
sendImmediately: false,
|
|
236
|
+
},
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
else if (authentication === 'httpQueryAuth') {
|
|
240
|
+
const credentials = await this.getCredentials('httpQueryAuth');
|
|
241
|
+
const separator = requestOptions.url.includes('?') ? '&' : '?';
|
|
242
|
+
const encodedName = encodeURIComponent(credentials.name);
|
|
243
|
+
const encodedValue = encodeURIComponent(credentials.value);
|
|
244
|
+
requestOptions.url = `${requestOptions.url}${separator}${encodedName}=${encodedValue}`;
|
|
245
|
+
response = (await this.helpers.httpRequest(requestOptions));
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
response = (await this.helpers.httpRequestWithAuthentication.call(this, authentication, requestOptions));
|
|
249
|
+
}
|
|
250
|
+
await cacheAdapter.set({
|
|
251
|
+
key: cacheKey,
|
|
252
|
+
requestUrl: url,
|
|
253
|
+
response: JSON.stringify(response),
|
|
254
|
+
cachedAt: Date.now(),
|
|
255
|
+
ttl,
|
|
256
|
+
});
|
|
257
|
+
returnData.push({
|
|
258
|
+
json: response,
|
|
259
|
+
pairedItem: { item: i },
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
returnData.push({
|
|
264
|
+
json: {
|
|
265
|
+
error: true,
|
|
266
|
+
message: error instanceof Error ? error.message : String(error),
|
|
267
|
+
url,
|
|
268
|
+
},
|
|
269
|
+
pairedItem: { item: i },
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
finally {
|
|
275
|
+
if (postgresAdapter) {
|
|
276
|
+
try {
|
|
277
|
+
await postgresAdapter.close();
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return [returnData];
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
exports.Smartfetch = Smartfetch;
|
|
287
|
+
//# sourceMappingURL=Smartfetch.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Smartfetch.node.js","sourceRoot":"","sources":["../../../nodes/Smartfetch/Smartfetch.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-smartfetch",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Development", "Developer Tools"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://github.com/meetbryce/n8n-nodes-smartfetch#authentication"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://github.com/meetbryce/n8n-nodes-smartfetch#readme"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|