From 30ac23203d924691ae412a1f2138cf31c22c69f9 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Sun, 19 Jun 2016 20:11:56 +0200 Subject: [PATCH] Check for "permission denied" without status code 403 --- README.md | 2 +- .../de/stklcode/jvault/connector/HTTPVaultConnector.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 25909a4..5f8563c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Java Vault Connector is a connector library for [Vault](https://www.vaultproject * Write secrets * List secrets * Connector Factory with builder pattern -* Tested against Vault 0.5.2 +* Tested against Vault 0.6.0 **Usage Example** diff --git a/src/main/java/de/stklcode/jvault/connector/HTTPVaultConnector.java b/src/main/java/de/stklcode/jvault/connector/HTTPVaultConnector.java index e9c3286..0be52bd 100644 --- a/src/main/java/de/stklcode/jvault/connector/HTTPVaultConnector.java +++ b/src/main/java/de/stklcode/jvault/connector/HTTPVaultConnector.java @@ -381,7 +381,14 @@ public class HTTPVaultConnector implements VaultConnector { InvalidResponseException ex = new InvalidResponseException("Invalid response code") .withStatusCode(response.getStatusLine().getStatusCode()); try { - throw ex.withResponse(IOUtils.toString(response.getEntity().getContent())); + /* Try to parse error response */ + ErrorResponse er = jsonMapper.readValue(IOUtils.toString(response.getEntity().getContent()), + ErrorResponse.class); + /* Check for "permission denied" response */ + if (er.getErrors().size() > 0 && er.getErrors().get(0).equals("permission denied")) + throw new PermissionDeniedException(); + + throw ex.withResponse(er.toString()); } catch (IOException e) { throw ex;