Я пытаюсь загрузить видео в Linkedin API согласно документации по маркетинговому API . До сих пор я сделал следующее:
- Зарегистрирован для загрузки многокомпонентного актива и получил ответ, содержащий массив уникальных составных URL-адресов для pu sh соответствующих фрагментов на
- Получены фрагменты из корзины Amazon S3, в которой они находятся, с помощью заголовка Range
- Успешно выгружены все эти фрагменты через PUT на соответствующие URL-адреса и сохранены значения их кодов состояния ETag и HTTP.
- Создано тело запроса finalize POST согласно приведенной выше ссылке с использованием etags и кодов состояния.
К сожалению, мой запрос не выполняется с:
'com.linkedin.vector.utils.logic.LogicLayerInvalidException: Invalid complete multipartUpload request ...(stringified payload)'
Единственная часть тела запроса I Из приведенного примера не добавлено поле «метаданные» - в документации нет ничего, что объясняло бы, что это такое и откуда оно сгенерировано. Я предполагаю, что этого не хватает. Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?
Код рассматриваемого запроса выглядит следующим образом:
// Loop over chunked download URLs and upload segments of S3 file.
for(let i = 0, l = uploadDetails.partUploadRequests.length; i < l; i++) {
const item: PartUploadRequest = uploadDetails.partUploadRequests[i];
const partialParams: GetObjectRequest = { Bucket: video.dynamoData.mp4Bucket, Key: video.dynamoData.mp4Outputs[0], Range: `bytes=${item.byteRange.firstByte}-${item.byteRange.lastByte}` };
console.log(`Requesting bytes ${item.byteRange.firstByte}-${item.byteRange.lastByte}`);
const s3PartialObject = await s3Client.getObject(partialParams).promise();
const response = await axios.put(item.url, s3PartialObject.Body, {
headers: {
...item.headers
}
});
const { status, headers } = response;
responses.push({
headers: {
ETag: headers.etag
},
httpStatusCode: status
});
};
// Send all chunk responses off and confirm video upload
const finaliseVideoPayload: LinkedinFinaliseVideoPostRequest = {
completeMultipartUploadRequest: {
mediaArtifact: registerVideoRequest.value.mediaArtifact,
partUploadResponses: responses
}
};
console.log(`Fetched all parts, readying finalise request with ${finaliseVideoPayload.completeMultipartUploadRequest.partUploadResponses.length} parts.`);
const json = await axios.post('https://api.linkedin.com/v2/assets?action=completeMultiPartUpload', finaliseVideoPayload, {
headers: {
'X-RestLi-Protocol-Version': '2.0.0',
'Authorization': 'Bearer ' + channel.token,
'Host': 'api.linkedin.com'
}
});
Спасибо