@sinehypernova-0718/n8n-nodes-pinterest 0.1.1 → 0.1.2
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 +111 -9
- package/dist/n8n-logo-black-accent.svg +17 -0
- package/dist/nodes/Pinterest/Pinterest.node.js +125 -37
- package/dist/nodes/Pinterest/Pinterest.node.js.map +1 -1
- package/dist/nodes/Pinterest/Pinterest.node.json +1 -1
- package/dist/nodes/Pinterest/constants.d.ts +1 -0
- package/dist/nodes/Pinterest/constants.js +5 -0
- package/dist/nodes/Pinterest/constants.js.map +1 -0
- package/dist/nodes/Pinterest/descriptions/MediaDescriptions.d.ts +2 -0
- package/dist/nodes/Pinterest/descriptions/MediaDescriptions.js +168 -0
- package/dist/nodes/Pinterest/descriptions/MediaDescriptions.js.map +1 -0
- package/dist/nodes/Pinterest/descriptions/PinDescriptions.js +90 -0
- package/dist/nodes/Pinterest/descriptions/PinDescriptions.js.map +1 -1
- package/dist/nodes/Pinterest/descriptions/index.d.ts +1 -0
- package/dist/nodes/Pinterest/descriptions/index.js +3 -1
- package/dist/nodes/Pinterest/descriptions/index.js.map +1 -1
- package/dist/nodes/Pinterest/requests/index.d.ts +2 -1
- package/dist/nodes/Pinterest/requests/index.js +11 -1
- package/dist/nodes/Pinterest/requests/index.js.map +1 -1
- package/dist/nodes/Pinterest/requests/media/get.d.ts +2 -0
- package/dist/nodes/Pinterest/requests/media/get.js +26 -0
- package/dist/nodes/Pinterest/requests/media/get.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/index.d.ts +4 -0
- package/dist/nodes/Pinterest/requests/media/index.js +13 -0
- package/dist/nodes/Pinterest/requests/media/index.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/list.d.ts +2 -0
- package/dist/nodes/Pinterest/requests/media/list.js +38 -0
- package/dist/nodes/Pinterest/requests/media/list.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/multipart.d.ts +11 -0
- package/dist/nodes/Pinterest/requests/media/multipart.js +49 -0
- package/dist/nodes/Pinterest/requests/media/multipart.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/normalize.d.ts +7 -0
- package/dist/nodes/Pinterest/requests/media/normalize.js +49 -0
- package/dist/nodes/Pinterest/requests/media/normalize.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/upload.d.ts +2 -0
- package/dist/nodes/Pinterest/requests/media/upload.js +321 -0
- package/dist/nodes/Pinterest/requests/media/upload.js.map +1 -0
- package/dist/nodes/Pinterest/requests/media/validateUploadUrl.d.ts +5 -0
- package/dist/nodes/Pinterest/requests/media/validateUploadUrl.js +48 -0
- package/dist/nodes/Pinterest/requests/media/validateUploadUrl.js.map +1 -0
- package/dist/nodes/Pinterest/requests/pin/index.d.ts +1 -0
- package/dist/nodes/Pinterest/requests/pin/index.js +6 -1
- package/dist/nodes/Pinterest/requests/pin/index.js.map +1 -1
- package/dist/nodes/Pinterest/requests/pin/productTags.d.ts +5 -0
- package/dist/nodes/Pinterest/requests/pin/productTags.js +109 -0
- package/dist/nodes/Pinterest/requests/pin/productTags.js.map +1 -0
- package/dist/package.json +2 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IDataObject, INode } from 'n8n-workflow';
|
|
2
|
+
export interface NormalizeMediaOptions {
|
|
3
|
+
requireStatus?: boolean;
|
|
4
|
+
requireVideoType?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function normalizeMediaUpload(value: unknown, node: INode, itemIndex: number, options?: NormalizeMediaOptions): IDataObject;
|
|
7
|
+
export declare function normalizeMediaUploadList(value: unknown, node: INode, itemIndex: number): IDataObject[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeMediaUpload = normalizeMediaUpload;
|
|
4
|
+
exports.normalizeMediaUploadList = normalizeMediaUploadList;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const MEDIA_STATUS_VALUES = new Set(['registered', 'processing', 'succeeded', 'failed']);
|
|
7
|
+
function isDataObject(value) {
|
|
8
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function normalizeMediaUpload(value, node, itemIndex, options = {}) {
|
|
11
|
+
if (!isDataObject(value)) {
|
|
12
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an invalid media upload response', {
|
|
13
|
+
itemIndex,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const mediaId = value.media_id;
|
|
17
|
+
if (typeof mediaId !== 'string' || !/^\d+$/.test(mediaId)) {
|
|
18
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload response without a valid media ID', { itemIndex });
|
|
19
|
+
}
|
|
20
|
+
const mediaType = value.media_type;
|
|
21
|
+
if (typeof mediaType !== 'string' || mediaType.trim() === '') {
|
|
22
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload response without a valid media type', { itemIndex });
|
|
23
|
+
}
|
|
24
|
+
if (options.requireVideoType === true && mediaType !== 'video') {
|
|
25
|
+
throw new n8n_workflow_1.NodeOperationError(node, `Pinterest returned an unexpected media type "${mediaType}" for a video upload`, { itemIndex });
|
|
26
|
+
}
|
|
27
|
+
const status = value.status;
|
|
28
|
+
if (status !== undefined && (typeof status !== 'string' || !MEDIA_STATUS_VALUES.has(status))) {
|
|
29
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an unrecognized media upload status', { itemIndex });
|
|
30
|
+
}
|
|
31
|
+
if (options.requireStatus === true && typeof status !== 'string') {
|
|
32
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload response without a status', { itemIndex });
|
|
33
|
+
}
|
|
34
|
+
const normalized = {
|
|
35
|
+
media_id: mediaId,
|
|
36
|
+
media_type: mediaType,
|
|
37
|
+
};
|
|
38
|
+
if (typeof status === 'string') {
|
|
39
|
+
normalized.status = status;
|
|
40
|
+
}
|
|
41
|
+
return normalized;
|
|
42
|
+
}
|
|
43
|
+
function normalizeMediaUploadList(value, node, itemIndex) {
|
|
44
|
+
if (!isDataObject(value) || !Array.isArray(value.items)) {
|
|
45
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an invalid media upload list response', { itemIndex });
|
|
46
|
+
}
|
|
47
|
+
return value.items.map((item) => normalizeMediaUpload(item, node, itemIndex));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/media/normalize.ts"],"names":[],"mappings":";;AAqBA,oDA8DC;AAED,4DAcC;AAlGD,+CAAkD;AAElD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAOzF,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AASD,SAAgB,oBAAoB,CACnC,KAAc,EACd,IAAW,EACX,SAAiB,EACjB,UAAiC,EAAE;IAEnC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,iCAAkB,CAAC,IAAI,EAAE,qDAAqD,EAAE;YACzF,SAAS;SACT,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,qEAAqE,EACrE,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;IACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,uEAAuE,EACvE,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAChE,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,gDAAgD,SAAS,sBAAsB,EAC/E,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,wDAAwD,EACxD,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,6DAA6D,EAC7D,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAgB;QAC/B,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,SAAS;KACrB,CAAC;IACF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAgB,wBAAwB,CACvC,KAAc,EACd,IAAW,EACX,SAAiB;IAEjB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,iCAAkB,CAC3B,IAAI,EACJ,0DAA0D,EAC1D,EAAE,SAAS,EAAE,CACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uploadMediaVideo = uploadMediaVideo;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
const errors_1 = require("../../errors");
|
|
7
|
+
const multipart_1 = require("./multipart");
|
|
8
|
+
const normalize_1 = require("./normalize");
|
|
9
|
+
const validateUploadUrl_1 = require("./validateUploadUrl");
|
|
10
|
+
const MAX_VIDEO_UPLOAD_BYTES = 512 * 1024 * 1024;
|
|
11
|
+
const UPLOAD_TIMEOUT_MIN_MS = 60000;
|
|
12
|
+
const UPLOAD_TIMEOUT_PER_MB_MS = 1000;
|
|
13
|
+
const UPLOAD_TIMEOUT_MAX_MS = 600000;
|
|
14
|
+
const VIDEO_EXTENSION_TO_CONTENT_TYPE = new Map([
|
|
15
|
+
['.mp4', 'video/mp4'],
|
|
16
|
+
['.m4v', 'video/x-m4v'],
|
|
17
|
+
['.mov', 'video/quicktime'],
|
|
18
|
+
]);
|
|
19
|
+
const VIDEO_CONTENT_TYPE_TO_EXTENSION = new Map([...VIDEO_EXTENSION_TO_CONTENT_TYPE.entries()].map(([extension, contentType]) => [
|
|
20
|
+
contentType,
|
|
21
|
+
extension,
|
|
22
|
+
]));
|
|
23
|
+
function isDataObject(value) {
|
|
24
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
function describeUploadFailure(error) {
|
|
27
|
+
if (!isDataObject(error)) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
const httpCode = error.httpCode;
|
|
31
|
+
if (typeof httpCode === 'string' && /^\d{3}$/.test(httpCode)) {
|
|
32
|
+
return ` (HTTP ${httpCode})`;
|
|
33
|
+
}
|
|
34
|
+
const response = error.response;
|
|
35
|
+
if (isDataObject(response) && typeof response.status === 'number') {
|
|
36
|
+
return ` (HTTP ${response.status})`;
|
|
37
|
+
}
|
|
38
|
+
const code = error.code;
|
|
39
|
+
if (typeof code === 'string' && /^[A-Z][A-Z0-9_]*$/.test(code)) {
|
|
40
|
+
return ` (${code})`;
|
|
41
|
+
}
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
function getDeclaredBinarySize(binaryData) {
|
|
45
|
+
if (typeof binaryData.bytes === 'number' && Number.isFinite(binaryData.bytes)) {
|
|
46
|
+
return binaryData.bytes;
|
|
47
|
+
}
|
|
48
|
+
if (typeof binaryData.fileSize === 'string') {
|
|
49
|
+
const size = Number(binaryData.fileSize);
|
|
50
|
+
if (Number.isFinite(size)) {
|
|
51
|
+
return size;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
function extensionForContentType(contentType) {
|
|
57
|
+
const extension = VIDEO_CONTENT_TYPE_TO_EXTENSION.get(contentType);
|
|
58
|
+
if (extension === undefined) {
|
|
59
|
+
throw new Error(`Unsupported video content type "${contentType}"`);
|
|
60
|
+
}
|
|
61
|
+
return extension;
|
|
62
|
+
}
|
|
63
|
+
function getVideoFileInfo(binaryData) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const rawFileName = typeof binaryData.fileName === 'string' ? binaryData.fileName : '';
|
|
66
|
+
const baseName = (_b = (_a = rawFileName.split(/[\\/]/).pop()) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
|
|
67
|
+
const dotIndex = baseName.lastIndexOf('.');
|
|
68
|
+
const extension = dotIndex >= 0 ? baseName.slice(dotIndex).toLowerCase() : '';
|
|
69
|
+
if (extension !== '' && !VIDEO_EXTENSION_TO_CONTENT_TYPE.has(extension)) {
|
|
70
|
+
throw new Error(`Unsupported video file extension "${extension}". Use .mp4, .m4v, or .mov.`);
|
|
71
|
+
}
|
|
72
|
+
const rawMimeType = typeof binaryData.mimeType === 'string' ? binaryData.mimeType : '';
|
|
73
|
+
const mimeType = rawMimeType.split(';')[0].trim().toLowerCase();
|
|
74
|
+
let contentType = extension !== '' ? VIDEO_EXTENSION_TO_CONTENT_TYPE.get(extension) : undefined;
|
|
75
|
+
if (contentType === undefined && mimeType.startsWith('video/')) {
|
|
76
|
+
if (!VIDEO_CONTENT_TYPE_TO_EXTENSION.has(mimeType)) {
|
|
77
|
+
throw new Error(`Unsupported video content type "${mimeType}". Use MP4, M4V, or MOV.`);
|
|
78
|
+
}
|
|
79
|
+
contentType = mimeType;
|
|
80
|
+
}
|
|
81
|
+
if (contentType === undefined) {
|
|
82
|
+
contentType = 'video/mp4';
|
|
83
|
+
}
|
|
84
|
+
let fileName = baseName;
|
|
85
|
+
if (fileName === '' || fileName === extension) {
|
|
86
|
+
fileName = `video${extension !== '' ? extension : extensionForContentType(contentType)}`;
|
|
87
|
+
}
|
|
88
|
+
else if (extension === '') {
|
|
89
|
+
fileName = `${fileName}${extensionForContentType(contentType)}`;
|
|
90
|
+
}
|
|
91
|
+
fileName = fileName.replace(/[\r\n\0]/g, '').trim();
|
|
92
|
+
if (fileName === '') {
|
|
93
|
+
fileName = `video${extensionForContentType(contentType)}`;
|
|
94
|
+
}
|
|
95
|
+
return { fileName, contentType };
|
|
96
|
+
}
|
|
97
|
+
function parseRegistrationResponse(response, node, itemIndex) {
|
|
98
|
+
if (!isDataObject(response)) {
|
|
99
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an invalid media upload registration response', { itemIndex });
|
|
100
|
+
}
|
|
101
|
+
const mediaId = response.media_id;
|
|
102
|
+
if (typeof mediaId !== 'string' || !/^\d+$/.test(mediaId)) {
|
|
103
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload registration response without a valid media ID', { itemIndex });
|
|
104
|
+
}
|
|
105
|
+
if (response.media_type !== 'video') {
|
|
106
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an unexpected media type for a video upload', { itemIndex });
|
|
107
|
+
}
|
|
108
|
+
const uploadUrl = response.upload_url;
|
|
109
|
+
if (typeof uploadUrl !== 'string' || uploadUrl.trim() === '') {
|
|
110
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload registration response without an upload URL', { itemIndex });
|
|
111
|
+
}
|
|
112
|
+
const rawUploadParameters = response.upload_parameters;
|
|
113
|
+
if (!isDataObject(rawUploadParameters)) {
|
|
114
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned a media upload registration response without upload parameters', { itemIndex });
|
|
115
|
+
}
|
|
116
|
+
const uploadParameters = {};
|
|
117
|
+
for (const [name, value] of Object.entries(rawUploadParameters)) {
|
|
118
|
+
if (name.trim() === '' || /[\r\n\0]/.test(name)) {
|
|
119
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an invalid media upload parameter name', { itemIndex });
|
|
120
|
+
}
|
|
121
|
+
if (typeof value !== 'string' &&
|
|
122
|
+
typeof value !== 'number' &&
|
|
123
|
+
typeof value !== 'boolean') {
|
|
124
|
+
throw new n8n_workflow_1.NodeOperationError(node, `Pinterest returned an invalid value for the media upload parameter "${name}"`, { itemIndex });
|
|
125
|
+
}
|
|
126
|
+
uploadParameters[name] = value;
|
|
127
|
+
}
|
|
128
|
+
if (Object.keys(uploadParameters).length === 0) {
|
|
129
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an empty set of media upload parameters', { itemIndex });
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
mediaId,
|
|
133
|
+
uploadUrl: uploadUrl.trim(),
|
|
134
|
+
uploadParameters,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async function registerMediaUpload(itemIndex) {
|
|
138
|
+
const options = {
|
|
139
|
+
baseURL: constants_1.PINTEREST_API_BASE_URL,
|
|
140
|
+
url: '/media',
|
|
141
|
+
method: 'POST',
|
|
142
|
+
json: true,
|
|
143
|
+
body: { media_type: 'video' },
|
|
144
|
+
abortSignal: this.getExecutionCancelSignal(),
|
|
145
|
+
};
|
|
146
|
+
let response;
|
|
147
|
+
try {
|
|
148
|
+
response = await this.helpers.httpRequestWithAuthentication.call(this, 'pinterestOAuth2Api', options);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
throw (0, errors_1.mapPinterestApiError)(error, { itemIndex });
|
|
152
|
+
}
|
|
153
|
+
return parseRegistrationResponse(response, this.getNode(), itemIndex);
|
|
154
|
+
}
|
|
155
|
+
async function uploadToMediaStorage(itemIndex, registration, file) {
|
|
156
|
+
let validatedUrl;
|
|
157
|
+
try {
|
|
158
|
+
validatedUrl = (0, validateUploadUrl_1.validatePinterestUploadUrl)(registration.uploadUrl);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, { itemIndex });
|
|
162
|
+
}
|
|
163
|
+
let multipart;
|
|
164
|
+
try {
|
|
165
|
+
multipart = (0, multipart_1.buildMultipartBody)(registration.uploadParameters, file);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Pinterest returned invalid media upload parameters: ${error.message}`, { itemIndex });
|
|
169
|
+
}
|
|
170
|
+
const uploadTimeoutMs = Math.min(UPLOAD_TIMEOUT_MAX_MS, Math.max(UPLOAD_TIMEOUT_MIN_MS, Math.ceil(file.data.length / (1024 * 1024)) * UPLOAD_TIMEOUT_PER_MB_MS));
|
|
171
|
+
const options = {
|
|
172
|
+
url: validatedUrl.url,
|
|
173
|
+
method: 'POST',
|
|
174
|
+
headers: {
|
|
175
|
+
'Content-Type': multipart.contentType,
|
|
176
|
+
},
|
|
177
|
+
body: multipart.body,
|
|
178
|
+
json: false,
|
|
179
|
+
returnFullResponse: true,
|
|
180
|
+
disableFollowRedirect: true,
|
|
181
|
+
allowedDomains: validatedUrl.hostname,
|
|
182
|
+
timeout: uploadTimeoutMs,
|
|
183
|
+
abortSignal: this.getExecutionCancelSignal(),
|
|
184
|
+
};
|
|
185
|
+
let response;
|
|
186
|
+
try {
|
|
187
|
+
response = await this.helpers.httpRequest(options);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to upload the video file to Pinterest media storage${describeUploadFailure(error)}. Verify that the file is a supported video and try again.`, { itemIndex });
|
|
191
|
+
}
|
|
192
|
+
if (!isDataObject(response) ||
|
|
193
|
+
typeof response.statusCode !== 'number' ||
|
|
194
|
+
response.statusCode < 200 ||
|
|
195
|
+
response.statusCode >= 300) {
|
|
196
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Pinterest media storage did not confirm the video upload', { itemIndex });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function fetchMediaStatus(itemIndex, mediaId) {
|
|
200
|
+
const options = {
|
|
201
|
+
baseURL: constants_1.PINTEREST_API_BASE_URL,
|
|
202
|
+
url: `/media/${mediaId}`,
|
|
203
|
+
method: 'GET',
|
|
204
|
+
json: true,
|
|
205
|
+
abortSignal: this.getExecutionCancelSignal(),
|
|
206
|
+
};
|
|
207
|
+
let response;
|
|
208
|
+
try {
|
|
209
|
+
response = await this.helpers.httpRequestWithAuthentication.call(this, 'pinterestOAuth2Api', options);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw (0, errors_1.mapPinterestApiError)(error, { itemIndex });
|
|
213
|
+
}
|
|
214
|
+
const normalized = (0, normalize_1.normalizeMediaUpload)(response, this.getNode(), itemIndex, {
|
|
215
|
+
requireStatus: true,
|
|
216
|
+
requireVideoType: true,
|
|
217
|
+
});
|
|
218
|
+
if (normalized.media_id !== mediaId) {
|
|
219
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Pinterest returned details for a different media upload', { itemIndex });
|
|
220
|
+
}
|
|
221
|
+
return normalized;
|
|
222
|
+
}
|
|
223
|
+
function readPollingOptions(itemIndex) {
|
|
224
|
+
const waitForProcessing = this.getNodeParameter('waitForProcessing', itemIndex, true);
|
|
225
|
+
if (typeof waitForProcessing !== 'boolean') {
|
|
226
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Wait for Processing must be a boolean', { itemIndex });
|
|
227
|
+
}
|
|
228
|
+
const pollIntervalMs = this.getNodeParameter('pollIntervalMs', itemIndex, 2000);
|
|
229
|
+
if (typeof pollIntervalMs !== 'number' ||
|
|
230
|
+
!Number.isInteger(pollIntervalMs) ||
|
|
231
|
+
pollIntervalMs < 500 ||
|
|
232
|
+
pollIntervalMs > 30000) {
|
|
233
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Poll Interval must be an integer between 500 and 30000 milliseconds', { itemIndex });
|
|
234
|
+
}
|
|
235
|
+
const pollTimeoutMs = this.getNodeParameter('pollTimeoutMs', itemIndex, 60000);
|
|
236
|
+
if (typeof pollTimeoutMs !== 'number' ||
|
|
237
|
+
!Number.isInteger(pollTimeoutMs) ||
|
|
238
|
+
pollTimeoutMs < 1000 ||
|
|
239
|
+
pollTimeoutMs > 600000) {
|
|
240
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Poll Timeout must be an integer between 1000 and 600000 milliseconds', { itemIndex });
|
|
241
|
+
}
|
|
242
|
+
return { waitForProcessing, pollIntervalMs, pollTimeoutMs };
|
|
243
|
+
}
|
|
244
|
+
async function waitForMediaProcessing(itemIndex, mediaId, initialStatus, pollIntervalMs, pollTimeoutMs) {
|
|
245
|
+
let currentStatus = initialStatus;
|
|
246
|
+
const startedAt = Date.now();
|
|
247
|
+
while (true) {
|
|
248
|
+
if (currentStatus.status === 'succeeded') {
|
|
249
|
+
return currentStatus;
|
|
250
|
+
}
|
|
251
|
+
if (currentStatus.status === 'failed') {
|
|
252
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Pinterest failed to process the uploaded video (media ID ${mediaId})`, { itemIndex });
|
|
253
|
+
}
|
|
254
|
+
const elapsed = Date.now() - startedAt;
|
|
255
|
+
if (elapsed >= pollTimeoutMs) {
|
|
256
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Timed out waiting for Pinterest to process the uploaded video (media ID ${mediaId}, last status "${String(currentStatus.status)}"). Use the Get Upload operation to check the status later.`, { itemIndex });
|
|
257
|
+
}
|
|
258
|
+
const remaining = pollTimeoutMs - elapsed;
|
|
259
|
+
await (0, n8n_workflow_1.sleepWithAbort)(Math.min(pollIntervalMs, remaining), this.getExecutionCancelSignal());
|
|
260
|
+
currentStatus = await fetchMediaStatus.call(this, itemIndex, mediaId);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
async function uploadMediaVideo(itemIndex) {
|
|
264
|
+
const node = this.getNode();
|
|
265
|
+
const rawBinaryPropertyName = this.getNodeParameter('binaryPropertyName', itemIndex, 'data');
|
|
266
|
+
if (typeof rawBinaryPropertyName !== 'string') {
|
|
267
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Binary Property must be a string', {
|
|
268
|
+
itemIndex,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
const binaryPropertyName = rawBinaryPropertyName.trim();
|
|
272
|
+
if (binaryPropertyName === '') {
|
|
273
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Binary Property is required to upload a video', { itemIndex });
|
|
274
|
+
}
|
|
275
|
+
let binaryData;
|
|
276
|
+
try {
|
|
277
|
+
binaryData = this.helpers.assertBinaryData(itemIndex, binaryPropertyName);
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Could not read the video file from binary property "${binaryPropertyName}": ${error.message}`, { itemIndex });
|
|
281
|
+
}
|
|
282
|
+
const declaredSize = getDeclaredBinarySize(binaryData);
|
|
283
|
+
if (declaredSize !== undefined && declaredSize > MAX_VIDEO_UPLOAD_BYTES) {
|
|
284
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The video file exceeds the ${Math.floor(MAX_VIDEO_UPLOAD_BYTES / (1024 * 1024))} MB limit supported by this node`, { itemIndex });
|
|
285
|
+
}
|
|
286
|
+
let buffer;
|
|
287
|
+
try {
|
|
288
|
+
buffer = await this.helpers.getBinaryDataBuffer(itemIndex, binaryPropertyName);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Could not read the video file from binary property "${binaryPropertyName}": ${error.message}`, { itemIndex });
|
|
292
|
+
}
|
|
293
|
+
if (buffer.length === 0) {
|
|
294
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'The video file is empty', { itemIndex });
|
|
295
|
+
}
|
|
296
|
+
if (buffer.length > MAX_VIDEO_UPLOAD_BYTES) {
|
|
297
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The video file exceeds the ${Math.floor(MAX_VIDEO_UPLOAD_BYTES / (1024 * 1024))} MB limit supported by this node`, { itemIndex });
|
|
298
|
+
}
|
|
299
|
+
let fileInfo;
|
|
300
|
+
try {
|
|
301
|
+
fileInfo = getVideoFileInfo(binaryData);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, { itemIndex });
|
|
305
|
+
}
|
|
306
|
+
const pollingOptions = readPollingOptions.call(this, itemIndex);
|
|
307
|
+
const registration = await registerMediaUpload.call(this, itemIndex);
|
|
308
|
+
await uploadToMediaStorage.call(this, itemIndex, registration, {
|
|
309
|
+
...fileInfo,
|
|
310
|
+
data: buffer,
|
|
311
|
+
});
|
|
312
|
+
const initialStatus = await fetchMediaStatus.call(this, itemIndex, registration.mediaId);
|
|
313
|
+
if (!pollingOptions.waitForProcessing) {
|
|
314
|
+
if (initialStatus.status === 'failed') {
|
|
315
|
+
throw new n8n_workflow_1.NodeOperationError(node, `Pinterest failed to process the uploaded video (media ID ${registration.mediaId})`, { itemIndex });
|
|
316
|
+
}
|
|
317
|
+
return initialStatus;
|
|
318
|
+
}
|
|
319
|
+
return waitForMediaProcessing.call(this, itemIndex, registration.mediaId, initialStatus, pollingOptions.pollIntervalMs, pollingOptions.pollTimeoutMs);
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/media/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatePinterestUploadUrl = validatePinterestUploadUrl;
|
|
4
|
+
const PINTEREST_MEDIA_UPLOAD_HOST_PATTERNS = [
|
|
5
|
+
/^pinterest-media-upload\.s3-accelerate\.amazonaws\.com$/,
|
|
6
|
+
/^pinterest-media-upload\.s3-accelerate\.dualstack\.amazonaws\.com$/,
|
|
7
|
+
/^pinterest-media-upload\.s3\.amazonaws\.com$/,
|
|
8
|
+
/^pinterest-media-upload\.s3\.dualstack\.[a-z0-9-]+\.amazonaws\.com$/,
|
|
9
|
+
/^pinterest-media-upload\.s3[.-][a-z0-9-]+\.amazonaws\.com$/,
|
|
10
|
+
];
|
|
11
|
+
function tryParseUrl(value) {
|
|
12
|
+
try {
|
|
13
|
+
return new URL(value);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function validatePinterestUploadUrl(value) {
|
|
20
|
+
if (typeof value !== 'string' || value.trim() === '') {
|
|
21
|
+
throw new Error('Pinterest did not return a media upload URL');
|
|
22
|
+
}
|
|
23
|
+
const url = tryParseUrl(value.trim());
|
|
24
|
+
if (url === undefined) {
|
|
25
|
+
throw new Error('Pinterest returned an invalid media upload URL');
|
|
26
|
+
}
|
|
27
|
+
if (url.protocol !== 'https:') {
|
|
28
|
+
throw new Error('Pinterest returned a media upload URL that does not use HTTPS');
|
|
29
|
+
}
|
|
30
|
+
if (url.username !== '' || url.password !== '') {
|
|
31
|
+
throw new Error('Pinterest returned a media upload URL with embedded credentials');
|
|
32
|
+
}
|
|
33
|
+
if (url.port !== '' && url.port !== '443') {
|
|
34
|
+
throw new Error('Pinterest returned a media upload URL with an unsupported port');
|
|
35
|
+
}
|
|
36
|
+
if (url.hash !== '') {
|
|
37
|
+
throw new Error('Pinterest returned a media upload URL with a fragment');
|
|
38
|
+
}
|
|
39
|
+
const hostname = url.hostname.toLowerCase().replace(/\.$/, '');
|
|
40
|
+
if (!PINTEREST_MEDIA_UPLOAD_HOST_PATTERNS.some((pattern) => pattern.test(hostname))) {
|
|
41
|
+
throw new Error('Pinterest returned a media upload URL on an unsupported host');
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
url: url.toString(),
|
|
45
|
+
hostname,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=validateUploadUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateUploadUrl.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/media/validateUploadUrl.ts"],"names":[],"mappings":";;AAkCA,gEAgCC;AAzDD,MAAM,oCAAoC,GAAG;IAC5C,yDAAyD;IACzD,oEAAoE;IACpE,8CAA8C;IAC9C,qEAAqE;IACrE,4DAA4D;CAC5D,CAAC;AAOF,SAAS,WAAW,CAAC,KAAa;IACjC,IAAI,CAAC;QACJ,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAMD,SAAgB,0BAA0B,CAAC,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,QAAQ;KACR,CAAC;AACH,CAAC"}
|
|
@@ -4,5 +4,6 @@ export { getPinAnalyticsRequest } from './getAnalytics';
|
|
|
4
4
|
export { getPinRequest } from './get';
|
|
5
5
|
export { getMultiplePinsRequest } from './getMultiple';
|
|
6
6
|
export { listPinsRequest } from './list';
|
|
7
|
+
export { addProductTagsRequest, listProductTagsRequest, normalizeProductTagRemovalResponse, removeProductTagsRequest, } from './productTags';
|
|
7
8
|
export { savePinRequest } from './save';
|
|
8
9
|
export { updatePinRequest } from './update';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updatePinRequest = exports.savePinRequest = exports.listPinsRequest = exports.getMultiplePinsRequest = exports.getPinRequest = exports.getPinAnalyticsRequest = exports.deletePinRequest = exports.createPinRequest = void 0;
|
|
3
|
+
exports.updatePinRequest = exports.savePinRequest = exports.removeProductTagsRequest = exports.normalizeProductTagRemovalResponse = exports.listProductTagsRequest = exports.addProductTagsRequest = exports.listPinsRequest = exports.getMultiplePinsRequest = exports.getPinRequest = exports.getPinAnalyticsRequest = exports.deletePinRequest = exports.createPinRequest = void 0;
|
|
4
4
|
var create_1 = require("./create");
|
|
5
5
|
Object.defineProperty(exports, "createPinRequest", { enumerable: true, get: function () { return create_1.createPinRequest; } });
|
|
6
6
|
var delete_1 = require("./delete");
|
|
@@ -13,6 +13,11 @@ var getMultiple_1 = require("./getMultiple");
|
|
|
13
13
|
Object.defineProperty(exports, "getMultiplePinsRequest", { enumerable: true, get: function () { return getMultiple_1.getMultiplePinsRequest; } });
|
|
14
14
|
var list_1 = require("./list");
|
|
15
15
|
Object.defineProperty(exports, "listPinsRequest", { enumerable: true, get: function () { return list_1.listPinsRequest; } });
|
|
16
|
+
var productTags_1 = require("./productTags");
|
|
17
|
+
Object.defineProperty(exports, "addProductTagsRequest", { enumerable: true, get: function () { return productTags_1.addProductTagsRequest; } });
|
|
18
|
+
Object.defineProperty(exports, "listProductTagsRequest", { enumerable: true, get: function () { return productTags_1.listProductTagsRequest; } });
|
|
19
|
+
Object.defineProperty(exports, "normalizeProductTagRemovalResponse", { enumerable: true, get: function () { return productTags_1.normalizeProductTagRemovalResponse; } });
|
|
20
|
+
Object.defineProperty(exports, "removeProductTagsRequest", { enumerable: true, get: function () { return productTags_1.removeProductTagsRequest; } });
|
|
16
21
|
var save_1 = require("./save");
|
|
17
22
|
Object.defineProperty(exports, "savePinRequest", { enumerable: true, get: function () { return save_1.savePinRequest; } });
|
|
18
23
|
var update_1 = require("./update");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/pin/index.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AACzB,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AACzB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAC/B,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,6CAAuD;AAA9C,qHAAA,sBAAsB,OAAA;AAC/B,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,+BAAwC;AAA/B,sGAAA,cAAc,OAAA;AACvB,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/pin/index.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AACzB,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AACzB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAC/B,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,6CAAuD;AAA9C,qHAAA,sBAAsB,OAAA;AAC/B,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,6CAKuB;AAJtB,oHAAA,qBAAqB,OAAA;AACrB,qHAAA,sBAAsB,OAAA;AACtB,iIAAA,kCAAkC,OAAA;AAClC,uHAAA,wBAAwB,OAAA;AAEzB,+BAAwC;AAA/B,sGAAA,cAAc,OAAA;AACvB,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions, IHttpRequestOptions, INode } from 'n8n-workflow';
|
|
2
|
+
export declare function addProductTagsRequest(this: IExecuteFunctions, itemIndex: number): Promise<IHttpRequestOptions>;
|
|
3
|
+
export declare function listProductTagsRequest(this: IExecuteFunctions, itemIndex: number): Promise<IHttpRequestOptions>;
|
|
4
|
+
export declare function removeProductTagsRequest(this: IExecuteFunctions, itemIndex: number): Promise<IHttpRequestOptions>;
|
|
5
|
+
export declare function normalizeProductTagRemovalResponse(value: unknown, node: INode, itemIndex: number): IDataObject;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addProductTagsRequest = addProductTagsRequest;
|
|
4
|
+
exports.listProductTagsRequest = listProductTagsRequest;
|
|
5
|
+
exports.removeProductTagsRequest = removeProductTagsRequest;
|
|
6
|
+
exports.normalizeProductTagRemovalResponse = normalizeProductTagRemovalResponse;
|
|
7
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
|
+
const MAX_PRODUCT_TAGS = 24;
|
|
9
|
+
function readHeroPinId(value, action, itemIndex, self) {
|
|
10
|
+
if (value === undefined || value === null) {
|
|
11
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), `Hero Pin ID is required to ${action}`, {
|
|
12
|
+
itemIndex,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
if (typeof value !== 'string') {
|
|
16
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), 'Hero Pin ID must be a string', { itemIndex });
|
|
17
|
+
}
|
|
18
|
+
const heroPinId = value.trim();
|
|
19
|
+
if (heroPinId === '') {
|
|
20
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), `Hero Pin ID is required to ${action}`, {
|
|
21
|
+
itemIndex,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
if (!/^\d+$/.test(heroPinId)) {
|
|
25
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), 'Hero Pin ID must contain only digits', {
|
|
26
|
+
itemIndex,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return heroPinId;
|
|
30
|
+
}
|
|
31
|
+
function readProductPinIds(value, action, itemIndex, self, enforceAddConstraints = true) {
|
|
32
|
+
if (value === undefined || value === null || typeof value !== 'string') {
|
|
33
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), 'Product Pin IDs must be a string', { itemIndex });
|
|
34
|
+
}
|
|
35
|
+
const trimmed = value.trim();
|
|
36
|
+
if (trimmed === '') {
|
|
37
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), `Product Pin IDs are required to ${action}`, {
|
|
38
|
+
itemIndex,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const productPinIds = trimmed.split(',').map((pinId) => pinId.trim());
|
|
42
|
+
if (productPinIds.some((pinId) => pinId === '')) {
|
|
43
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), 'Product Pin IDs must not contain empty values', {
|
|
44
|
+
itemIndex,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (enforceAddConstraints && productPinIds.length > MAX_PRODUCT_TAGS) {
|
|
48
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), `Product Pin IDs must contain between 1 and ${MAX_PRODUCT_TAGS} values`, { itemIndex });
|
|
49
|
+
}
|
|
50
|
+
for (const pinId of productPinIds) {
|
|
51
|
+
if (!/^\d+$/.test(pinId)) {
|
|
52
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), 'Each Product Pin ID must contain only digits', { itemIndex });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (enforceAddConstraints) {
|
|
56
|
+
const seen = new Set();
|
|
57
|
+
const duplicates = new Set();
|
|
58
|
+
for (const pinId of productPinIds) {
|
|
59
|
+
if (seen.has(pinId)) {
|
|
60
|
+
duplicates.add(pinId);
|
|
61
|
+
}
|
|
62
|
+
seen.add(pinId);
|
|
63
|
+
}
|
|
64
|
+
if (duplicates.size > 0) {
|
|
65
|
+
throw new n8n_workflow_1.NodeOperationError(self.getNode(), `Product Pin IDs must not contain duplicates: ${[...duplicates].join(', ')}`, { itemIndex });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return productPinIds;
|
|
69
|
+
}
|
|
70
|
+
function buildProductTagsBody(productPinIds) {
|
|
71
|
+
return {
|
|
72
|
+
product_tags: productPinIds.map((pinId) => ({ pin_id: pinId })),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async function addProductTagsRequest(itemIndex) {
|
|
76
|
+
const heroPinId = readHeroPinId(this.getNodeParameter('heroPinId', itemIndex, ''), 'add product tags to a Pin', itemIndex, this);
|
|
77
|
+
const productPinIds = readProductPinIds(this.getNodeParameter('productPinIds', itemIndex, ''), 'add product tags to a Pin', itemIndex, this, true);
|
|
78
|
+
return {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
url: `/pins/${heroPinId}/product_tags`,
|
|
81
|
+
body: buildProductTagsBody(productPinIds),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function listProductTagsRequest(itemIndex) {
|
|
85
|
+
const heroPinId = readHeroPinId(this.getNodeParameter('heroPinId', itemIndex, ''), 'list product tags for a Pin', itemIndex, this);
|
|
86
|
+
return {
|
|
87
|
+
method: 'GET',
|
|
88
|
+
url: `/pins/${heroPinId}/product_tags`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
async function removeProductTagsRequest(itemIndex) {
|
|
92
|
+
const heroPinId = readHeroPinId(this.getNodeParameter('heroPinId', itemIndex, ''), 'remove product tags from a Pin', itemIndex, this);
|
|
93
|
+
const productPinIds = readProductPinIds(this.getNodeParameter('productPinIds', itemIndex, ''), 'remove product tags from a Pin', itemIndex, this, false);
|
|
94
|
+
return {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
url: `/pins/${heroPinId}/product_tags/bulk-delete`,
|
|
97
|
+
body: buildProductTagsBody(productPinIds),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function normalizeProductTagRemovalResponse(value, node, itemIndex) {
|
|
101
|
+
if (value === undefined || value === null || value === '') {
|
|
102
|
+
return {};
|
|
103
|
+
}
|
|
104
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Pinterest returned an unexpected response body when removing product tags', { itemIndex });
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=productTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productTags.js","sourceRoot":"","sources":["../../../../../nodes/Pinterest/requests/pin/productTags.ts"],"names":[],"mappings":"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"}
|