Example #1
0
    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;
}