Почему я не получаю все данные в манифесте? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть успешно загруженная и преобразованная модель, но мне также нужно извлечь манифест. К сожалению, когда я извлекаю манифест, я не получаю его полностью. Мне нужно получить весь манифест. Я попытался решить проблему, рекурсивно вызвав функцию, которая получает манифест, но в любом случае я не получил манифест полностью. Я хотел бы знать, по какой причине рекурсивно вызываемая функция также не получает манифест и как еще можно решить эту проблему.

function getManifest(getToken, urn) {
  return new Promise(async (resolve, reject) => {
    const baseUrl = "https://developer.api.autodesk.com";
    const url = `${baseUrl}/modelderivative/v2/designdata/${urn}/manifest`;
    const token = typeof getToken == "function" ? await getToken() : getToken;

    const fetch = () =>
      request(
        {
          url,
          method: "GET",
          headers: {
            Authorization: token,
            "Content-Type": "application/json",
            Accept: "application/json",
          },
          json: true,
        },
        async (err, response, body) => {
          if (err) {
            return reject(err);
          }

          if (body && body.errors) {
            return reject(body.errors);
          }

          if (body.progress !== "complete") {
            await require("util").promisify(setTimeout)(3000);
            return fetch();
          }

          if ([200, 201, 202].indexOf(response.statusCode) < 0) {
            return reject(response);
          }

          return resolve(body || {});
        },
      );

    return fetch();
  });
}

введите описание изображения здесь

1 Ответ

1 голос
/ 22 июня 2020

Когда задание на перевод публикуется, для завершения перевода требуется время (зависит от размера файла).

Если вы хотите получить манифест, как только перевод будет выполнен на 100%, используйте это webhook api и укажите идентификатор рабочего процесса в задании публикации, как показано здесь .

Для URL-адреса веб-перехватчика в режиме разработки вы можете использовать ngrok

...