export default async function main(args) {
const { wpDomain, wpUsername, wpApikey, wpPostId, wpPostTitle, wpPostContent } = args.inputVars;
// Custom function to encode a string to Base64
function base64Encode(str) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let encoded = '', i = 0;
while (i < str.length) {
const a = str.charCodeAt(i++);
const b = i < str.length ? str.charCodeAt(i++) : 0;
const c = i < str.length ? str.charCodeAt(i++) : 0;
const b1 = (a >> 2) & 0x3F;
const b2 = ((a & 0x03) << 4) | ((b >> 4) & 0x0F);
const b3 = ((b & 0x0F) << 2) | ((c >> 6) & 0x03);
const b4 = c & 0x3F;
if (!i) {
encoded += chars.charAt(b1) + chars.charAt(b2) + '==';
} else if (i == str.length + 1) {
encoded += chars.charAt(b1) + chars.charAt(b2) + chars.charAt(b3) + '=';
} else {
encoded += chars.charAt(b1) + chars.charAt(b2) + chars.charAt(b3) + chars.charAt(b4);
}
}
return encoded;
}
const base64Credentials = base64Encode(`${wpUsername}:${wpApikey}`);
const apiUrl = `https://${wpDomain}/wp-json/wp/v2/posts/${wpPostId}`; // Append postId to the URL
// Define the data to be updated
const postData = {
title: wpPostTitle, // Update the title
content: wpPostContent // Update the content
};
// Fetch API data with Basic Authentication and update request
try {
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
"Authorization": `Basic ${base64Credentials}`,
"Content-Type": "application/json"
},
body: JSON.stringify(postData) // Send the updated data as JSON
});
// Check if the response was ok (status 200)
if (response.ok) {
const updatedPost = await response.json; // Parse JSON response
return {
outputVars: {
wpUpdatedTitle: updatedPost.title.rendered,
wpUpdatedContent: updatedPost.content.rendered
},
next: {
path: 'success'
},
trace: [
{
type: 'debug',
payload: {
message: `Post updated successfully: ${updatedPost.title.rendered}`
}
}
],
};
} else {
const errorResponse = await response.text(); // Or response.json()
console.log('HTTP Error Status:', response.status);
console.log('Error Response:', errorResponse);
throw new Error('Failed to update post');
}
} catch (error) {
console.log('Error:', error);
return {
outputVars: {
error: error.toString()
},
next: {
path: 'error'
},
trace: [
{
type: 'debug',
payload: {
message: `Error updating post: ${error}`
}
}
],
};
}
}