When downloading files from http(s) sources, puppet does not encode the URL prior to parsing it, so you have to URL encode the string in the manifest: "http://host/foo%20bar". That's unexpected, users shouldn't have to do that.
This relates to PUP-10603 and PUP-10613