I'm trying to create a node using the sling api in AEM 6.0. Now I know I can easily create a node using a curl call like this
curl -u admin:admin -F"jcr:primaryType= sling:Mapping" http://localhost:4502/content/mynode
But what if I need to get fancy and try to create a resource mapping node with a name like this /etc/map.publish.prd/http/prd.rb.mysite.ca
Now the following curl call does not work anymore because part of the url is treated as selectors
curl -u admin:admin -F"jcr:primaryType= sling:Mapping" http://localhost:4502/etc/map.publish.prd/http/prd.rb.mysite.com
So how would I go about avoiding this issue?
I also tried using the name property to limit the complexity of the url like this.
curl -u admin:admin -F"jcr:primaryType=sling:Mapping" -F"name=prd.rb.mysite.com" http://localhost:4502/etc/map.publish.prd/http
But I think sling still gets confused by map.publish.prd
Any help will be much appreciated Thanks
-Alain
Here is the workaround we found. The script uses a first call to create the node under /tmp like this
curl -X POST -u admin:admin -F"jcr:primaryType=sling:Mapping" http://localhost:4502/tmp/my-temp-site.
From there the script can add additional nodes under my-temp-site as needed with more curl calls. When the script is done tinkering with the my-temp-site node it then moves it to it's final resting place with this
curl -X POST -u admin:admin -F":operation=move" -F":dest=/etc/map.publish.prd/http/prd.rb.mysite.ca" http://localhost:4502/tmp/my-tmp-site
We've tested it and so far it works us.
Like @bertrand mentioned we will add a timestamp to the name of the /tmp/my-temp-site node to make it unique and avoid conflicts
-Alain