ОБНОВЛЕНИЕ: удаление флага x-ads-force: true из заданий после публикации устраняет эту проблему
У меня есть код, написанный на прошлой неделе, который проходит процесс извлечения метаданных из файла Fusion 360 с использованием forge. Этот код сработал - был создан эскиз и файл svf. Метаданные вернули guid, и я смог извлечь свойства.
Возвращаясь сегодня, этот процесс больше не работает. Задание для завершения эскиза запускается, и эскиз действительно создается. Кажется, что работа по созданию svf также завершена правильно, но манифест возвращает только один элемент - миниатюру.
Когда я извлекаю метаданные, guid отсутствует.
Я хочу повторить, что я написал код на прошлой неделе, и он работал нормально. Это было только в финальном тестировании, что оно не работает.
$ urn - это базовая кодированная урна, которая отлично подходит для создания миниатюр.
// Set up the data object
$metaData = '{
"input" : {
"urn" :"'.$urn.'"},
"output" :{
"formats" : [{"type":"svf",
"views":["2d", "3d"]
}]
}
}';
// POST THE JOBS
$url = 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $metaData );
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$token,
'x-ads-force:true',
'content-Type: application/json'
));
$response = curl_exec ($ch);
$err = curl_error($ch);
curl_close ($ch);
$jobStatus = "pending";
$numSteps = 0;
// STAY IN LOOP UNTIL STATUS IS GOOD
while ( ( $jobStatus != "good" ) && ( $jobStatus != "bad" ) && ( $numSteps < 50 ) )
{
sleep(10);
$url = 'https://developer.api.autodesk.com/modelderivative/v2/designdata/'.$urn.'/manifest';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$token
));
$response = curl_exec ($ch);
$err = curl_error($ch);
curl_close ($ch);
$response = json_decode($response);
if ( $response->status == "success" )
{
$jobStatus = "good";
}else if ( ( $response->status == "failed" ) || ( $response->status == "timeout" ) )
{
$jobStatus = "bad";
}
$numSteps = $numSteps + 1;
}
Ответ здесь следующий:
object(stdClass)#769 (8) {
["type"]=>
string(8) "manifest"
["hasThumbnail"]=>
string(4) "true"
["status"]=>
string(7) "success"
["progress"]=>
string(8) "complete"
["region"]=>
string(2) "US"
["urn"]=>
string(80) "dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLk1UTm1FS2RBUTc2VWVVVFVhVUtlRFE_dmVyc2lvbj01"
["version"]=>
string(3) "1.0"
["derivatives"]=>
array(1) {
[0]=>
object(stdClass)#801 (4) {
["status"]=>
string(7) "success"
["progress"]=>
string(8) "complete"
["outputType"]=>
string(9) "thumbnail"
["children"]=>
array(1) {
[0]=>
object(stdClass)#717 (6) {
["guid"]=>
string(36) "e163169a-4ada-4e9c-99c8-8e8083cc9969"
["type"]=>
string(8) "resource"
["urn"]=>
string(124) "urn:adsk.viewing:fs.file:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLk1UTm1FS2RBUTc2VWVVVFVhVUtlRFE_dmVyc2lvbj01/output/256x256.png"
["resolution"]=>
array(2) {
[0]=>
int(256)
[1]=>
int(256)
}
["mime"]=>
string(9) "image/png"
["role"]=>
string(9) "thumbnail"
}
}
}
}
}
Конечная точка метаданных затем возвращает пустой массив.
Не похоже, что задание svf запущено?