package com.airlock.iam.base.infrastructure.error;

import ch.ergon.restal.jsonapi.document.error.ErrorData;
import com.google.common.base.Strings;
import java.util.Optional;

public final class ErrorDatas {
   private ErrorDatas() {
   }

   public static boolean is4xxStatus(ErrorData errorData) {
      Integer status = errorData.getStatus();
      return status != null && status >= 400 && status <= 499;
   }

   public static boolean is5xxStatus(ErrorData errorData) {
      Integer status = errorData.getStatus();
      return status != null && status >= 500 && status <= 599;
   }

   public static Optional<String> asString(ErrorData errorData) {
      if (Strings.isNullOrEmpty(errorData.getId())) {
         return Optional.empty();
      }

      String errorString = errorData.getId();
      Integer status = errorData.getStatus();
      if (status != null) {
         errorString = errorString + " HTTP Status: " + status;
      }

      String code = errorData.getCode();
      if (code != null && !code.isBlank()) {
         errorString = errorString + " Code: " + code;
      }

      return Optional.of("\"" + errorString + "\"");
   }
}
