package net.rainbowcode.jpixelface.routes;
import net.rainbowcode.jpixelface.Errors;
import net.rainbowcode.jpixelface.HttpServer;
import net.rainbowcode.jpixelface.exceptions.InvalidIdException;
import net.rainbowcode.jpixelface.exceptions.ScaleOutOfBoundsException;
import net.rainbowcode.jpixelface.profile.ProfileFuture;
import net.rainbowcode.jpixelface.skin.Mutate;
import spark.Response;
import static spark.Spark.get;
import static spark.Spark.halt;
public class MutateRoute extends Route
{
private final Mutate mutate;
public MutateRoute(Mutate mutate)
{
super(mutate.getPath());
this.mutate = mutate;
}
@Override
public void init(HttpServer server)
{
get(mutate.getPath() + ":id", (request, response) -> {
boolean svg = false;
if (request.params("id").endsWith(".svg"))
{
svg = true;
}
String id = request.params("id").replace(".png", "").replace(".svg", "");
int size = 64;
ProfileFuture future = server.getProfile(id);
if (svg)
{
return server.handleSVG(response, future, mutate);
}
else
{
return server.handleImage(response, future, size, mutate).raw();
}
});
get(mutate.getPath() + ":id/:size", "image/png", (request, response) -> {
String id = request.params("id").replace(".png", "");
int size = Integer.parseInt(request.params("size").replace(".png", ""));
ProfileFuture future = server.getProfile(id);
int minScale = mutate.getMinScale();
int maxScale = mutate.getMaxScale();
if (size > maxScale || size < minScale)
{
throw new ScaleOutOfBoundsException(minScale, maxScale);
}
Response httpServletResponse = server.handleImage(response, future, size, mutate);
return httpServletResponse.raw();
});
}
}