1 package com.android.vts.util; 2 3 import com.google.auth.oauth2.ServiceAccountCredentials; 4 import com.google.cloud.storage.Storage; 5 import com.google.cloud.storage.StorageOptions; 6 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.util.Optional; 10 import java.util.logging.Level; 11 import java.util.logging.Logger; 12 13 /** GcsHelper, a helper class for interacting with Google Cloud Storage. */ 14 public class GcsHelper { 15 private static final Logger logger = Logger.getLogger(GcsHelper.class.getName()); 16 17 /** Google Cloud Storage project ID */ 18 private static String GCS_PROJECT_ID; 19 setGcsProjectId(String gcsProjectId)20 public static void setGcsProjectId(String gcsProjectId) { 21 GCS_PROJECT_ID = gcsProjectId; 22 } 23 24 /** 25 * Get GCS storage from Key file input stream parameter. 26 */ getStorage(InputStream keyFileInputStream)27 public static Optional<Storage> getStorage(InputStream keyFileInputStream) { 28 29 if (keyFileInputStream == null) { 30 logger.log(Level.SEVERE, "Error GCS key file is not exiting. Check key file!"); 31 return Optional.empty(); 32 } else { 33 try { 34 Storage storage = 35 StorageOptions.newBuilder() 36 .setProjectId(GCS_PROJECT_ID) 37 .setCredentials( 38 ServiceAccountCredentials.fromStream(keyFileInputStream)) 39 .build() 40 .getService(); 41 return Optional.of(storage); 42 } catch (IOException e) { 43 logger.log(Level.SEVERE, "Error on creating storage instance!"); 44 return Optional.empty(); 45 } 46 } 47 } 48 } 49