ADN Open CIS
Сообщество программистов Autodesk в СНГ

02/04/2017

Миграция кода для использования пакета npm forge-apis

Новый пакет (forge-apis) на самом деле немного проще в использовании и также миграция довольно простая.

С предыдущим необходимо было сделать что-то вроде этого, чтобы установить токен для использования:

Код - JavaScript: [Выделить]
  1. forgeDM.ApiClient.instance.authentications ['oauth2_access_code'].accessToken = tokenSession.getTokenInternal();
  2. // или
  3. forgeDM.ApiClient.instance.authentications ['oauth2_application'].accessToken = tokenSession.getTokenInternal();

С новым это не нужно.

Кроме того, теперь, вместо того, чтобы просто хранить токен доступа, проще хранить объекты аутентификации и учетных данных, которые используются в коде ниже:

Код - JavaScript: [Выделить]
  1. var forgeSDK = require('forge-apis');
  2. var authentication = new forgeSDK.AuthClientThreeLegged(client_id, client_secret, callbackURL, scope);
  3. authentication.getToken(code)
  4.   .then(function (credentials) {
  5.     storeCredentials(credentials);
  6.     storeAuthentication(authentication);
  7.   });
  8. // область доступа должна быть массивом значений областей доступа, которые вам нужны, например:
  9. // scope = ['data:read', 'data:write'];

Тогда вы можете сможете продолжать передавать эти два объекта всем другим API-вызовам, например:

Код - JavaScript: [Выделить]
  1. var projects = new forgeSDK.ProjectsApi();
  2. projects.getHubProjects(resourceId/*hub_id*/, {null}, authentication, credentials)
  3.   .then(function (projects) {
  4.     // сделать что-то
  5.   }); 

При переносе вызовов функций, в большинстве случаев вы просто должны добавить три дополнительных вводных параметра:

options, authentication, credentials

Код - JavaScript: [Выделить]
  1. // старый вызов API
  2. var folders = new forgeDM.FoldersApi();
  3. folders.getFolderContents(projectId, folderId)
  4.  
  5. // новый вызов API
  6. var folders = new forgeSDK.FoldersApi();
  7. folders.getFolderContents(projectId, folderId, {}, authentication, credentials)

Впрочем, не все новые функции имеют параметр для ввода опций, так что лучше проверить объявление функции, чтобы убедиться, содержит ли она параметр "opts".

Как вы можете видеть, перенести код не так сложно, так что ничто не мешает вам использовать последнюю версию пакета npm :)

Источник: https://forge.autodesk.com/blog/migrating-forge-apis-npm-package

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 02.04.2017