diff --git a/src/AWS.jl b/src/AWS.jl index 07e50d009..7af0d3a06 100644 --- a/src/AWS.jl +++ b/src/AWS.jl @@ -65,6 +65,11 @@ Base.@kwdef struct FeatureSet use_response_type::Bool = false end +# Copy constructor for FeatureSet that allows overriding specific fields +function FeatureSet(fs::FeatureSet; use_response_type::Bool=fs.use_response_type) + return FeatureSet(; use_response_type=use_response_type) +end + """ global_aws_config() @@ -141,7 +146,7 @@ cannot). ## Returns -- `Module`: The module containging the high-level service API wrapper functions. +- `Module`: The module containing the high-level service API wrapper functions. ## Examples diff --git a/src/services/mediastore_data.jl b/src/services/mediastore_data.jl index c0c4affd4..b4438924a 100644 --- a/src/services/mediastore_data.jl +++ b/src/services/mediastore_data.jl @@ -40,16 +40,27 @@ Gets the headers for an object at the specified path. """ function describe_object(Path; aws_config::AbstractAWSConfig=global_aws_config()) - return mediastore_data( - "HEAD", "/$(Path)"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = mediastore_data( + "HEAD", + "/$(Path)"; + aws_config=aws_config, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), ) + return response.headers end function describe_object( Path, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config() ) - return mediastore_data( - "HEAD", "/$(Path)", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = mediastore_data( + "HEAD", + "/$(Path)", + params; + aws_config=aws_config, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), ) + return response.headers end """ diff --git a/src/services/s3.jl b/src/services/s3.jl index d9db5a265..128eb467b 100644 --- a/src/services/s3.jl +++ b/src/services/s3.jl @@ -4022,14 +4022,27 @@ Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys fails with the HTTP status code 403 Forbidden (access denied). """ function head_bucket(Bucket; aws_config::AbstractAWSConfig=global_aws_config()) - return s3("HEAD", "/$(Bucket)"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET) + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = s3( + "HEAD", + "/$(Bucket)"; + aws_config=aws_config, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), + ) + return response.headers end function head_bucket( Bucket, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config() ) - return s3( - "HEAD", "/$(Bucket)", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = s3( + "HEAD", + "/$(Bucket)", + params; + aws_config=aws_config, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), ) + return response.headers end """ @@ -4176,9 +4189,14 @@ Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys functionality is not supported for directory buckets. """ function head_object(Bucket, Key; aws_config::AbstractAWSConfig=global_aws_config()) - return s3( - "HEAD", "/$(Bucket)/$(Key)"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = s3( + "HEAD", + "/$(Bucket)/$(Key)"; + aws_config=aws_config, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), ) + return response.headers end function head_object( Bucket, @@ -4186,13 +4204,15 @@ function head_object( params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config(), ) - return s3( + # Use copy constructor to preserve all fields from SERVICE_FEATURE_SET but override use_response_type + response = s3( "HEAD", "/$(Bucket)/$(Key)", params; aws_config=aws_config, - feature_set=SERVICE_FEATURE_SET, + feature_set=AWS.FeatureSet(SERVICE_FEATURE_SET; use_response_type=true), ) + return response.headers end """