All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.firebase.messaging.internal.MessagingServiceErrorResponse Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 9.3.0
Show newest version
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;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy