Files
adif-api-reverse-engineering/apk_decompiled/sources/com/google/firebase/messaging/GmsRpc.java

187 lines
8.8 KiB
Java

package com.google.firebase.messaging;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import com.google.android.gms.cloudmessaging.Rpc;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.heartbeatinfo.HeartBeatInfo;
import com.google.firebase.inject.Provider;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.installations.InstallationTokenResult;
import com.google.firebase.platforminfo.UserAgentPublisher;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.ExecutionException;
import n.ExecutorC0507a;
/* loaded from: classes3.dex */
public class GmsRpc {
static final String CMD_RST = "RST";
static final String CMD_RST_FULL = "RST_FULL";
static final String CMD_SYNC = "SYNC";
static final String ERROR_INSTANCE_ID_RESET = "INSTANCE_ID_RESET";
static final String ERROR_INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR";
static final String ERROR_INTERNAL_SERVER_ERROR_ALT = "InternalServerError";
static final String ERROR_SERVICE_NOT_AVAILABLE = "SERVICE_NOT_AVAILABLE";
private static final String EXTRA_DELETE = "delete";
private static final String EXTRA_ERROR = "error";
private static final String EXTRA_IID_OPERATION = "iid-operation";
private static final String EXTRA_REGISTRATION_ID = "registration_id";
private static final String EXTRA_SCOPE = "scope";
private static final String EXTRA_SENDER = "sender";
private static final String EXTRA_SUBTYPE = "subtype";
private static final String EXTRA_TOPIC = "gcm.topic";
private static final String EXTRA_UNREGISTERED = "unregistered";
static final String FIREBASE_IID_HEARTBEAT_TAG = "fire-iid";
private static final String PARAM_APP_VER_CODE = "app_ver";
private static final String PARAM_APP_VER_NAME = "app_ver_name";
private static final String PARAM_CLIENT_VER = "cliv";
private static final String PARAM_FIREBASE_APP_NAME_HASH = "firebase-app-name-hash";
private static final String PARAM_FIS_AUTH_TOKEN = "Goog-Firebase-Installations-Auth";
private static final String PARAM_GMP_APP_ID = "gmp_app_id";
private static final String PARAM_GMS_VER = "gmsv";
private static final String PARAM_HEARTBEAT_CODE = "Firebase-Client-Log-Type";
private static final String PARAM_INSTANCE_ID = "appid";
private static final String PARAM_OS_VER = "osv";
private static final String PARAM_USER_AGENT = "Firebase-Client";
private static final String SCOPE_ALL = "*";
static final String TAG = "FirebaseMessaging";
private static final String TOPIC_PREFIX = "/topics/";
private final FirebaseApp app;
private final FirebaseInstallationsApi firebaseInstallations;
private final Provider<HeartBeatInfo> heartbeatInfo;
private final Metadata metadata;
private final Rpc rpc;
private final Provider<UserAgentPublisher> userAgentPublisher;
public GmsRpc(FirebaseApp firebaseApp, Metadata metadata, Provider<UserAgentPublisher> provider, Provider<HeartBeatInfo> provider2, FirebaseInstallationsApi firebaseInstallationsApi) {
this(firebaseApp, metadata, new Rpc(firebaseApp.getApplicationContext()), provider, provider2, firebaseInstallationsApi);
}
private static String base64UrlSafe(byte[] bArr) {
return Base64.encodeToString(bArr, 11);
}
private Task<String> extractResponseWhenComplete(Task<Bundle> task) {
return task.continueWith(new ExecutorC0507a(1), new k(this));
}
private String getHashedFirebaseAppName() {
try {
return base64UrlSafe(MessageDigest.getInstance("SHA-1").digest(this.app.getName().getBytes()));
} catch (NoSuchAlgorithmException unused) {
return "[HASH-ERROR]";
}
}
private String handleResponse(Bundle bundle) throws IOException {
if (bundle == null) {
throw new IOException(ERROR_SERVICE_NOT_AVAILABLE);
}
String string = bundle.getString(EXTRA_REGISTRATION_ID);
if (string != null) {
return string;
}
String string2 = bundle.getString(EXTRA_UNREGISTERED);
if (string2 != null) {
return string2;
}
String string3 = bundle.getString("error");
if (CMD_RST.equals(string3)) {
throw new IOException(ERROR_INSTANCE_ID_RESET);
}
if (string3 != null) {
throw new IOException(string3);
}
Log.w("FirebaseMessaging", "Unexpected response: " + bundle, new Throwable());
throw new IOException(ERROR_SERVICE_NOT_AVAILABLE);
}
public static boolean isErrorMessageForRetryableError(String str) {
return ERROR_SERVICE_NOT_AVAILABLE.equals(str) || ERROR_INTERNAL_SERVER_ERROR.equals(str) || ERROR_INTERNAL_SERVER_ERROR_ALT.equals(str);
}
public /* synthetic */ String lambda$extractResponseWhenComplete$0(Task task) throws Exception {
return handleResponse((Bundle) task.getResult(IOException.class));
}
private void setDefaultAttributesToBundle(String str, String str2, Bundle bundle) throws ExecutionException, InterruptedException {
HeartBeatInfo.HeartBeat heartBeatCode;
bundle.putString(EXTRA_SCOPE, str2);
bundle.putString(EXTRA_SENDER, str);
bundle.putString(EXTRA_SUBTYPE, str);
bundle.putString(PARAM_GMP_APP_ID, this.app.getOptions().getApplicationId());
bundle.putString(PARAM_GMS_VER, Integer.toString(this.metadata.getGmsVersionCode()));
bundle.putString(PARAM_OS_VER, Integer.toString(Build.VERSION.SDK_INT));
bundle.putString(PARAM_APP_VER_CODE, this.metadata.getAppVersionCode());
bundle.putString(PARAM_APP_VER_NAME, this.metadata.getAppVersionName());
bundle.putString(PARAM_FIREBASE_APP_NAME_HASH, getHashedFirebaseAppName());
try {
String token = ((InstallationTokenResult) Tasks.await(this.firebaseInstallations.getToken(false))).getToken();
if (TextUtils.isEmpty(token)) {
Log.w("FirebaseMessaging", "FIS auth token is empty");
} else {
bundle.putString(PARAM_FIS_AUTH_TOKEN, token);
}
} catch (InterruptedException | ExecutionException e4) {
Log.e("FirebaseMessaging", "Failed to get FIS auth token", e4);
}
bundle.putString(PARAM_INSTANCE_ID, (String) Tasks.await(this.firebaseInstallations.getId()));
bundle.putString(PARAM_CLIENT_VER, "fcm-23.4.0");
HeartBeatInfo heartBeatInfo = this.heartbeatInfo.get();
UserAgentPublisher userAgentPublisher = this.userAgentPublisher.get();
if (heartBeatInfo == null || userAgentPublisher == null || (heartBeatCode = heartBeatInfo.getHeartBeatCode(FIREBASE_IID_HEARTBEAT_TAG)) == HeartBeatInfo.HeartBeat.NONE) {
return;
}
bundle.putString(PARAM_HEARTBEAT_CODE, Integer.toString(heartBeatCode.getCode()));
bundle.putString(PARAM_USER_AGENT, userAgentPublisher.getUserAgent());
}
private Task<Bundle> startRpc(String str, String str2, Bundle bundle) {
try {
setDefaultAttributesToBundle(str, str2, bundle);
return this.rpc.send(bundle);
} catch (InterruptedException | ExecutionException e4) {
return Tasks.forException(e4);
}
}
public Task<?> deleteToken() {
Bundle bundle = new Bundle();
bundle.putString(EXTRA_DELETE, "1");
return extractResponseWhenComplete(startRpc(Metadata.getDefaultSenderId(this.app), "*", bundle));
}
public Task<String> getToken() {
return extractResponseWhenComplete(startRpc(Metadata.getDefaultSenderId(this.app), "*", new Bundle()));
}
public Task<?> subscribeToTopic(String str, String str2) {
Bundle bundle = new Bundle();
bundle.putString(EXTRA_TOPIC, TOPIC_PREFIX + str2);
return extractResponseWhenComplete(startRpc(str, TOPIC_PREFIX + str2, bundle));
}
public Task<?> unsubscribeFromTopic(String str, String str2) {
Bundle bundle = new Bundle();
bundle.putString(EXTRA_TOPIC, TOPIC_PREFIX + str2);
bundle.putString(EXTRA_DELETE, "1");
return extractResponseWhenComplete(startRpc(str, TOPIC_PREFIX + str2, bundle));
}
public GmsRpc(FirebaseApp firebaseApp, Metadata metadata, Rpc rpc, Provider<UserAgentPublisher> provider, Provider<HeartBeatInfo> provider2, FirebaseInstallationsApi firebaseInstallationsApi) {
this.app = firebaseApp;
this.metadata = metadata;
this.rpc = rpc;
this.userAgentPublisher = provider;
this.heartbeatInfo = provider2;
this.firebaseInstallations = firebaseInstallationsApi;
}
}