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

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

Aug 09, 2015

Download

Software

Vitebsk MiniQ
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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/