die('Usage: ".$argv[0]." artifact_id attachement_id' . PHP_EOL); } $serverURL = isset($_SERVER['TULEAP_SERVER']) ? $_SERVER['TULEAP_SERVER'] : 'http://sonde.cro.enalean.com'; $login = isset($_SERVER['TULEAP_USER']) ? $_SERVER['TULEAP_USER'] : '******'; $password = isset($_SERVER['TULEAP_PASSWORD']) ? $_SERVER['TULEAP_PASSWORD'] : '******'; $soapLogin = new SoapClient($serverURL . '/soap/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE)); // Establish connection to the server $requesterSessionHash = $soapLogin->login($login, $password)->session_hash; //save values $artifact_id = $argv[1]; $attachment_id = $argv[2]; $offset = 0; $size = 2000; $filename = 'unknown_file'; // Connecting to the soap's tracker client $soapTracker = new SoapClient($serverURL . '/plugins/tracker/soap/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE)); // Brute force search of attachement name based on ID $artifact = $soapTracker->getArtifact($requesterSessionHash, '', '', $artifact_id); foreach ($artifact->value as $field_value) { if (isset($field_value->field_value->file_info)) { foreach ($field_value->field_value->file_info as $file_info) { if ((int) $file_info->id == $attachment_id) { $filename = (string) $file_info->filename; } } } } while ($response = $soapTracker->getArtifactAttachmentChunk($requesterSessionHash, $artifact_id, $attachment_id, $offset, $size)) { file_put_contents($filename, base64_decode($response), FILE_APPEND); $offset += $size; }