When attempting to create a collection containing a plus sign (+) in its name via the iRODS HTTP API, the + character is incorrectly interpreted as a space. For example, a request to create a folder named a+b results in the creation of a folder named a b.
This behavior occurs even when the Content-Type is set to application/x-www-form-urlencoded. Since icommands (e.g., imkdir) handles these characters correctly, this appears to be an issue specifically within the HTTP API's decoding logic.
How to reproduce
import requests
data = {
'op': 'create',
'lpath': '/tempZone/home/rods/a+b'
}
r = requests.post(
'http://<host>:<port>/irods-http-api/0.6.0/collections',
headers={
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/x-www-form-urlencoded',
},
data=data
)
result looks like this
# ils
C- /tempZone/home/rods/a b
iRODS HTTP API Version: 0.6.0
iRODS Version 5.0.2
When attempting to create a collection containing a plus sign (+) in its name via the iRODS HTTP API, the + character is incorrectly interpreted as a space. For example, a request to create a folder named a+b results in the creation of a folder named a b.
This behavior occurs even when the Content-Type is set to application/x-www-form-urlencoded. Since icommands (e.g., imkdir) handles these characters correctly, this appears to be an issue specifically within the HTTP API's decoding logic.
How to reproduce
result looks like this
iRODS HTTP API Version: 0.6.0
iRODS Version 5.0.2