trusona/trusona-server-sdk-java

View on GitHub
trusona-sdk-http/src/main/java/com/trusona/sdk/http/client/BaseErrorHandler.java

Summary

Maintainability
A
0 mins
Test Coverage
B
87%
package com.trusona.sdk.http.client;

import com.trusona.sdk.config.JacksonConfig;
import com.trusona.sdk.http.ErrorHandler;
import com.trusona.sdk.http.client.v2.response.ErrorResponse;
import com.trusona.sdk.resources.exception.TrusonaException;
import okhttp3.ResponseBody;
import retrofit2.Response;

import java.io.IOException;
import java.util.Optional;

public abstract class BaseErrorHandler implements ErrorHandler {

  protected ErrorResponse getErrorResponse(Response<?> response) throws TrusonaException {
    Optional<ResponseBody> errorBody = Optional.ofNullable(response.errorBody());

    if (errorBody.isPresent()) {
      try {
        return JacksonConfig.getObjectMapper().readValue(errorBody.get().charStream(), ErrorResponse.class);
      }
      catch (IOException e) {
        throw new TrusonaException("Failed to parse error response", e);
      }
      finally {
        errorBody.get().close();
      }
    }
    else {
      return new ErrorResponse("MISSING_ERROR", "Response error did not have a body. Contact Trusona to determine the exact cause");
    }
  }
}