From 1a3b1f6b5f5da976f97c1e89444289375062f22b Mon Sep 17 00:00:00 2001 From: Dinasoa Date: Fri, 23 Jan 2026 10:45:32 +0300 Subject: [PATCH 1/2] chore(to-revert): disable test --- src/test/java/fr/birdia/tile19/ImageExtenderIT.java | 1 + .../java/fr/birdia/tile19/TileExtenderMinAverageMaxIT.java | 2 ++ .../java/fr/birdia/tile19/unit/ImageExtenderServiceTest.java | 2 ++ src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java | 3 +++ 4 files changed, 8 insertions(+) diff --git a/src/test/java/fr/birdia/tile19/ImageExtenderIT.java b/src/test/java/fr/birdia/tile19/ImageExtenderIT.java index 79ed80d..fc6d76c 100644 --- a/src/test/java/fr/birdia/tile19/ImageExtenderIT.java +++ b/src/test/java/fr/birdia/tile19/ImageExtenderIT.java @@ -19,6 +19,7 @@ import org.springframework.http.ResponseEntity; @Slf4j +@Disabled public class ImageExtenderIT extends FacadeIT { @Autowired TileExtenderController tileExtenderController; diff --git a/src/test/java/fr/birdia/tile19/TileExtenderMinAverageMaxIT.java b/src/test/java/fr/birdia/tile19/TileExtenderMinAverageMaxIT.java index 0d8d93f..b06ad94 100644 --- a/src/test/java/fr/birdia/tile19/TileExtenderMinAverageMaxIT.java +++ b/src/test/java/fr/birdia/tile19/TileExtenderMinAverageMaxIT.java @@ -11,11 +11,13 @@ import fr.birdia.tile19.service.TilesDownloaderService; import fr.birdia.tile19.service.TilesMergerService; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @Slf4j +@Disabled public class TileExtenderMinAverageMaxIT extends FacadeIT { @Autowired TileExtenderController tileExtenderController; @Autowired ImageExtenderService imageExtenderService; diff --git a/src/test/java/fr/birdia/tile19/unit/ImageExtenderServiceTest.java b/src/test/java/fr/birdia/tile19/unit/ImageExtenderServiceTest.java index 45fb334..56e24fe 100644 --- a/src/test/java/fr/birdia/tile19/unit/ImageExtenderServiceTest.java +++ b/src/test/java/fr/birdia/tile19/unit/ImageExtenderServiceTest.java @@ -17,10 +17,12 @@ import java.util.Base64; import javax.imageio.ImageIO; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestTemplate; @Slf4j +@Disabled public class ImageExtenderServiceTest { XYZToBBOXService xyzToBBOXService = new XYZToBBOXService(); RestTemplate restTemplate = new RestTemplate(); diff --git a/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java b/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java index 42dfa04..6bd1cfc 100644 --- a/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java +++ b/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java @@ -9,9 +9,12 @@ import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; + +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestTemplate; +@Disabled public class TilesDownloaderTest { XYZToBBOXService xyzToBBOXService = new XYZToBBOXService(); RestTemplate restTemplate = new RestTemplate(); From 5337c8fc48472f0d9c3d423be4867d3e033266c0 Mon Sep 17 00:00:00 2001 From: Dinasoa Date: Mon, 26 Jan 2026 10:18:01 +0300 Subject: [PATCH 2/2] chore: return airbus year in headers --- .../endpoint/rest/controller/TileExtenderController.java | 8 ++++++++ .../fr/birdia/tile19/model/airbus/AirbusProperties.java | 1 + .../fr/birdia/tile19/service/ImageExtenderService.java | 9 +++++++-- .../birdia/tile19/service/airbus/AirbusPNEOService.java | 8 ++++++-- src/test/java/fr/birdia/tile19/ImageExtenderIT.java | 4 ++-- .../java/fr/birdia/tile19/unit/TilesDownloaderTest.java | 1 - 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/birdia/tile19/endpoint/rest/controller/TileExtenderController.java b/src/main/java/fr/birdia/tile19/endpoint/rest/controller/TileExtenderController.java index 6364176..fa62dc5 100644 --- a/src/main/java/fr/birdia/tile19/endpoint/rest/controller/TileExtenderController.java +++ b/src/main/java/fr/birdia/tile19/endpoint/rest/controller/TileExtenderController.java @@ -54,11 +54,19 @@ public ResponseEntity extendImage(@RequestBody TileExtenderRequestBody b isOpaque); double[] offsets = imageExtenderService.computeXYOffsets(lat, lon, x, y, z, server); + HttpHeaders headers = new HttpHeaders(); headers.add("x_offset", String.valueOf(offsets[0])); headers.add("y_offset", String.valueOf(offsets[1])); headers.add("pointer_x", String.valueOf(offsets[2])); headers.add("pointer_y", String.valueOf(offsets[3])); + if (server.equals("airbus")) { + String lastUpdatedAt = + imageExtenderService.getLastUpdatedAtAirbus() != null + ? imageExtenderService.getLastUpdatedAtAirbus() + : ""; + headers.add("airbusLastUpdatedAt", lastUpdatedAt); + } return ResponseEntity.ok().contentType(TEXT_PLAIN).headers(headers).body(base64Encoded); } diff --git a/src/main/java/fr/birdia/tile19/model/airbus/AirbusProperties.java b/src/main/java/fr/birdia/tile19/model/airbus/AirbusProperties.java index d99a000..34b147d 100644 --- a/src/main/java/fr/birdia/tile19/model/airbus/AirbusProperties.java +++ b/src/main/java/fr/birdia/tile19/model/airbus/AirbusProperties.java @@ -8,4 +8,5 @@ public class AirbusProperties { private String wmtsUrl; private String bearer; + private String updatedAt; } diff --git a/src/main/java/fr/birdia/tile19/service/ImageExtenderService.java b/src/main/java/fr/birdia/tile19/service/ImageExtenderService.java index ecd8181..691c306 100644 --- a/src/main/java/fr/birdia/tile19/service/ImageExtenderService.java +++ b/src/main/java/fr/birdia/tile19/service/ImageExtenderService.java @@ -39,6 +39,7 @@ public class ImageExtenderService { private Workers workers; private ImageDegraderService imageDegraderService; private AirbusPNEOService airbusPNEOService; + private AirbusProperties airbusProperties; public ImageExtenderService( TilesDownloaderService downloader, @@ -53,6 +54,10 @@ public ImageExtenderService( this.airbusPNEOService = airbusPNEOService; } + public String getLastUpdatedAtAirbus() { + return this.airbusProperties.getUpdatedAt(); + } + public double[] computeXYOffsets(double lat, double lon, int x, int y, int z, String server) { double[] pixelCoords = convertCoordinatesToPixel(lat, lon, x, y, z); return server.equals("geoserver_ign") || server.equals("airbus") @@ -146,8 +151,8 @@ public byte[] downloadTilesBytes( BufferedImage[][] results = new BufferedImage[y2 - y1][x2 - x1]; List> callables = new ArrayList<>(); final boolean isAirbusServer = AIRBUS_SERVER.equals(server); - final AirbusProperties airbusProperties = - isAirbusServer ? airbusPNEOService.retrieveAirbusWmtsLink(lat, lon) : null; + this.airbusProperties = + isAirbusServer ? airbusPNEOService.retrieveAirbusProperties(lat, lon) : null; for (int dy = y1; dy < y2; dy++) { for (int dx = x1; dx < x2; dx++) { diff --git a/src/main/java/fr/birdia/tile19/service/airbus/AirbusPNEOService.java b/src/main/java/fr/birdia/tile19/service/airbus/AirbusPNEOService.java index bed1d32..da1d263 100644 --- a/src/main/java/fr/birdia/tile19/service/airbus/AirbusPNEOService.java +++ b/src/main/java/fr/birdia/tile19/service/airbus/AirbusPNEOService.java @@ -68,7 +68,7 @@ public String authenticateAirbus() { throw new IllegalArgumentException("Unable to retrieve Airbus Access Token"); } - public AirbusProperties retrieveAirbusWmtsLink(double lat, double lon) { + public AirbusProperties retrieveAirbusProperties(double lat, double lon) { String bearerToken = authenticateAirbus(); Geometry geometry = convertLatLonToGeometry(lat, lon); AirbusRequestBody requestBody = @@ -95,7 +95,11 @@ public AirbusProperties retrieveAirbusWmtsLink(double lat, double lon) { String wmtsUrl = String.format( "%s/tiles/1.0.0/default/rgb/EPSG3857/", feature.getLinks().getWmts().getHref()); - return AirbusProperties.builder().wmtsUrl(wmtsUrl).bearer(bearerToken).build(); + return AirbusProperties.builder() + .wmtsUrl(wmtsUrl) + .updatedAt(feature.getProperties().getLastUpdateDate()) + .bearer(bearerToken) + .build(); } public Geometry convertLatLonToGeometry(double lat, double lon) { diff --git a/src/test/java/fr/birdia/tile19/ImageExtenderIT.java b/src/test/java/fr/birdia/tile19/ImageExtenderIT.java index fc6d76c..55606b5 100644 --- a/src/test/java/fr/birdia/tile19/ImageExtenderIT.java +++ b/src/test/java/fr/birdia/tile19/ImageExtenderIT.java @@ -23,7 +23,7 @@ public class ImageExtenderIT extends FacadeIT { @Autowired TileExtenderController tileExtenderController; - public TileExtenderRequestBody degraded_body() { + public TileExtenderRequestBody opaque_body() { return TileExtenderRequestBody.builder() .x(538969) .y(367435) @@ -168,7 +168,7 @@ public void extend_airbus_images_ok() throws Exception { @Test public void extend_not_full_HD_image_ok() throws Exception { - ResponseEntity response = tileExtenderController.extendImage(degraded_body()); + ResponseEntity response = tileExtenderController.extendImage(opaque_body()); HttpHeaders headers = response.getHeaders(); double xOffset = Double.parseDouble(headers.getFirst("x_offset")); double yOffset = Double.parseDouble(headers.getFirst("y_offset")); diff --git a/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java b/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java index 6bd1cfc..819e1a0 100644 --- a/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java +++ b/src/test/java/fr/birdia/tile19/unit/TilesDownloaderTest.java @@ -9,7 +9,6 @@ import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; - import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestTemplate;