From d0d5768d94764bfaf87e74f0dc8b2f5dfb2cdbc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D1=8C=D0=B3=D0=B0=20=D0=A0=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=B0?= <osrudakova@miem.hse.ru> Date: Tue, 12 Jan 2021 23:13:19 +0300 Subject: [PATCH] Add auth to watch channel (first commit) --- .../media_archive/google/GoogleService.java | 21 ++++++++++++++---- target/MediaArchive-1.0-SNAPSHOT.jar | Bin 41467362 -> 41467696 bytes 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rudakova/media_archive/google/GoogleService.java b/src/main/java/com/rudakova/media_archive/google/GoogleService.java index ba94281..19ef37c 100644 --- a/src/main/java/com/rudakova/media_archive/google/GoogleService.java +++ b/src/main/java/com/rudakova/media_archive/google/GoogleService.java @@ -19,12 +19,17 @@ import com.rudakova.media_archive.service.AuthService; import com.rudakova.media_archive.service.RestService; import com.rudakova.media_archive.util.FileUtil; import com.rudakova.media_archive.util.HashCalculator; +import org.mortbay.util.MultiMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; +import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.BufferedInputStream; @@ -207,10 +212,7 @@ public class GoogleService { if (mimeType.equals("application/vnd.google-apps.folder")) { folders.offer(file.getId()); if (Arrays.asList(env.getActiveProfiles()).contains("prod")) { - String response = - restTemplate.postForObject("https://www.googleapis.com/drive/v3/files/{fileID}/watch", - new NotificationDto(), String.class, file.getId()); - LOG.info(response); + setWatchChannel(file.getId(), account); } fileRepository.save(FileConverter.convertFromGoogleFile(file, account, folderId)); } else if (mimeType.contains("video")) { @@ -224,6 +226,17 @@ public class GoogleService { return nextPageToken; } + private void setWatchChannel(String id, Account account) { + final String url = "https://www.googleapis.com/drive/v3/files/{fileID}/watch"; + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + httpHeaders.setBearerAuth(account.getToken()); + + HttpEntity<NotificationDto> entity = new HttpEntity<>(new NotificationDto(), httpHeaders); + String response = restTemplate.postForObject(url, entity, String.class, id); + LOG.info(response); + } + private void savePreview(com.google.api.services.drive.model.File file) { try { BufferedInputStream in = diff --git a/target/MediaArchive-1.0-SNAPSHOT.jar b/target/MediaArchive-1.0-SNAPSHOT.jar index 856add5019faf1d4a5dc4c56ccd23c633c7ab40a..d5214f2533194f0441e08d0c15257a91c58762c1 100644 GIT binary patch delta 13594 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 L=K(J|yx0E^w-E?g delta 13207 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 -- GitLab