24
Использование Google Drive API для управления хранилищем отчетов

Использование Google Drive API для управления хранилищем отчетов

Embed Size (px)

Citation preview

Page 1: Использование Google Drive API для управления хранилищем отчетов

Использование

Google Drive APIдля управления хранилищем отчетов

Page 2: Использование Google Drive API для управления хранилищем отчетов

Presented by Владимир Виноградов([email protected])

Page 3: Использование Google Drive API для управления хранилищем отчетов

Agenda

1. История

2. Возможности Google Drive API

3. Применение Google Drive API

Page 4: Использование Google Drive API для управления хранилищем отчетов

Взгляд в прошлое

Page 5: Использование Google Drive API для управления хранилищем отчетов

Постановка задачи

Page 6: Использование Google Drive API для управления хранилищем отчетов

Варианты решения

Page 7: Использование Google Drive API для управления хранилищем отчетов

Возможности Google Drive API

Page 8: Использование Google Drive API для управления хранилищем отчетов

Возможности Google Drive API

Управление метаданными файлов

Загрузка файлов с сервера

Передача файлов на сервер

Работа с папками

Совместное использование файлов

Управление ревизиями файлов

Поиск папок/файлов

Page 9: Использование Google Drive API для управления хранилищем отчетов

Применение Google Drive API

Page 10: Использование Google Drive API для управления хранилищем отчетов

Информация о Google Drive

About about = drive.about().get().execute();

//ROOT folder ID

about.getRootFolderId();

();

Page 11: Использование Google Drive API для управления хранилищем отчетов

Создание папок/файлов

import com.google.api.services.drive.model.File;……

File file = new File();file.setMimeType("application/vnd.google-apps.folder");file.setTitle(folderName);

ParentReference parent = new ParentReference();parent.setId(parentId);file.setParents(Arrays.asList(parent));

file = drive.files().insert(file).execute();……

Page 12: Использование Google Drive API для управления хранилищем отчетов

Создание папок/файлов

Page 13: Использование Google Drive API для управления хранилищем отчетов

Загрузка файлов на сервер

Drive.Files.Insert insert = drive.files()

.insert(file, mediaContent)

.setConvert(Boolean.TRUE);

MediaHttpUploader uploader = insert.getMediaHttpUploader();

uploader.setDirectUploadEnabled(false);

uploader.setProgressListener(new FileUploadProgressListener());

insert.execute();

Page 14: Использование Google Drive API для управления хранилищем отчетов

Загрузка файлов на сервер

InputStreamContent mediaContent =

new InputStreamContent("text/plain;charset=UTF-8",

new ByteArrayInputStream(text.getBytes()));

mediaContent.setLength(text.length());

Page 15: Использование Google Drive API для управления хранилищем отчетов

Поиск папки/файла

…List<String> itemIds = new ArrayList<String>();

for (ChildReference item : children.getItems()) {

File file = drive.files().get(item.getId()).execute();

if (BooleanUtils.isFalse(file.getExplicitlyTrashed())

&& StringUtils.equalsIgnoreCase(itemName, file.getTitle())) {

itemIds.add(file.getId());

}

}

Page 16: Использование Google Drive API для управления хранилищем отчетов

Потомки объектов

Children.List request = drive.children().list(parent.getFolderId());

do {

ChildList children = request.execute();

// обработка списка children

……

request.setPageToken(children.getNextPageToken());

} while (StringUtils.isNotEmpty(request.getPageToken()));

Page 17: Использование Google Drive API для управления хранилищем отчетов

Поделиться файлом

Permission permission = new Permission();

permission.setValue(USER_NAME);

permission.setType("user");

permission.setRole("writer");

drive.permissions().insert(itemId, permission).execute;();

Page 18: Использование Google Drive API для управления хранилищем отчетов

Итоги за год работы

();Количество отчетов более 5500

Объем отчетов более 10G

Количество пользователей 10+

Page 19: Использование Google Drive API для управления хранилищем отчетов
Page 20: Использование Google Drive API для управления хранилищем отчетов

Приложение

Page 21: Использование Google Drive API для управления хранилищем отчетов

1. Необходимые зависимости

<dependency><groupId>com.google.oauth-client</groupId><artifactId>google-oauth-client-jetty</artifactId><version>1.14.1-beta</version>

</dependency><dependency>

<groupId>com.google.http-client</groupId><artifactId>google-http-client</artifactId><version>1.14.1-beta</version>

</dependency><dependency>

<groupId>com.google.http-client</groupId><artifactId>google-http-client-jackson2</artifactId><version>1.14.1-beta</version>

</dependency><dependency>

<groupId>com.google.apis</groupId><artifactId>google-api-services-drive</artifactId><version>v2-rev70-1.14.1-beta</version>

</dependency>

Page 22: Использование Google Drive API для управления хранилищем отчетов

2. Подключение к Google Driveprivate static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();private static final JsonFactory JSON_FACTORY = new JacksonFactory();private static final MemoryCredentialStore CREDENTIAL_STORE = new MemoryCredentialStore();

………………….

public Drive getInstance() {

GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, IOUtils.toInputStream(CLIENT_SECRET_JSON));

GoogleCredential credential = new Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY).setClientSecrets(clientSecrets).build();

if (!credentialStore.load(userId, credential)) {

credential.setRefreshToken(refresh_token);

credential.setAccessToken(access_token);

credentialStore.store(userId, credential);

}

AuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(

HTTP_TRANSPORT,

JSON_FACTORY,

clientSecrets,

Collections.singleton(DriveScopes.DRIVE_FILE)

).setCredentialStore(CREDENTIAL_STORE).build();

Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize(client.getUserId());

return new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName("Application Name").build();

}

Page 23: Использование Google Drive API для управления хранилищем отчетов

2. Подключение к Google Drive

CLIENT_SECRET_JSON:

{"web": {

"auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","redirect_uris":[

"https://developers.google.com/oauthplayground","https://localhost"

],"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_email":"client email","client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/clientID","client_id":"clientID","client_secret":"client_secret"

}}

Page 24: Использование Google Drive API для управления хранилищем отчетов

3. Источники

https://developers.google.com/drive

https://developers.google.com/drive/v2/reference/