diff --git a/app/src/main/java/eu/faircode/email/Gemini.java b/app/src/main/java/eu/faircode/email/Gemini.java index d6fef9db91..458c0716bd 100644 --- a/app/src/main/java/eu/faircode/email/Gemini.java +++ b/app/src/main/java/eu/faircode/email/Gemini.java @@ -188,15 +188,27 @@ public class Gemini { int status = connection.getResponseCode(); if (status != HttpURLConnection.HTTP_OK) { String error = "Error " + status + ": " + connection.getResponseMessage(); + String detail = null; try { InputStream is = connection.getErrorStream(); if (is != null) - error += "\n" + Helper.readStream(is); + detail = Helper.readStream(is); } catch (Throwable ex) { Log.w(ex); } - Log.w("Gemini error=" + error); - throw new IOException(error); + Log.w("Gemini error=" + error + " detail=" + detail); + if (detail != null) + try { + JSONObject jroot = new JSONObject(detail); + JSONObject jerror = jroot.optJSONObject("error"); + if (jerror != null) { + String msg = jerror.optString("message"); + if (!TextUtils.isEmpty(msg)) + detail = msg; + } + } catch (Throwable ignored) { + } + throw new IOException(TextUtils.isEmpty(detail) ? error : detail); } String response = Helper.readStream(connection.getInputStream());