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

04/04/2016

AppPackage API в AutoCAD I/O API - Часть 1

AppPackage это модуль, который может быть загружен  в основном ядре AutoCAD, который содержит функции, которые он может выполнять. Все AppPackages должны быть пакетами AutoCAD AutoLoader. Это могут быть архивные файлы, содержащие DLL, код LISP, или другие модули, которые могут быть загружены в основной движок AutoCAD. Ниже приведен пример AppPackage. Ниже приведен пример AppPackage.

Код - HTML: [Выделить]
  1. {
  2.         "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  3.         ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/54b48200-37e9-4f43-8392-4974b7d9dcd2?               AWSAccessKeyId=AK
  4.         IAJVT56CBNM4XOWBBA&Expires=1432145046&Signature=%2BRuYHEJ1JIXlXx6l1788uDpn66E%3D","RequiredEngineVersion":"20.0","IsPublic":false,
  5.         "IsObjectEnabler":false,"Id":"MyAppPackage","Id":"MyAppPackage","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  6. }

Эти пакеты приложений определяют модуль автозагрузчика AutoCAD, расположенный по "Resource" URL. Он имеет следующие параметры:

  1. "Id": Определяет уникальное имя. Этот параметр является обязательным.
  2. "Resource": определяет расположение модуля.
  3. "References": включают в себя ссылки AppPackages. В большинстве случаев он пуст. Но если ваш AppPackage зависит от других AppPackages, необходимо указать их идентификаторы здесь.
  4. "RequiredEngineVersion": указывает версию AutoCAD для запуска AppPackage. Вы можете получить значение с помощью команды "ACADVER" в AutoCAD.
  5. "version": определяет количество AppPackage версии.
  6. "Timestamp": определяет время, когда AppPackage был в последний раз создан/изменен. Вы можете пропустить его при создании AppPackage.
  7. "Description": Определяет более подробную информацию о AppPackage. Это свойство является необязательным.

Пользователь может создавать/читать/обновлять/удалять (create/read/update/delete - CRUD) пакеты AppPackage.

Для создания AppPackage

Модуль AppPackage хранится в Simple Storage Service  (S3) от Amazon, который управляется Autodesk. Это делается для того, чтобы модуль был всегда доступен при необходимости. Прежде чем объект AppPackage может быть создан, модуль должен быть загружен на Amazon S3 пользователем. Чтобы создать свой собственный модуль AppPackage, выполните следующие действия.

  1. Запросите предварительно подписанный URL, который будет использоваться для загрузки модуля файла.
  2. Загрузите файл
  3. Создайте AppPackage, ссылающийся на файл модуля.

Шаг 1: Запросите предварительно подписанный URL

GET autocad.io/us-east/v2/AppPackages/Operations.GetUploadUrl

Запросите предварительно подписанный URL для загрузки

Пример успешного запроса:

Код - HTML: [Выделить]
  1. GET /autocad.io/us-east/v2/AppPackages/Operations.GetUploadUrl HTTP/1.1
  2. Authorization: Bearer my_token

Пример успешного ответа:

Код - HTML: [Выделить]
  1. HTTP/1.1 200 OK
  2. Cache-Control: no-cache
  3. Content-Type: application/json; charset=utf-8
  4. Date: Mon, 12 May 2014 21:29:13 GMT
  5. Expires: -1
  6. Pragma: no-cache
  7. Server: Microsoft-IIS/8.0
  8. X-AspNet-Version: 4.0.30319
  9. X-Powered-By: ASP.NET
  10. Content-Length: 1036
  11. Connection: keep-alive
  12.  
  13. {
  14.           "@odata.context":"http://localhost:39284/api/v2/$metadata#Edm.String","value":"https://acesdev.s3-us-west-2.amazonaws.com/aces-ap
  15.           ppackages/ClientConsole-Dev/8f4cae3e-c17e-4f7a-9df9-1c4703b69889?AWSAccessKeyId=AKIAJVT56CBNM4XOWBBA&Expires=1432146217&Signature=
  16.           1L%2BUF8aGM%2BZFwjHOLsxXRDQ%2FhfY%3D"
  17.   }

Шаг 2: Загрузить файл модуля

GET autocad.io/us-east/v2/AppPackages/Operations.GetUploadUrl(RequireContentType=true)

После получения предварительно подписанного URL, пользователь имеет 24 часа, чтобы выгрузить файл модуля. В вашем запросе выгрузки, вы не должны указывать заголовок Content-Type. Однако, если ваша библиотека требует установки Content-Type заголовка, то вы должны вызвать API, упомянутое в этом шаге, с параметром RequireContentType, установленным в true. Убедитесь, что значение вашего Content-Type является "binary/octet-stream".

Шаг 3: Создание AppPackage

POST autocad.io/us-east/v2/AppPackages

Создает модуль AppPackage. Если имеется существующий модуль AppPackage, отобразится ошибка 302 - "An apppackage with the same UserId and Id is found. Please use Put or Patch to update.”.

Пример успешного запроса:

Код - HTML: [Выделить]
  1. POST /autocad.io/us-east/v2/AppPackages HTTP/1.1
  2. Content-Type: application/json
  3. Authorization: Bearer my_token
  4. Host: autocad.io
  5. Content-Length: 1173
  6.  
  7. {
  8.             "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  9.             ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/8f4cae3e-c17e-4f7a-9df9-1c4703b69889?AWSAccessKeyId=AK
  10.             IAJVT56CBNM4XOWBBA&Expires=1432146217&Signature=1L%2BUF8aGM%2BZFwjHOLsxXRDQ%2FhfY%3D","RequiredEngineVersion":"20.0","IsPublic":false,
  11.             "IsObjectEnabler":false,"Id":"SampleApp","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  12.     }

Пример успешного ответа:

Код - HTML: [Выделить]
  1. HTTP/1.1 201 Created
  2. Cache-Control: no-cache
  3. Content-Type: application/json; charset=utf-8
  4. Date: Mon, 12 May 2014 21:13:50 GMT
  5. Expires: -1
  6. Location: https://developer.api.autodesk.com/autocad.io/us-east/v2/AppPackages('SampleApp')
  7. Pragma: no-cache
  8. Server: Microsoft-IIS/8.0
  9. X-AspNet-Version: 4.0.30319
  10. X-Powered-By: ASP.NET
  11. Content-Length: 1175
  12. Connection: keep-alive
  13.  
  14. {
  15.             "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  16.             ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/8f4cae3e-c17e-4f7a-9df9-1c4703b69889?AWSAccessKeyId=AK
  17.             IAJVT56CBNM4XOWBBA&Expires=1432146217&Signature=1L%2BUF8aGM%2BZFwjHOLsxXRDQ%2FhfY%3D","RequiredEngineVersion":"20.0","IsPublic":false,
  18.             "IsObjectEnabler":false,"Id":"SampleApp","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  19.     }

Коды статуса:

Коды статуса HTTP

Сообщение разработчика

201

AppPackage успешно создан.

302

Найден Apppackage с таким же Id. Для обновления используйте Put или Patch.

401

Недостаточно прав для выполнения этой операции.

500

Внутренняя ошибка сервера

Заголовки запроса

Заголовок запроса

Описание

Content-Type

– application/x-www-form-urlencoded

Authorization

- Предъявитель my_token

Чтобы получить AppPackage

GET autocad.io/us-east/v2/AppPackages('{my_id}')

Получить конкретный apppackage

Пример успешного запроса:

Код - HTML: [Выделить]
  1. GET /autocad.io/us-east/v2/AppPackages('SampleApp') HTTP/1.1
  2. Accept: application/json
  3. Accept-Charset: UTF-8
  4. Authorization: Bearer my_token
  5. Host: autocad.io

Пример успешного ответа:

Код - HTML: [Выделить]
  1. HTTP/1.1 200 OK
  2. Cache-Control: no-cache
  3. Content-Type: application/json; odata=minimalmetadata; streaming=true; charset=utf-8
  4. Date: Mon, 12 May 2014 21:40:13 GMT
  5. Expires: -1
  6. Pragma: no-cache
  7. Server: Microsoft-IIS/8.0
  8. X-AspNet-Version: 4.0.30319
  9. X-Powered-By: ASP.NET
  10. Content-Length: 1179
  11. Connection: keep-alive
  12.  
  13.   {
  14.             "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  15.             ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/8f4cae3e-c17e-4f7a-9df9-1c4703b69889?AWSAccessKeyId=AK
  16.             IAJVT56CBNM4XOWBBA&Expires=1432146217&Signature=1L%2BUF8aGM%2BZFwjHOLsxXRDQ%2FhfY%3D","RequiredEngineVersion":"20.0","IsPublic":false,
  17.             "IsObjectEnabler":false,"Id":"SampleApp","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  18.       }

Заголовки запроса

Заголовок запроса

Описание

Authorization

- Предъявитель my_token

Примечание: Значение ресурса (предварительно подписанная гиперссылка) повторно создается каждый раз, когда она запрашивается. Она доступна только для чтения, так что

вы не можете использовать её для загрузки обновленный файл модуля. Чтобы сделать это, вы должны снова пройти весь процесс создания и обновить AppPackage на шаге 3, вместо создания нового.

Чтобы получить все AppPackages

GET autocad.io/us-east/v2/AppPackages

Получить все AppPackages

Пример успешного запроса:

Код - HTML: [Выделить]
  1. GET /autocad.io/us-east/v2/AppPackages HTTP/1.1
  2. Accept: application/json
  3. Accept-Charset: UTF-8
  4. Authorization: Bearer my_token
  5. Host: autocad.io

Пример успешного ответа:

Код - HTML: [Выделить]
  1. HTTP/1.1 200 OK
  2. Cache-Control: no-cache
  3. Content-Type: application/json; charset=utf-8
  4. Date: Mon, 12 May 2014 21:39:00 GMT
  5. Expires: -1
  6. Pragma: no-cache
  7. Server: Microsoft-IIS/8.0
  8. X-AspNet-Version: 4.0.30319
  9. X-Powered-By: ASP.NET
  10. Content-Length: 3354
  11. Connection: keep-alive
  12.  
  13. {
  14.   "odata.metadata":"https://developer.api.autodesk.com/autocad.io/us-east/v2/$metadata#AppPackages","value":[
  15.     {
  16.             "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  17.             ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/8f4cae3e-c17e-4f7a-9df9-1c4703b69889?AWSAccessKeyId=AK
  18.             IAJVT56CBNM4XOWBBA&Expires=1432146217&Signature=1L%2BUF8aGM%2BZFwjHOLsxXRDQ%2FhfY%3D","RequiredEngineVersion":"20.0","Public":false,
  19.             "Id":"SampleApp","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  20.         },{
  21.             "@odata.context":"http://localhost:39284/api/v2/$metadata#AppPackages/$entity","References":[
  22.             ],"Resource":"https://acesdev.s3-us-west-2.amazonaws.com/aces-apppackages/ClientConsole-Dev/54b48200-37e9-4f43-8392-4974b7d9dcd2?AWSAccessKeyId=AK
  23.             IAJVT56CBNM4XOWBBA&Expires=1432145046&Signature=%2BRuYHEJ1JIXlXx6l1788uDpn66E%3D","RequiredEngineVersion":"20.0","IsPublic":false,
  24.             "IsObjectEnabler":false,"Id":"MyAppPackage","Version":1,"Timestamp":"2015-02-11T19:15:40.835Z","Description":""
  25.         }
  26.   ]
  27. }

Заголовки запроса

Заголовок запроса

Описание

Authorization

- Предъявитель my_token

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

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

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