diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/cli/HttpieRequestSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/cli/HttpieRequestSnippet.java index c2efd681..314a8997 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/cli/HttpieRequestSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/cli/HttpieRequestSnippet.java @@ -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())); diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/cli/HttpieRequestSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/cli/HttpieRequestSnippetTests.java index 09ae870e..7be6272c 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/cli/HttpieRequestSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/cli/HttpieRequestSnippetTests.java @@ -262,8 +262,8 @@ public class HttpieRequestSnippetTests extends AbstractSnippetTests { .document(this.operationBuilder.request("http://localhost/upload").method("POST") .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) .part("metadata", "{\"description\": \"foo\"}".getBytes()).build()); - String expectedContent = "$ http --form POST 'http://localhost/upload'" - + " 'metadata'@<(echo '{\"description\": \"foo\"}')"; + String expectedContent = "$ http --multipart POST 'http://localhost/upload'" + + " 'metadata'='{\"description\": \"foo\"}'"; assertThat(this.generatedSnippets.httpieRequest()).is(codeBlock("bash").withContent(expectedContent)); } @@ -275,7 +275,7 @@ public class HttpieRequestSnippetTests extends AbstractSnippetTests { .part("image", new byte[0]).header(HttpHeaders.CONTENT_TYPE, MediaType.IMAGE_PNG_VALUE) .submittedFileName("documents/images/example.png").build()); // httpie does not yet support manually set content type by part - String expectedContent = "$ http --form POST 'http://localhost/upload'" + String expectedContent = "$ http --multipart POST 'http://localhost/upload'" + " 'image'@'documents/images/example.png'"; assertThat(this.generatedSnippets.httpieRequest()).is(codeBlock("bash").withContent(expectedContent)); } @@ -286,7 +286,7 @@ public class HttpieRequestSnippetTests extends AbstractSnippetTests { .document(this.operationBuilder.request("http://localhost/upload").method("POST") .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) .part("image", new byte[0]).submittedFileName("documents/images/example.png").build()); - String expectedContent = "$ http --form POST 'http://localhost/upload'" + String expectedContent = "$ http --multipart POST 'http://localhost/upload'" + " 'image'@'documents/images/example.png'"; assertThat(this.generatedSnippets.httpieRequest()).is(codeBlock("bash").withContent(expectedContent)); } @@ -298,7 +298,7 @@ public class HttpieRequestSnippetTests extends AbstractSnippetTests { .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) .part("image", new byte[0]).submittedFileName("documents/images/example.png").and() .param("a", "apple", "avocado").param("b", "banana").build()); - String expectedContent = "$ http --form POST 'http://localhost/upload'" + String expectedContent = "$ http --multipart POST 'http://localhost/upload'" + " 'image'@'documents/images/example.png' 'a=apple' 'a=avocado'" + " 'b=banana'"; assertThat(this.generatedSnippets.httpieRequest()).is(codeBlock("bash").withContent(expectedContent)); } @@ -310,8 +310,8 @@ public class HttpieRequestSnippetTests extends AbstractSnippetTests { .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) .part("image", new byte[0]).submittedFileName("documents/images/example.png").and() .part("a", "apple".getBytes()).and().param("a", "apple").build()); - String expectedContent = "$ http --form POST 'http://localhost/upload'" - + " 'image'@'documents/images/example.png' 'a'@<(echo 'apple')"; + String expectedContent = "$ http --multipart POST 'http://localhost/upload'" + + " 'image'@'documents/images/example.png' 'a'='apple'"; assertThat(this.generatedSnippets.httpieRequest()).is(codeBlock("bash").withContent(expectedContent)); }