com.google.firebase.messaging.internal.MessagingServiceErrorResponse Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of firebase-admin Show documentation
Show all versions of firebase-admin Show documentation
This is the official Firebase Admin Java SDK. Build extraordinary native JVM apps in
minutes with Firebase. The Firebase platform can power your app’s backend, user
authentication, static hosting, and more.
package com.google.firebase.messaging.internal;
import com.google.api.client.json.GenericJson;
import com.google.api.client.util.Key;
import com.google.common.collect.ImmutableMap;
import com.google.firebase.internal.Nullable;
import com.google.firebase.messaging.MessagingErrorCode;
import java.util.List;
import java.util.Map;
/**
* The DTO for parsing error responses from the FCM service.
*/
public final class MessagingServiceErrorResponse extends GenericJson {
private static final Map MESSAGING_ERROR_CODES =
ImmutableMap.builder()
.put("APNS_AUTH_ERROR", MessagingErrorCode.THIRD_PARTY_AUTH_ERROR)
.put("INTERNAL", MessagingErrorCode.INTERNAL)
.put("INVALID_ARGUMENT", MessagingErrorCode.INVALID_ARGUMENT)
.put("QUOTA_EXCEEDED", MessagingErrorCode.QUOTA_EXCEEDED)
.put("SENDER_ID_MISMATCH", MessagingErrorCode.SENDER_ID_MISMATCH)
.put("THIRD_PARTY_AUTH_ERROR", MessagingErrorCode.THIRD_PARTY_AUTH_ERROR)
.put("UNAVAILABLE", MessagingErrorCode.UNAVAILABLE)
.put("UNREGISTERED", MessagingErrorCode.UNREGISTERED)
.build();
private static final String FCM_ERROR_TYPE =
"type.googleapis.com/google.firebase.fcm.v1.FcmError";
@Key("error")
private Map error;
public String getStatus() {
if (error == null) {
return null;
}
return (String) error.get("status");
}
@Nullable
public MessagingErrorCode getMessagingErrorCode() {
if (error == null) {
return null;
}
Object details = error.get("details");
if (details instanceof List) {
for (Object detail : (List>) details) {
if (detail instanceof Map) {
Map,?> detailMap = (Map,?>) detail;
if (FCM_ERROR_TYPE.equals(detailMap.get("@type"))) {
String errorCode = (String) detailMap.get("errorCode");
return MESSAGING_ERROR_CODES.get(errorCode);
}
}
}
}
return null;
}
@Nullable
public String getErrorMessage() {
if (error != null) {
return (String) error.get("message");
}
return null;
}
}