Пример провайдера к внешнему хранилищу Google Drive
В данном пункте рассмотрен пример создания провайдера к внешнему хранилищу Google Drive для хранения бинарных данных файлов Docsvision.
|
Данный пример не является готовым решением для использования Google Drive в качестве внешнего хранилища, а только демонстрирует способ создания провайдера к нему. |
Облачное хранилище Google Drive предоставляет возможность и API для работы с файлами из собственного приложения. Инструкция по работе с Google Drive API приведена на этой странице.
Для работы с Google Drive в данном примере используется предоставляемая реализация обертки для работы с Google Drive API в .NET (NuGet пакет).
Исходный код примера доступен по ссылке.
-
GoogleDriveStorageProvider— проект компонента провайдера к файловому хранилищу с классами:-
GoogleDriveStorage— класс провайдера с реализацией интерфейсовIBinaryStorage,IExtensionInitialize,IStreamedBinaryStorage,IEnumerableBinaryStorage. -
GoogleDriveProviderPropertyControl— класс графического интерфейса настройки провайдера. -
GoogleDriveProxy— класс-посредник для работы с Google Drive API. -
ProviderSettings— вспомогательный класс с методами сериализации и десериализации настроек провайдера. -
LogWriter— вспомогательный класс журналирования работы провайдера. -
LocalizedDisplayNameAttribute— класс для получения локализованных ресурсов в атрибутах класса.
-
-
AskToken— проект консольного приложения для получения токена для работы с Google Drive.
Требования примера
-
Microsoft Visual Studio 2015 или выше.
-
Microsoft .NET Framework 4.6.1.
Последовательность работы с примером
-
Распакуйте архив примера на локальный диск.
-
Получите файл с конфигурацией клиента (
credentials.json) по инструкции в шаге 1 на странице. Потребуется авторизоваться в Google. -
Загрузите файл
credentials.jsonв папкуGoogleDriveStorageProvider\AskToken\bin\Debug\распакованного архива примера. -
Включите в Visual Studio настройку Allow Nuget to download missing package для автоматической загрузки необходимых пакетов библиотеки Google Drive API.
-
Повторно подключите зависимости
DocsVision.Platform.StorageServerиDocsVision.Platform.WinFormsв проектеGoogleDriveStorageProvider. К проекту должны быть подключены компоненты, используемые на сервере Docsvision. -
Соберите проект
GoogleDriveStorageProvider. -
Соберите и запустите проект
AskToken. В процессе работы программыAskTokenбудет вызван код из классаGoogleDriveProxy(проектGoogleDriveStorageProvider):using (var stream = new FileStream(credentialsFile, FileMode.Open, FileAccess.Read)) { credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, new string[] { DriveService.Scope.Drive }, "user", CancellationToken.None, new FileDataStore(tokenFolder, true)).Result; logWriter.Write("Токен получен из папки: " + tokenFolder); }Данный код сформирует файл с токеном, который необходим для работы с API Google Drive (см. описание в шаге 3 данного примера). Для получения токена нужно разрешить приложению (название приложения указывается при выполнении п. 2) доступ к аккаунту Google.
Токен будет сохранен в папку
GoogleDriveStorageProvider\AskToken\bin\Debug\token.json\. -
Скопируйте на сервер Docsvision файлы из папки
GoogleDriveStorageProvider\bin\Debug\:-
GoogleDriveStorageProvider.dll, -
ru\GoogleDriveStorageProvider.resources.dll, -
Google.Apis.Drive.v3.dll, -
Google.Apis.Auth.PlatformServices.dll, -
Google.Apis.Auth.dll, -
Google.Apis.PlatformServices.dll, -
Google.Apis.Core.dll, -
Google.Apis.dll, -
Newtonsoft.Json.dll.
-
-
Зарегистрируйте в GAC скопированные файлы.
-
Скопируйте на сервер Docsvision папку
AskToken\bin\Debug\token.json\и файлAskToken\bin\Debug\credentials.json. Данные файлы потребуются для работы провайдера к Google Drive. Файл и папку нужно скопировать в каталог доступный для сервера Docsvision, но недоступный рядовым пользователям (из-за наличия конфиденциальных данных в файлах). -
Подключите новый тип хранилища к Docsvision.
Проверяйте работу компонентов на тестовом сервере Docsvision. -
Откройте Консоль настройки Docsvision.
-
Перейдите в раздел . Выберите настраиваемую БД и нажмите кнопку Настройка., чтобы открыть окно Свойства и управление базой данных.
-
Перейдите на вкладку Внешние хранилища.
-
Добавьте новое хранилище. В окне настройки хранилища в поле Тип нужно выбрать вариант Добавить из сборки и выбрать файл
GoogleDriveStorageProvider.dllиз каталога GAC. В список типов хранилищ будет добавлено хранилище с названием "Хранилище в Google Drive". -
Настройте новое хранилище с типом "Хранилище в Google Drive", группу и правило помещения в хранилище следуя инструкции, приведенной в документации модуля Платформа.
При настройке хранилища необходимо указать: путь к файлу
credentials.jsonи папкеtoken.json(загружены в п. 10), путь к файлу журнала работы провайдера.
Рисунок 1. Пример настройки хранилища в Google DriveПосле перезапуска сервера Docsvision (будет выполнен после добавления хранилища) в Google Drive будут созданы две папки:-
DV_PrimaryPart— представляет раздел для основных файлов. -
DV_ArchivePart— представляет раздел для архивных файлов.Проверить работу провайдера можно настроив правило на помещение в хранилище файлов с расширением
.pdf. При добавлении в карточку Docsvision файла с типом.pdf, соответствующий файл будет загружен в Google Drive.
-
-