babashka / babashka.curl

A This library is mostly replaced by https://github.com/babashka/http-client
Eclipse Public License 1.0
121 stars 9 forks source link

As well as --data-raw, add --data-binary #35

Closed malcolmsparks closed 3 years ago

malcolmsparks commented 3 years ago

According to the curl man page,

--data-raw is almost the same but does not have a special interpretation of the @ character. To post data purely binary, you should instead use the --data-binary option.

Currently, the --data-raw option does not work with java.io.File values. In my case, I'm trying to upload a binary file to the server, and want to avoid -d being generated in the curl command because it seems to corrupt files (e.g. CRs and newlines are stripped out).

borkdude commented 3 years ago

@malcolmsparks Sorry for this inconvenience. I changed this in commit https://github.com/babashka/babashka.curl/commit/b3bf0ba4fcc0aae89bb07f2a8258cff1405f4aed. All the tests still pass and I think this is the saner option to use.

Just for my info: do you use this from babashka? Is this blocking for you and do you need a new release?

malcolmsparks commented 3 years ago

@borkdude ah, in that case, I'll close this issue - it's just what I'm looking for.

Yes, I'm using this from babashka (via the Arch AUR package). I'm not blocked, I could work around this with a direct call out to clojure.java.shell for now.

borkdude commented 3 years ago

This is a new babashka binary with the change:

https://15545-201467090-gh.circle-artifacts.com/0/release/babashka-0.2.13-SNAPSHOT-linux-amd64.zip

Maybe you could test it out.

borkdude commented 3 years ago

Note to self: I wonder what the default should be for posting strings. Now I changed this from --data-raw to --data-binary... the tests pass, but I'm not entirely sure if this is the correct thing to do. Should check this before next bb release.

malcolmsparks commented 3 years ago

--data-raw and --data-binary are equivalent except that --data-binary supports the @ character for sending files. For posting strings, the -d option (which is the same as --data-ascii) should suffice.

malcolmsparks commented 3 years ago

I've tested the new binary on my system (I'll keep it in /usr/bin/bb and report any issues I find). For my file upload tests, it works perfectly, and the files are no longer 'corrupted'. Thanks very much!

borkdude commented 3 years ago

Actually --data-raw is similar to --data, not --data-binary. I think using that for the string? body makes most sense, so I'll revert it for that case. Thanks.

borkdude commented 3 years ago

@malcolmsparks babashka v0.2.13 released with this bugfix