-
Notifications
You must be signed in to change notification settings - Fork 24
Description
I'm not sure if this is desired behaviour or not. Please close if it is.
Having said that, in my view, as the parameter is ObjectName, then it should be a regular string and the API will encode it correctly.
Part of the Object Storage GetObject code does the following.
ApiDetails apiDetails = new ApiDetails
{
ServiceName = "ObjectStorage",
OperationName = "GetObject",
RequestEndpoint = $"{method.Method} {requestMessage.RequestUri}",
ApiReferenceLink = "https://docs.oracle.com/iaas/api/#/en/objectstorage/20160918/Object/GetObject",
UserAgent = this.GetUserAgent()
};
requestMessage.RequestUri is constructed by ToHttpRequestMessage(), it does the following
updatedUri = updatedUri.Replace(Uri.EscapeUriString($"{{{httpRequestAttr.Name}}}"), HeaderUtils.FromValue(prop.GetValue(request)));
This again uses EscapeUriString which microsoft recommends against at https://learn.microsoft.com/en-us/dotnet/api/system.uri.escapeuristring?view=net-8.0 I'm not sure if that is how the path is parsed. If someone could indicate if that's the case, that would be helpful.
HeaderUtils.FromValue(prop.GetValue(request))
should also be escaped in URL format for GetObject. But are there other places where a path should not be escaped?
Can someone point me in the direction of where I should be looking to best resolve this issue so I can submit a patch. If it's an easy fix form someone else, I'm happy for them to do it as well.