Use --multipart for HTTPie multipart requests

Previously --form was ussed which relied on a file part turning the
request into a --multipart one. Switching to --multipart makes the
intent of the request more clear and also simplifies sending parts
that aren't file-based.

Closes gh-771
This commit is contained in:
Andy Wilkinson
2022-01-10 13:37:25 +00:00
parent a63a514193
commit 90e0721b7a
2 changed files with 13 additions and 11 deletions

View File

@@ -122,8 +122,11 @@ public class HttpieRequestSnippet extends TemplatedSnippet {
}
private void writeOptions(OperationRequest request, PrintWriter writer) {
if (!request.getParts().isEmpty() || (!request.getParameters().getUniqueParameters(request.getUri()).isEmpty()
&& !includeParametersInUri(request) && includeParametersAsFormOptions(request))) {
if (!request.getParts().isEmpty()) {
writer.print("--multipart ");
}
else if (!request.getParameters().getUniqueParameters(request.getUri()).isEmpty()
&& !includeParametersInUri(request) && includeParametersAsFormOptions(request)) {
writer.print("--form ");
}
}
@@ -156,8 +159,7 @@ public class HttpieRequestSnippet extends TemplatedSnippet {
StringBuilder oneLine = new StringBuilder();
oneLine.append(String.format("'%s'", part.getName()));
if (!StringUtils.hasText(part.getSubmittedFileName())) {
// https://github.com/jkbrzt/httpie/issues/342
oneLine.append(String.format("@<(echo '%s')", part.getContentAsString()));
oneLine.append(String.format("='%s'", part.getContentAsString()));
}
else {
oneLine.append(String.format("@'%s'", part.getSubmittedFileName()));