This commit is contained in:
parent
916b163ea8
commit
11580f2927
3 changed files with 19 additions and 13 deletions
|
@ -12,7 +12,7 @@
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="Maven: ch.fritteli.labyrinth:labyrinth-generator:0.0.1" level="project" />
|
<orderEntry type="module" module-name="labyrinth-generator" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.pdfbox:pdfbox:2.0.20" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.pdfbox:pdfbox:2.0.20" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.pdfbox:fontbox:2.0.20" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.pdfbox:fontbox:2.0.20" level="project" />
|
||||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
|
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -18,7 +18,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ch.fritteli.labyrinth</groupId>
|
<groupId>ch.fritteli.labyrinth</groupId>
|
||||||
<artifactId>labyrinth-generator</artifactId>
|
<artifactId>labyrinth-generator</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.vavr</groupId>
|
<groupId>io.vavr</groupId>
|
||||||
|
|
|
@ -7,12 +7,7 @@ import ch.fritteli.labyrinth.generator.renderer.text.TextRenderer;
|
||||||
import com.sun.net.httpserver.Headers;
|
import com.sun.net.httpserver.Headers;
|
||||||
import com.sun.net.httpserver.HttpExchange;
|
import com.sun.net.httpserver.HttpExchange;
|
||||||
import com.sun.net.httpserver.HttpServer;
|
import com.sun.net.httpserver.HttpServer;
|
||||||
import io.vavr.collection.HashMap;
|
import io.vavr.collection.*;
|
||||||
import io.vavr.collection.HashSet;
|
|
||||||
import io.vavr.collection.List;
|
|
||||||
import io.vavr.collection.Map;
|
|
||||||
import io.vavr.collection.Set;
|
|
||||||
import io.vavr.collection.Stream;
|
|
||||||
import io.vavr.control.Option;
|
import io.vavr.control.Option;
|
||||||
import io.vavr.control.Try;
|
import io.vavr.control.Try;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -82,7 +77,7 @@ public class LabyrinthServer {
|
||||||
public void start() {
|
public void start() {
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(this::stop, "listener-stopper"));
|
Runtime.getRuntime().addShutdownHook(new Thread(this::stop, "listener-stopper"));
|
||||||
this.httpServer.start();
|
this.httpServer.start();
|
||||||
log.info("Listening on {}", this.httpServer.getAddress());
|
log.info("Listening on http://{}:{}", this.httpServer.getAddress().getHostString(), this.httpServer.getAddress().getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
|
@ -101,8 +96,8 @@ public class LabyrinthServer {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Map<RequestParameter, String> requestParams = this.parseQueryString(exchange.getRequestURI().getQuery());
|
final Map<RequestParameter, String> requestParams = this.parseQueryString(exchange.getRequestURI().getQuery());
|
||||||
final int width = this.getOrDefault(requestParams.get(RequestParameter.WIDTH), Integer::valueOf, 1);
|
final int width = this.getOrDefault(requestParams.get(RequestParameter.WIDTH), Integer::valueOf, 5);
|
||||||
final int height = this.getOrDefault(requestParams.get(RequestParameter.HEIGHT), Integer::valueOf, 1);
|
final int height = this.getOrDefault(requestParams.get(RequestParameter.HEIGHT), Integer::valueOf, 5);
|
||||||
final Option<Long> idOption = requestParams.get(RequestParameter.ID).toTry().map(Long::valueOf).toOption();
|
final Option<Long> idOption = requestParams.get(RequestParameter.ID).toTry().map(Long::valueOf).toOption();
|
||||||
final Option<OutputType> outputOption = requestParams.get(RequestParameter.OUTPUT).flatMap(OutputType::ofString);
|
final Option<OutputType> outputOption = requestParams.get(RequestParameter.OUTPUT).flatMap(OutputType::ofString);
|
||||||
final Headers responseHeaders = exchange.getResponseHeaders();
|
final Headers responseHeaders = exchange.getResponseHeaders();
|
||||||
|
@ -115,10 +110,21 @@ public class LabyrinthServer {
|
||||||
exchange.close();
|
exchange.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
final Labyrinth labyrinth = new Labyrinth(width, height, id);
|
||||||
|
final byte[] render;
|
||||||
|
try {
|
||||||
|
render = output.render(labyrinth);
|
||||||
|
} catch (Exception e) {
|
||||||
|
responseHeaders.add("Content-type", "text/plain; charset=UTF-8");
|
||||||
|
exchange.sendResponseHeaders(500, 0);
|
||||||
|
final OutputStream responseBody = exchange.getResponseBody();
|
||||||
|
responseBody.write(("Error: " + e).getBytes(StandardCharsets.UTF_8));
|
||||||
|
responseBody.flush();
|
||||||
|
exchange.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
responseHeaders.add("Content-type", output.getContentType());
|
responseHeaders.add("Content-type", output.getContentType());
|
||||||
exchange.sendResponseHeaders(200, 0);
|
exchange.sendResponseHeaders(200, 0);
|
||||||
final Labyrinth labyrinth = new Labyrinth(width, height, id);
|
|
||||||
final byte[] render = output.render(labyrinth);
|
|
||||||
final OutputStream responseBody = exchange.getResponseBody();
|
final OutputStream responseBody = exchange.getResponseBody();
|
||||||
responseBody.write(render);
|
responseBody.write(render);
|
||||||
responseBody.flush();
|
responseBody.flush();
|
||||||
|
|
Loading…
Reference in a new issue