From 17b6edac507619f59c4dd705319d64cb1e0fe2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Wa=C5=9Bko?= Date: Wed, 15 Jan 2025 19:41:47 +0100 Subject: [PATCH] using non deprecated Credentials API --- .../Google_Api/0.0.0-dev/src/Google_Sheets.enso | 5 +---- .../org/enso/google/GoogleOAuthSecretReader.java | 6 +++--- .../java/org/enso/google/GoogleSheetsHelpers.java | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso b/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso index 79f411bad67c0..030ec35708fd0 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso @@ -31,7 +31,6 @@ type Google_Sheets Google Admin Console when generating a key. initialize : File|Enso_Secret -> Google_Sheets initialize secret_file = - app_name = 'Enso' base_credential = case secret_file of secret : Enso_Secret -> # TODO to avoid passing credentials around, prod should probably create instance of Sheets and return it here @@ -41,9 +40,7 @@ type Google_Sheets stream.with_java_stream is-> GoogleCredential.fromStream is credential = base_credential.createScoped (Collections.singleton SheetsScopes.SPREADSHEETS) - http_transport = GoogleNetHttpTransport.newTrustedTransport - json_factory = GsonFactory.getDefaultInstance - service = Sheets.Builder.new http_transport json_factory credential . setApplicationName app_name . build + service = GoogleSheetsHelpers.createService credential Google_Sheets.Service service ## ICON data_input diff --git a/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthSecretReader.java b/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthSecretReader.java index fddbe065cd011..b837b4f19df9e 100644 --- a/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthSecretReader.java +++ b/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthSecretReader.java @@ -1,6 +1,6 @@ package org.enso.google; -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; +import com.google.auth.oauth2.GoogleCredentials; import org.enso.base.enso_cloud.ExternalLibrarySecretHelper; import org.enso.base.enso_cloud.HideableValue; @@ -8,11 +8,11 @@ import java.io.IOException; public class GoogleOAuthSecretReader { - public static GoogleCredential createCredentialFromSecretValue(HideableValue secretValue) { + public static GoogleCredentials createCredentialFromSecretValue(HideableValue secretValue) { String payload = ExternalLibrarySecretHelper.resolveValue(secretValue); ByteArrayInputStream stream = new ByteArrayInputStream(payload.getBytes()); try { - return GoogleCredential.fromStream(stream); + return GoogleCredentials.fromStream(stream); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/std-bits/google-api/src/main/java/org/enso/google/GoogleSheetsHelpers.java b/std-bits/google-api/src/main/java/org/enso/google/GoogleSheetsHelpers.java index f6c5f57692cf3..23c5b22f397c0 100644 --- a/std-bits/google-api/src/main/java/org/enso/google/GoogleSheetsHelpers.java +++ b/std-bits/google-api/src/main/java/org/enso/google/GoogleSheetsHelpers.java @@ -1,8 +1,13 @@ package org.enso.google; +import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; +import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.sheets.v4.Sheets; +import com.google.auth.http.HttpCredentialsAdapter; +import com.google.auth.oauth2.GoogleCredentials; import java.io.IOException; +import java.security.GeneralSecurityException; import java.util.List; public class GoogleSheetsHelpers { @@ -16,4 +21,14 @@ public static List> getSheetRange(Sheets service, String sheetId, S .execute() .getValues(); } + + public static Sheets createService(GoogleCredentials credentials) throws GeneralSecurityException, IOException { + var credentialsAdapter = new HttpCredentialsAdapter(credentials); + Sheets.Builder builder = new Sheets.Builder( + GoogleNetHttpTransport.newTrustedTransport(), + GsonFactory.getDefaultInstance(), + credentialsAdapter + ).setApplicationName("Enso"); + return builder.build(); + } }