diff --git a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts index 89fdfadbf6..4f95de5c7d 100644 --- a/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts +++ b/packages/nodes-base/nodes/LinkedIn/LinkedIn.node.ts @@ -167,6 +167,30 @@ export class LinkedIn implements INodeType { }, commentary: text, }; + + if (additionalFields.thumbnailBinaryPropertyName) { + const registerRequest = { + initializeUploadRequest: { + owner: authorUrn, + }, + }; + + const registerObject = await linkedInApiRequest.call( + this, + 'POST', + '/images?action=initializeUpload', + registerRequest, + ); + + const binaryPropertyName = additionalFields.thumbnailBinaryPropertyName as string; + this.helpers.assertBinaryData(i, binaryPropertyName); + + const buffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName); + const { uploadUrl, image } = registerObject.value; + await linkedInApiRequest.call(this, 'POST', uploadUrl as string, buffer, true); + Object.assign(articleBody.content.article, { thumbnail: image }); + } + Object.assign(body, articleBody); if (description === '') { delete body.description; diff --git a/packages/nodes-base/nodes/LinkedIn/PostDescription.ts b/packages/nodes-base/nodes/LinkedIn/PostDescription.ts index 78a4d1ce3c..9a4ebbaf04 100644 --- a/packages/nodes-base/nodes/LinkedIn/PostDescription.ts +++ b/packages/nodes-base/nodes/LinkedIn/PostDescription.ts @@ -172,6 +172,18 @@ export const postFields: INodeProperties[] = [ }, }, }, + { + displayName: 'Thumbnail Binary Property', + name: 'thumbnailBinaryPropertyName', + type: 'string', + default: 'data', + description: 'Object property name which holds binary data for the article thumbnail', + displayOptions: { + show: { + '/shareMediaCategory': ['ARTICLE'], + }, + }, + }, { displayName: 'Title', name: 'title',