UNPKG

flexbiz-server

Version:

Flexible Server

11 lines (10 loc) 4.82 kB
const axios=require("axios"),{getPageAccessToken,getConfigValue}=require("../utils"); async function facebookCreatePostHandler($flowState_pageAccessToken_url$$,$node$$,$_id_payload$$,$abortSignal$$){var $nodeInstanceId_postData$$=`${$flowState_pageAccessToken_url$$.instanceId}-${$node$$.id}`,$fbError_instanceId$$=$flowState_pageAccessToken_url$$.instanceId,$nodeId_nodeLabel$$=$node$$.id;$nodeId_nodeLabel$$=$node$$.data?.name||$nodeId_nodeLabel$$||"Facebook Create Post";var $triggerContext_triggerId$$=$_id_payload$$?._triggerId||null;$triggerContext_triggerId$$=$triggerContext_triggerId$$? `|${$triggerContext_triggerId$$}`:"";Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Executing.`);if($abortSignal$$.aborted)throw Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Aborted before execution.`),new DOMException("Aborted before posting to Facebook","AbortError");const $pageId$$=$node$$.data?.pape_id,$message$$=getConfigValue($node$$,$_id_payload$$,"message","",["text"]),$link$$=getConfigValue($node$$, $_id_payload$$,"link",""),$imageUrl$$=getConfigValue($node$$,$_id_payload$$,"image_url","");var $apiUrl_videoUrl$$=getConfigValue($node$$,$_id_payload$$,"video_url","");const $published$$=getConfigValue($node$$,$_id_payload$$,"published",!0);if(!$pageId$$)throw Error(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Missing Page ID in node configuration.`);$flowState_pageAccessToken_url$$=$node$$.data?.pageAccessToken||await getPageAccessToken($flowState_pageAccessToken_url$$.flowDefinition.id_app, $pageId$$);if(!$flowState_pageAccessToken_url$$)throw Error(`[${$nodeInstanceId_postData$$}] ${$nodeId_nodeLabel$$}: Failed to retrieve Page Access Token for Page ID ${$pageId$$}. Cannot send message.`);if(!($message$$||$link$$||$imageUrl$$||$apiUrl_videoUrl$$))throw Error(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Post content (message, link, imageUrl, or videoUrl) is required.`);$nodeInstanceId_postData$$={access_token:$flowState_pageAccessToken_url$$};$message$$&& ($nodeInstanceId_postData$$.message=$message$$);$link$$&&($nodeInstanceId_postData$$.link=$link$$);$imageUrl$$&&($flowState_pageAccessToken_url$$=$imageUrl$$.indexOf("http")===0?$imageUrl$$:`${configs.domain}${$imageUrl$$}?size=lg&access_token=${configs.public_token}`,$nodeInstanceId_postData$$.picture=$flowState_pageAccessToken_url$$);$apiUrl_videoUrl$$&&Logger.warn(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Posting video by URL is complex and not fully implemented in this basic example. Video will be ignored.`); $published$$!==void 0&&($nodeInstanceId_postData$$.published=$published$$);$apiUrl_videoUrl$$=`https://graph.facebook.com/${"v19.0"}/${$pageId$$}/feed`;Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Posting to Facebook Page ID ${$pageId$$}...`);Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Post Data (excluding token):`,{...$nodeInstanceId_postData$$,access_token:"REDACTED"});try{const $response$$=await axios.post($apiUrl_videoUrl$$, $nodeInstanceId_postData$$,{signal:$abortSignal$$,headers:{"Content-Type":"application/json"}});if($abortSignal$$.aborted)throw Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Aborted after Facebook API call.`),new DOMException("Aborted after Facebook API call","AbortError");Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Successfully posted to Facebook. Response:`,$response$$.data);if($_id_payload$$?._id&& mongoose.Types.ObjectId.isValid($_id_payload$$?._id)&&$response$$.data.id){$_id_payload$$=$_id_payload$$?._id;let $post_id$$=$response$$.data.id;await global.getModel("fbpost").updateOne({_id:$_id_payload$$},{post_id:$post_id$$,page_id:$pageId$$})}return $response$$.data}catch($error$$){Logger.error(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Error posting to Facebook:`,$error$$.response?.data||$error$$.message);if(axios.isCancel($error$$))throw Logger.info(`[${$fbError_instanceId$$}${$triggerContext_triggerId$$}] ${$nodeId_nodeLabel$$}: Facebook post request cancelled.`), new DOMException("Facebook post request cancelled","AbortError");if($error$$.response?.data?.error)throw $fbError_instanceId$$=$error$$.response.data.error,Error(`Facebook API Error (${$fbError_instanceId$$.code} - ${$fbError_instanceId$$.type}): ${$fbError_instanceId$$.message} (Subcode: ${$fbError_instanceId$$.error_subcode})`);throw Error(`Network or unknown error posting to Facebook: ${$error$$.message}`);}}module.exports=facebookCreatePostHandler;