Skip to content

Instantly share code, notes, and snippets.

View Ikhiloya's full-sized avatar

Ikhiloya Ikhiloya

View GitHub Profile
InputStream firebaseCredential = createFirebaseCredential();
this.storageOptions = StorageOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(GoogleCredentials.fromStream(firebaseCredential))
.build();
IOUtils.toInputStream(jsonString);
IOUtils.toInputStream(jsonString);
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(firebaseCredential);
FirebaseCredential firebaseCredential = new FirebaseCredential();
//private key
String privateKey = environment.getRequiredProperty("FIREBASE_PRIVATE_KEY").replace("\\n", "\n");
firebaseCredential.setType(environment.getRequiredProperty("FIREBASE_TYPE"));
firebaseCredential.setProject_id(projectId);
firebaseCredential.setPrivate_key_id("FIREBASE_PRIVATE_KEY_ID");
firebaseCredential.setPrivate_key(privateKey);
firebaseCredential.setClient_email(environment.getRequiredProperty("FIREBASE_CLIENT_EMAIL"));
firebaseCredential.setClient_id(environment.getRequiredProperty("FIREBASE_CLIENT_ID"));
@Ikhiloya
Ikhiloya / FirebaseEnvironmentVariables.properties
Last active July 20, 2020 23:34
Environment variables to hold firebase service account configuration
FIREBASE_BUCKET_NAME=<add-the-value-from-service-account-file.json>
FIREBASE_PROJECT_ID=<add-the-value-from-service-account-file.json>
FIREBASE_TYPE=<add-the-value-from-service-account-file.json>
FIREBASE_PRIVATE_KEY_ID=<add-the-value-from-service-account-file.json>
FIREBASE_PRIVATE_KEY=<add-the-value-from-service-account-file.json>
FIREBASE_CLIENT_EMAIL=<add-the-value-from-service-account-file.json>
FIREBASE_CLIENT_ID=<add-the-value-from-service-account-file.json>
FIREBASE_AUTH_URI=<add-the-value-from-service-account-file.json>
FIREBASE_TOKEN_URI=<add-the-value-from-service-account-file.json>
@Ikhiloya
Ikhiloya / FirebaseCredential.java
Last active July 20, 2020 23:34
A class to hold firebase configuration file
public class FirebaseCredential {
private String type;
private String project_id;
private String private_key_id;
private String private_key;
private String client_email;
private String client_id;
private String auth_uri;
private String token_uri;
private String auth_provider_x509_cert_url;
@Service
public class StorageFactory {
private final Logger log = LoggerFactory.getLogger(StorageFactory.class);
private final Environment environment;
private final FirebaseStorageStrategy firebaseStorageStrategy;
private final FileStorageStrategy fileStorageStrategy;
public StorageFactory(Environment environment, FirebaseStorageStrategy firebaseStorageStrategy, FileStorageStrategy fileStorageStrategy) {
this.environment = environment;
@Ikhiloya
Ikhiloya / FirebaseStorageStrategy.java
Last active July 20, 2020 23:10
Storage Strategy for firebase upload and download
@Service
public class FirebaseStorageStrategy implements StorageStrategy {
private final Logger log = LoggerFactory.getLogger(FirebaseStorageStrategy.class);
private final Environment environment;
private StorageOptions storageOptions;
private String bucketName;
private String projectId;
public FirebaseStorageStrategy(Environment environment) {
this.environment = environment;
@Ikhiloya
Ikhiloya / FirebaseAdminInitialization.java
Last active July 22, 2020 09:35
Firebase Admin Storage initialization
String bucketName = environment.getRequiredProperty("FIREBASE_BUCKET_NAME");
String projectId = environment.getRequiredProperty("FIREBASE_PROJECT_ID");
FileInputStream serviceAccount =
new FileInputStream("/home/user/Downloads/service-account-file.json");
StorageOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();