UNPKG

flexbiz-server

Version:

Flexible Server

8 lines (7 loc) 2.92 kB
const axios=require("axios"); async function httpRequestHandler($flowState_nodeInstanceId$$,$node_requestMethod$$,$err_payload$$,$abortSignal$$){$flowState_nodeInstanceId$$=`${$flowState_nodeInstanceId$$.instanceId}-${$node_requestMethod$$.id}`;const {method:$method$$="GET",url:$url$$,headers:$headersStr$$="{}",bodyType:$bodyType$$="json",body:$nodeBody$$=""}=$node_requestMethod$$.data||{};if(!$url$$||typeof $url$$!=="string")throw Logger.error(`[${$flowState_nodeInstanceId$$}] Invalid or missing URL in node configuration.`),Error("Invalid or missing URL configuration"); $node_requestMethod$$=$method$$.toLowerCase();let $parsedHeaders$$={},$requestBody$$=null;const $payloadIsObject$$=typeof $err_payload$$==="object"&&$err_payload$$!==null;try{const $headersSource$$=$payloadIsObject$$&&$err_payload$$.headers?$err_payload$$.headers:JSON.parse($headersStr$$);$parsedHeaders$$=typeof $headersSource$$==="object"&&$headersSource$$!==null?$headersSource$$:{};const $bodySource$$=$payloadIsObject$$&&$err_payload$$.body!==void 0?$err_payload$$.body:$nodeBody$$;$node_requestMethod$$!== "get"&&$node_requestMethod$$!=="delete"&&($requestBody$$=$bodyType$$==="json"?typeof $bodySource$$==="object"?$bodySource$$:JSON.parse($bodySource$$||"{}"):$bodySource$$)}catch($parseError$$){throw Logger.error(`[${$flowState_nodeInstanceId$$}] Error parsing headers or body:`,$parseError$$),Error(`Configuration Error: ${$parseError$$.message}`);}if($abortSignal$$.aborted)throw Logger.info(`[${$flowState_nodeInstanceId$$}] HTTP Request aborted before sending.`),new DOMException("Request aborted before sending", "AbortError");Logger.info(`[${$flowState_nodeInstanceId$$}] Making HTTP request: ${$node_requestMethod$$.toUpperCase()} ${$url$$}`);try{const $response$$=await axios({method:$node_requestMethod$$,url:$url$$,headers:$parsedHeaders$$,data:$requestBody$$,signal:$abortSignal$$});Logger.info(`[${$flowState_nodeInstanceId$$}] HTTP Request successful (Status: ${$response$$.status})`);return $response$$.data}catch($error$$){if(axios.isCancel($error$$))throw Logger.info(`[${$flowState_nodeInstanceId$$}] HTTP Request was cancelled.`), new DOMException("Request aborted","AbortError");if($error$$.response)throw Logger.error(`[${$flowState_nodeInstanceId$$}] HTTP Request failed with status ${$error$$.response.status}:`,$error$$.response.data),$err_payload$$=Error(`Request failed with status code ${$error$$.response.status}`),$err_payload$$.status=$error$$.response.status,$err_payload$$.data=$error$$.response.data,$err_payload$$;if($error$$.request)throw Logger.error(`[${$flowState_nodeInstanceId$$}] HTTP Request failed: No response received.`, $error$$.request),Error("Network Error: No response received from server.");Logger.error(`[${$flowState_nodeInstanceId$$}] HTTP Request setup error:`,$error$$.message);throw Error(`Request Setup Error: ${$error$$.message}`);}}module.exports=httpRequestHandler;