From 0a459e4b48e663d98245f67f0eff79f87f5f59b3 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Tue, 4 Aug 2026 12:12:17 +0200 Subject: [PATCH] improved http check status mechanism --- .../ksef/api/KSeFAuthManager.java | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java index ffef017..34579cf 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/ksef/api/KSeFAuthManager.java @@ -504,7 +504,7 @@ public class KSeFAuthManager { // Now we need to wait until auth/{AuthRef} will return 200 long start = System.currentTimeMillis(); - long timeout = 120_000; // 120 Sekunden + long timeout = 180_000; // 180 Sekunden while (System.currentTimeMillis() - start < timeout) { int status = this.checkSessionStatus(workitem); @@ -529,7 +529,7 @@ public class KSeFAuthManager { // Optional: prüfen, ob Timeout erreicht wurde if (System.currentTimeMillis() - start >= timeout) { throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API, - "API Error - failed to init new interactive session - ⚠️ Timeout reached after 120 seconds!"); + "API Error - failed to init new interactive session - ⚠️ Timeout reached after 180 seconds!"); } } @@ -889,53 +889,54 @@ public class KSeFAuthManager { httpResponse = response.statusCode(); logger.info("│ ├── HTTP Response: " + httpResponse); - logger.info("│ ├── " + response.body()); - try (Jsonb jsonb = JsonbBuilder.create()) { - JsonObject jsonObject = jsonb.fromJson(response.body(), JsonObject.class); + if (httpResponse >= 200 && httpResponse <= 299) { - // Status Code aus dem status-Objekt extrahieren - if (jsonObject.containsKey("status")) { - JsonObject statusObject = jsonObject.getJsonObject("status"); - if (statusObject.containsKey("code")) { - statusCode = statusObject.getInt("code"); - logger.info("│ ├── Status Code: " + statusCode); - logger.info("│ ├── Status Description: " + statusObject.getString("description")); - workitem.setItemValue("ksef.status.code", statusCode); - workitem.setItemValue("ksef.status.description", statusObject.getString("description")); - } - } + try (Jsonb jsonb = JsonbBuilder.create()) { + JsonObject jsonObject = jsonb.fromJson(response.body(), JsonObject.class); - // Extract UPO data from the first page - if (jsonObject.containsKey("upo")) { - JsonObject upoObject = jsonObject.getJsonObject("upo"); - if (upoObject.containsKey("pages")) { - JsonArray pagesArray = upoObject.getJsonArray("pages"); - if (pagesArray != null && !pagesArray.isEmpty()) { - JsonObject firstPage = pagesArray.getJsonObject(0); - - String referenceNumber = firstPage.getString("referenceNumber", ""); - String downloadUrl = firstPage.getString("downloadUrl", ""); - String expirationDate = firstPage.getString("downloadUrlExpirationDate", ""); - - logger.info("│ ├── UPO Reference Number: " + referenceNumber); - logger.info("│ ├── UPO Download URL: " + downloadUrl); - logger.info("│ ├── UPO URL Expiration: " + expirationDate); - - workitem.setItemValue("ksef.upo.referenceNumber", referenceNumber); - workitem.setItemValue("ksef.upo.downloadUrl", downloadUrl); - workitem.setItemValue("ksef.upo.downloadUrlExpirationDate", expirationDate); + // Status Code aus dem status-Objekt extrahieren + if (jsonObject.containsKey("status")) { + JsonObject statusObject = jsonObject.getJsonObject("status"); + if (statusObject.containsKey("code")) { + statusCode = statusObject.getInt("code"); + logger.info("│ ├── Status Code: " + statusCode); + logger.info("│ ├── Status Description: " + statusObject.getString("description")); + workitem.setItemValue("ksef.status.code", statusCode); + workitem.setItemValue("ksef.status.description", statusObject.getString("description")); } } + + // Extract UPO data from the first page + if (jsonObject.containsKey("upo")) { + JsonObject upoObject = jsonObject.getJsonObject("upo"); + if (upoObject.containsKey("pages")) { + JsonArray pagesArray = upoObject.getJsonArray("pages"); + if (pagesArray != null && !pagesArray.isEmpty()) { + JsonObject firstPage = pagesArray.getJsonObject(0); + + String referenceNumber = firstPage.getString("referenceNumber", ""); + String downloadUrl = firstPage.getString("downloadUrl", ""); + String expirationDate = firstPage.getString("downloadUrlExpirationDate", ""); + + logger.info("│ ├── UPO Reference Number: " + referenceNumber); + logger.info("│ ├── UPO Download URL: " + downloadUrl); + logger.info("│ ├── UPO URL Expiration: " + expirationDate); + + workitem.setItemValue("ksef.upo.referenceNumber", referenceNumber); + workitem.setItemValue("ksef.upo.downloadUrl", downloadUrl); + workitem.setItemValue("ksef.upo.downloadUrlExpirationDate", expirationDate); + } + } + } + + } catch (Exception e) { + logger.severe("├── ⚠️ Error parsing JSON response: " + e.getMessage()); + throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API, + "Error parsing JSON response: " + e.getMessage()); } - - } catch (Exception e) { - logger.severe("├── ⚠️ Error parsing JSON response: " + e.getMessage()); - throw new PluginException(KSeFAuthManager.class.getSimpleName(), ERROR_API, - "Error parsing JSON response: " + e.getMessage()); } - return statusCode; }