1
0
mirror of https://github.com/octoleo/plantuml-server.git synced 2024-11-15 16:57:09 +00:00

Normalization of the format for the proxy feature.

New syntax is : plantuml/proxy/[id/][format/]remoteURL
where id is a number identifying the diagram definition
when the remote URL contains more than one diagram,
and format specify the output : img, txt or svg.
This commit is contained in:
Maxime Sinclair 2011-11-14 17:22:16 +01:00
parent b0c46ef805
commit ad6a00fdf0
2 changed files with 34 additions and 7 deletions

View File

@ -52,6 +52,9 @@ import HTTPClient.ParseException;
* Original idea from Achim Abeling for Confluence macro
* See http://www.banapple.de/display/BANAPPLE/plantuml+user+macro
*
* This class is the old all-in-one historic implementation of the PlantUml server.
* See package.html for the new design. It's a work in progress.
*
* Modified by Arnaud Roques
* Modified by Pablo Lalloni
* Packaged by Maxime Sinclair
@ -164,12 +167,21 @@ public class PlantUmlServlet extends HttpServlet {
String source, String format, String uri) throws IOException {
SourceStringReader reader = new SourceStringReader( getContent(source));
int n = num == null ? 0 : Integer.parseInt(num);
// Write the requested image to "os"
if (format != null) {
reader.generateImage(response.getOutputStream(), n, new FileFormatOption(FileFormat.valueOf(format)));
} else {
reader.generateImage(response.getOutputStream(), n);
reader.generateImage(response.getOutputStream(), n, getFormat(format));
}
private FileFormatOption getFormat(String f) {
if (f==null) {
return new FileFormatOption(FileFormat.PNG);
}
if (f.equals("svg")) {
return new FileFormatOption(FileFormat.SVG);
}
if (f.equals("txt")) {
return new FileFormatOption(FileFormat.ATXT);
}
return new FileFormatOption(FileFormat.PNG);
}
private void sendImage(HttpServletResponse response, String text, String uri)

View File

@ -37,6 +37,21 @@ public class TestProxy extends WebappTestCase {
assertTrue( diagramLen < 1700);
}
public void testProxyWithFormat() throws Exception {
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest(getServerUrl() + "proxy/svg/"
+ getServerUrl() + "welcome");
WebResponse response = conversation.getResource( request);
// Analyze response
// Verifies the Content-Type header
// TODO assertEquals( "Response content type is not SVG", "image/svg+xml", response.getContentType());
// Get the content and verify its size
String diagram = response.getText();
int diagramLen = diagram.length();
assertTrue( diagramLen > 1700);
assertTrue( diagramLen < 1800);
}
/**
* Verifies that the HTTP header of a diagram incites the browser to cache it.
*/