/**************************************************************************************
https://camel-extra.github.io
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
http://www.gnu.org/licenses/lgpl-3.0-standalone.html
***************************************************************************************/
package org.apache.camel.component.firebase;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.UUID;
/**
* Contains the elements needed to connect to Firebase
*/
public final class FirebaseConfig {
private final String databaseUrl;
private final String rootReference;
private final String serviceAccountFile;
private final String keyName;
private final boolean async;
private FirebaseApp firebaseApp;
private FirebaseConfig(Builder builder) {
this.databaseUrl = builder.databaseUrl;
this.rootReference = builder.rootReference;
this.serviceAccountFile = builder.serviceAccountFile;
this.keyName = builder.keyName;
this.async = builder.async;
}
public void init() throws IOException {
try (InputStream in = Files.newInputStream(Paths.get(serviceAccountFile))) {
FirebaseOptions options = new FirebaseOptions.Builder()
.setServiceAccount(in)
.setDatabaseUrl(this.databaseUrl)
.build();
firebaseApp = FirebaseApp.initializeApp(options, UUID.randomUUID().toString());
}
}
public String getDatabaseUrl() {
return databaseUrl;
}
public String getRootReference() {
return rootReference;
}
public String getServiceAccountFile() {
return serviceAccountFile;
}
public String getKeyName() {
return keyName;
}
public FirebaseApp getFirebaseApp() {
return firebaseApp;
}
public boolean isAsync() {
return async;
}
public static class Builder {
private final String databaseUrl;
private final String rootReference;
private final String serviceAccountFile;
private String keyName;
private boolean async;
public Builder(String databaseUrl, String rootReference, String serviceAccountFile) {
this.databaseUrl = databaseUrl;
this.rootReference = rootReference;
this.serviceAccountFile = serviceAccountFile;
}
public Builder setKeyName(String keyName) {
this.keyName = keyName;
return this;
}
public Builder setAsync(boolean async) {
this.async = async;
return this;
}
public FirebaseConfig build() {
return new FirebaseConfig(this);
}
}
}