diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h index e0d6d5f3780f..18658323a0a8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h @@ -80,6 +80,17 @@ inline void fromRawValue( result.type = ImageSource::Type::Local; } + if (items.find("headers") != items.end() && + items.at("headers").hasType>()) { + auto headers = (std::unordered_map)items.at("headers"); + for (const auto &header : headers) { + if (header.second.hasType()) { + result.headers[header.first] = (std::string)header.second; + } + } + // Add a debug log to print the headers + LOG(INFO) << "Parsed headers: " << result.headers.size(); + } return; } diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h index 6d63cdad1e6d..a70da1c694a3 100644 --- a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h @@ -109,6 +109,11 @@ inline static NSURLRequest *NSURLRequestFromImageSource(const facebook::react::I request.cachePolicy = ...; request.allHTTPHeaderFields = ...; */ + // Set headers + for (const auto &header : imageSource.headers) { + [request setValue:[NSString stringWithUTF8String:header.second.c_str()] + forHTTPHeaderField:[NSString stringWithUTF8String:header.first.c_str()]]; + } return [request copy]; } diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h b/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h index fcac8c10da5a..e754b05045f3 100644 --- a/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h @@ -24,6 +24,8 @@ class ImageSource { std::string bundle{}; Float scale{3}; Size size{0}; + std::unordered_map headers{}; // Add headers field + bool operator==(const ImageSource& rhs) const { return std::tie(this->type, this->uri) == std::tie(rhs.type, rhs.uri);