addChild($name); if ($new_child !== NULL) { $node = dom_import_simplexml($new_child); $no = $node->ownerDocument; $node->appendChild($no->createCDATASection($value)); } return $new_child; } } function executeRESTCall($methode, $url, $data = false, $dataType = "json", $requestHeader = array(), $authType = "mainAuth") { // $token = getToken(); $curl = curl_init(); $requestUrl = $url; if(empty($requestHeader)) { $requestHeader = array( 'Content-Type:application/json', 'WWW-Authenticate:'. getToken() .'', ); } if($dataType == "json") { curl_setopt($curl, CURLOPT_HTTPHEADER, $requestHeader); curl_setopt($curl, CURLOPT_HEADER, true); } switch ($methode) { case 'GET': $requestdata = "?"; foreach($data as $key => $value) { $requestdata .= urlencode($key).'='.urlencode($value).'&'; } $requestUrl .= $requestdata; break; case 'POST': if($dataType == "xml") { $xmlData = new SimpleXMLExtended(''); array_to_xml($data,$xmlData); $dom = dom_import_simplexml($xmlData); $xml = $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, 'orderReq='.urlencode($xml)); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 100); if(strpos($url, 'TrackingApp/track/mobile/put') == false) { $myfile = fopen(getAbsoluteSystemPathLN()."/"."lnFunctionLogOrder".date("m-Y").".txt", "a"); fwrite($myfile, $xml); fwrite($myfile, "\n".gmdate("Y-m-d\TH:i:s\Z")); fwrite($myfile, "\n"); fclose($myfile); } else { $myfile = fopen(getAbsoluteSystemPathLN()."/"."lnFunctionLogTracking".date("m-Y").".txt", "a"); fwrite($myfile, $xml); fwrite($myfile, "\n".gmdate("Y-m-d\TH:i:s\Z")); fwrite($myfile, "\n"); fclose($myfile); } } else { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); } break; case 'PUT': if($dataType == "xml") { $xmlData = new SimpleXMLElement(''); array_to_xml($data,$xmlData); curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlData->asXML()); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); } else { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); } break; case 'DELETE': echo "DELETE"; break; } curl_setopt($curl, CURLOPT_URL, $requestUrl); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $methode); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $curlResult = curl_exec($curl); $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $body = substr($curlResult, $header_size); $body = json_decode($body, true); $headers = []; $output = rtrim($curlResult); $resultData = explode("\n",$output); $headers['status'] = $resultData[0]; array_shift($resultData); foreach($resultData as $part){ $middle = explode(":",$part,2); if(!isset($middle[1])) { $middle[1] = null; } $headers[trim($middle[0])] = trim($middle[1]); } if(strpos($url, 'TrackingApp/track/mobile/put') == false) { $myfile = fopen(getAbsoluteSystemPathLN()."/"."lnFunctionLogOrder".date("m-Y").".txt", "a"); fwrite($myfile, json_encode($body)); fwrite($myfile, json_encode($authType)); fwrite($myfile, json_encode($data)); fwrite($myfile, "\n".gmdate("Y-m-d\TH:i:s\Z")); fwrite($myfile, "\n"); fclose($myfile); } if($body['status'] == 401 && ($body['error'] == "Unauthorized" || $body['error'] == "Invalid User")) { if($authType == "mainAuth") { generateToken(); return executeRESTCall($methode, $url, $data, $dataType, $requestHeader, $authType); } else { generateAssociateToken($authType); if(strpos($url, 'TrackingApp/track/mobile/put') == false) { $myfile = fopen(getAbsoluteSystemPathLN()."/"."lnFunctionLogOrder".date("m-Y").".txt", "a"); fwrite($myfile, "ELSE GENERATE ASS TOKEN"); fwrite($myfile, $methode); fwrite($myfile, $url); fwrite($myfile, $data); fwrite($myfile, $dataType); fwrite($myfile, getAssociateToken($authType)); fwrite($myfile, $authType); fwrite($myfile, "\n".gmdate("Y-m-d\TH:i:s\Z")); fwrite($myfile, "\n"); fclose($myfile); } return executeRESTCall($methode, $url, $data, "json", array('Content-Type:application/json', 'WWW-Authenticate:'. getAssociateToken($authType)), $authType); } } return array($headers, $body); } function array_to_xml($data, $xml_data, $parent) { foreach($data as $key => $value) { if(is_array($value)) { if(is_numeric($key)) { $subnode = $xml_data->addChild($parent); array_to_xml($value, $subnode, $key); } else { if(!is_numeric(array_keys($value)[0])) { $subnode = $xml_data->addChild($key); array_to_xml($value, $subnode, $key); } else { array_to_xml($value, $xml_data, $key); } } } else { if(is_numeric($key)) { $xml_data->addCData("$parent", htmlspecialchars("$value")); } else { $xml_data->addCData("$key", htmlspecialchars("$value")); } } } }