Specify language derived from Content-Type in body snippets
See gh-797
This commit is contained in:
committed by
Andy Wilkinson
parent
bdba92efe7
commit
9a44205253
@@ -73,6 +73,11 @@ public abstract class AbstractBodySnippet extends TemplatedSnippet {
|
||||
protected Map<String, Object> createModel(Operation operation) {
|
||||
try {
|
||||
MediaType contentType = getContentType(operation);
|
||||
String language = null;
|
||||
if (contentType != null) {
|
||||
language = (contentType.getSubtypeSuffix() != null) ? contentType.getSubtypeSuffix()
|
||||
: contentType.getSubtype();
|
||||
}
|
||||
byte[] content = getContent(operation);
|
||||
if (this.subsectionExtractor != null) {
|
||||
content = this.subsectionExtractor.extractSubsection(content, contentType);
|
||||
@@ -80,6 +85,7 @@ public abstract class AbstractBodySnippet extends TemplatedSnippet {
|
||||
Charset charset = extractCharset(contentType);
|
||||
String body = (charset != null) ? new String(content, charset) : new String(content);
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("language", language);
|
||||
model.put("body", body);
|
||||
return model;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[source,options="nowrap"]
|
||||
[source{{#language}},{{language}}{{/language}},options="nowrap"]
|
||||
----
|
||||
{{body}}
|
||||
----
|
||||
@@ -1,4 +1,4 @@
|
||||
[source,options="nowrap"]
|
||||
[source{{#language}},{{language}}{{/language}},options="nowrap"]
|
||||
----
|
||||
{{body}}
|
||||
----
|
||||
@@ -1,3 +1,3 @@
|
||||
```
|
||||
```{{#language}}{{language}}{{/language}}
|
||||
{{body}}
|
||||
```
|
||||
@@ -1,3 +1,3 @@
|
||||
```
|
||||
```{{#language}}{{language}}{{/language}}
|
||||
{{body}}
|
||||
```
|
||||
@@ -20,6 +20,8 @@ import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.restdocs.AbstractSnippetTests;
|
||||
import org.springframework.restdocs.templates.TemplateEngine;
|
||||
import org.springframework.restdocs.templates.TemplateFormat;
|
||||
@@ -58,6 +60,20 @@ public class RequestBodySnippetTests extends AbstractSnippetTests {
|
||||
assertThat(this.generatedSnippets.snippet("request-body")).is(codeBlock(null, "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestWithMediaTypeJson() throws IOException {
|
||||
requestBody().document(this.operationBuilder.request("http://localhost")
|
||||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build());
|
||||
assertThat(this.generatedSnippets.snippet("request-body")).is(codeBlock("json", "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestWithMediaTypeXml() throws IOException {
|
||||
requestBody().document(this.operationBuilder.request("http://localhost")
|
||||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_ATOM_XML_VALUE).build());
|
||||
assertThat(this.generatedSnippets.snippet("request-body")).is(codeBlock("xml", "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subsectionOfRequestBody() throws IOException {
|
||||
requestBody(beneathPath("a.b")).document(
|
||||
|
||||
@@ -20,6 +20,8 @@ import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.restdocs.AbstractSnippetTests;
|
||||
import org.springframework.restdocs.templates.TemplateEngine;
|
||||
import org.springframework.restdocs.templates.TemplateFormat;
|
||||
@@ -58,6 +60,20 @@ public class ResponseBodySnippetTests extends AbstractSnippetTests {
|
||||
assertThat(this.generatedSnippets.snippet("response-body")).is(codeBlock(null, "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void responseWithMediaTypeJson() throws IOException {
|
||||
new ResponseBodySnippet().document(this.operationBuilder.response()
|
||||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build());
|
||||
assertThat(this.generatedSnippets.snippet("response-body")).is(codeBlock("json", "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void responseWithMediaTypeXml() throws IOException {
|
||||
new ResponseBodySnippet().document(this.operationBuilder.response()
|
||||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_ATOM_XML_VALUE).build());
|
||||
assertThat(this.generatedSnippets.snippet("response-body")).is(codeBlock("xml", "nowrap").withContent(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subsectionOfResponseBody() throws IOException {
|
||||
responseBody(beneathPath("a.b"))
|
||||
|
||||
Reference in New Issue
Block a user