From 2e712358ed5897bd6150597c3b0d8737a33ae293 Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Mon, 27 Jan 2025 17:43:25 -0500 Subject: [PATCH 1/3] Add RequestHeaders to each tileset --- .../Private/CesiumTileMapServiceRasterOverlay.cpp | 11 ++++++++++- .../Private/CesiumUrlTemplateRasterOverlay.cpp | 10 +++++++++- .../Private/CesiumWebMapServiceRasterOverlay.cpp | 11 ++++++++++- .../Private/CesiumWebMapTileServiceRasterOverlay.cpp | 11 ++++++++++- .../Public/CesiumTileMapServiceRasterOverlay.h | 6 ++++++ .../Public/CesiumUrlTemplateRasterOverlay.h | 6 ++++++ .../Public/CesiumWebMapServiceRasterOverlay.h | 6 ++++++ .../Public/CesiumWebMapTileServiceRasterOverlay.h | 6 ++++++ 8 files changed, 63 insertions(+), 4 deletions(-) diff --git a/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp index 8f0f7b2e3..6dc667466 100644 --- a/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp @@ -17,10 +17,19 @@ UCesiumTileMapServiceRasterOverlay::CreateOverlay( tmsOptions.minimumLevel = MinimumLevel; tmsOptions.maximumLevel = MaximumLevel; } + + std::vector headers; + + for (auto& [Key, Value] : this->RequestHeaders) { + headers.push_back(CesiumAsync::IAssetAccessor::THeader{ + TCHAR_TO_UTF8(*Key), + TCHAR_TO_UTF8(*Value)}); + } + return std::make_unique( TCHAR_TO_UTF8(*this->MaterialLayerKey), TCHAR_TO_UTF8(*this->Url), - std::vector(), + headers, tmsOptions, options); } diff --git a/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp index 095dcf133..d18399892 100644 --- a/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp @@ -55,10 +55,18 @@ UCesiumUrlTemplateRasterOverlay::CreateOverlay( RootTilesY); } + std::vector headers; + + for (auto& [Key, Value] : this->RequestHeaders) { + headers.push_back(CesiumAsync::IAssetAccessor::THeader{ + TCHAR_TO_UTF8(*Key), + TCHAR_TO_UTF8(*Value)}); + } + return std::make_unique( TCHAR_TO_UTF8(*this->MaterialLayerKey), TCHAR_TO_UTF8(*this->TemplateUrl), - std::vector(), + headers, urlTemplateOptions, options); } diff --git a/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp index 82da5dafa..d6813405f 100644 --- a/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp @@ -21,10 +21,19 @@ UCesiumWebMapServiceRasterOverlay::CreateOverlay( wmsOptions.layers = TCHAR_TO_UTF8(*Layers); wmsOptions.tileWidth = TileWidth; wmsOptions.tileHeight = TileHeight; + + std::vector headers; + + for (auto& [Key, Value] : this->RequestHeaders) { + headers.push_back(CesiumAsync::IAssetAccessor::THeader{ + TCHAR_TO_UTF8(*Key), + TCHAR_TO_UTF8(*Value)}); + } + return std::make_unique( TCHAR_TO_UTF8(*this->MaterialLayerKey), TCHAR_TO_UTF8(*this->BaseUrl), - std::vector(), + headers, wmsOptions, options); } diff --git a/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp index ecefeca4c..cdad48ee7 100644 --- a/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp @@ -103,10 +103,19 @@ UCesiumWebMapTileServiceRasterOverlay::CreateOverlay( wmtsOptions.tileMatrixLabels = labels; } } + + std::vector headers; + + for (auto& [Key, Value] : this->RequestHeaders) { + headers.push_back(CesiumAsync::IAssetAccessor::THeader{ + TCHAR_TO_UTF8(*Key), + TCHAR_TO_UTF8(*Value)}); + } + return std::make_unique( TCHAR_TO_UTF8(*this->MaterialLayerKey), TCHAR_TO_UTF8(*this->BaseUrl), - std::vector(), + headers, wmtsOptions, options); } diff --git a/Source/CesiumRuntime/Public/CesiumTileMapServiceRasterOverlay.h b/Source/CesiumRuntime/Public/CesiumTileMapServiceRasterOverlay.h index db64a15e1..be0aaa938 100644 --- a/Source/CesiumRuntime/Public/CesiumTileMapServiceRasterOverlay.h +++ b/Source/CesiumRuntime/Public/CesiumTileMapServiceRasterOverlay.h @@ -52,6 +52,12 @@ class CESIUMRUNTIME_API UCesiumTileMapServiceRasterOverlay meta = (EditCondition = "bSpecifyZoomLevels", ClampMin = 0)) int32 MaximumLevel = 10; + /** + * HTTP headers to be attached to each request made for this raster overlay. + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") + TMap RequestHeaders; + protected: virtual std::unique_ptr CreateOverlay( const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override; diff --git a/Source/CesiumRuntime/Public/CesiumUrlTemplateRasterOverlay.h b/Source/CesiumRuntime/Public/CesiumUrlTemplateRasterOverlay.h index 7a6997505..dc2c396bd 100644 --- a/Source/CesiumRuntime/Public/CesiumUrlTemplateRasterOverlay.h +++ b/Source/CesiumRuntime/Public/CesiumUrlTemplateRasterOverlay.h @@ -220,6 +220,12 @@ class CESIUMRUNTIME_API UCesiumUrlTemplateRasterOverlay meta = (ClampMin = 64, ClampMax = 2048)) int32 TileHeight = 256; + /** + * HTTP headers to be attached to each request made for this raster overlay. + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") + TMap RequestHeaders; + protected: virtual std::unique_ptr CreateOverlay( const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override; diff --git a/Source/CesiumRuntime/Public/CesiumWebMapServiceRasterOverlay.h b/Source/CesiumRuntime/Public/CesiumWebMapServiceRasterOverlay.h index 1b2f284b1..e052e34cc 100644 --- a/Source/CesiumRuntime/Public/CesiumWebMapServiceRasterOverlay.h +++ b/Source/CesiumRuntime/Public/CesiumWebMapServiceRasterOverlay.h @@ -75,6 +75,12 @@ class CESIUMRUNTIME_API UCesiumWebMapServiceRasterOverlay meta = (ClampMin = 0)) int32 MaximumLevel = 14; + /** + * HTTP headers to be attached to each request made for this raster overlay. + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") + TMap RequestHeaders; + protected: virtual std::unique_ptr CreateOverlay( const CesiumRasterOverlays::RasterOverlayOptions& options = {}) override; diff --git a/Source/CesiumRuntime/Public/CesiumWebMapTileServiceRasterOverlay.h b/Source/CesiumRuntime/Public/CesiumWebMapTileServiceRasterOverlay.h index 0a305dfc7..6cc2ced7e 100644 --- a/Source/CesiumRuntime/Public/CesiumWebMapTileServiceRasterOverlay.h +++ b/Source/CesiumRuntime/Public/CesiumWebMapTileServiceRasterOverlay.h @@ -267,6 +267,12 @@ class CESIUMRUNTIME_API UCesiumWebMapTileServiceRasterOverlay meta = (ClampMin = 64, ClampMax = 2048)) int32 TileHeight = 256; + /** + * HTTP headers to be attached to each request made for this raster overlay. + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cesium") + TMap RequestHeaders; + virtual void Serialize(FArchive& Ar) override; protected: From 35b955b6384fe819f19b21a20a15c0e4b02452a8 Mon Sep 17 00:00:00 2001 From: Ashley Rogers Date: Mon, 27 Jan 2025 17:46:29 -0500 Subject: [PATCH 2/3] Update CHANGES --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index a9066153b..7b904e25c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,8 @@ - Added `CesiumUrlTemplateRasterOverlay`, allowing a raster overlay to be added using tiles requested based on a specified URL template. - Added `RequestHeaders` property to `Cesium3DTileset`, allowing per-tileset headers to be specified. +- Added `RequestHeaders` properties to `CesiumTileMapServiceRasterOverlay`, `CesiumUrlTemplateRasterOverlay`, `CesiumWebMapServiceRasterOverlay`, + and `CesiumWebMapTileServiceRasterOverlay`, allowing per-raster-overlay HTTP headers to be specified. ##### Fixes :wrench: From cd45d5cafffb47499d1b7ff18101e2b1497e2ecd Mon Sep 17 00:00:00 2001 From: Kevin Ring Date: Wed, 29 Jan 2025 22:32:32 +1100 Subject: [PATCH 3/3] Add const. --- .../CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp | 2 +- Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp | 2 +- .../CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp | 2 +- .../Private/CesiumWebMapTileServiceRasterOverlay.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp index 6dc667466..769f182a5 100644 --- a/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumTileMapServiceRasterOverlay.cpp @@ -20,7 +20,7 @@ UCesiumTileMapServiceRasterOverlay::CreateOverlay( std::vector headers; - for (auto& [Key, Value] : this->RequestHeaders) { + for (const auto& [Key, Value] : this->RequestHeaders) { headers.push_back(CesiumAsync::IAssetAccessor::THeader{ TCHAR_TO_UTF8(*Key), TCHAR_TO_UTF8(*Value)}); diff --git a/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp index d18399892..2bebfa044 100644 --- a/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumUrlTemplateRasterOverlay.cpp @@ -57,7 +57,7 @@ UCesiumUrlTemplateRasterOverlay::CreateOverlay( std::vector headers; - for (auto& [Key, Value] : this->RequestHeaders) { + for (const auto& [Key, Value] : this->RequestHeaders) { headers.push_back(CesiumAsync::IAssetAccessor::THeader{ TCHAR_TO_UTF8(*Key), TCHAR_TO_UTF8(*Value)}); diff --git a/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp index d6813405f..2e5c53642 100644 --- a/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumWebMapServiceRasterOverlay.cpp @@ -24,7 +24,7 @@ UCesiumWebMapServiceRasterOverlay::CreateOverlay( std::vector headers; - for (auto& [Key, Value] : this->RequestHeaders) { + for (const auto& [Key, Value] : this->RequestHeaders) { headers.push_back(CesiumAsync::IAssetAccessor::THeader{ TCHAR_TO_UTF8(*Key), TCHAR_TO_UTF8(*Value)}); diff --git a/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp b/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp index cdad48ee7..1126246c3 100644 --- a/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp +++ b/Source/CesiumRuntime/Private/CesiumWebMapTileServiceRasterOverlay.cpp @@ -106,7 +106,7 @@ UCesiumWebMapTileServiceRasterOverlay::CreateOverlay( std::vector headers; - for (auto& [Key, Value] : this->RequestHeaders) { + for (const auto& [Key, Value] : this->RequestHeaders) { headers.push_back(CesiumAsync::IAssetAccessor::THeader{ TCHAR_TO_UTF8(*Key), TCHAR_TO_UTF8(*Value)});