From 3c72bf8ca056d10c0ee0b85deb65421fc88eedd4 Mon Sep 17 00:00:00 2001 From: Steven Tracey Date: Mon, 15 May 2023 16:13:46 -0400 Subject: [PATCH] Fix Edit --- src/main/java/tech/nevets/vcardgen/Location.java | 9 +++++++++ src/main/java/tech/nevets/vcardgen/Main.java | 4 +++- src/main/java/tech/nevets/vcardgen/VCard.java | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/tech/nevets/vcardgen/Location.java b/src/main/java/tech/nevets/vcardgen/Location.java index 1f8e816..59e509c 100644 --- a/src/main/java/tech/nevets/vcardgen/Location.java +++ b/src/main/java/tech/nevets/vcardgen/Location.java @@ -78,6 +78,15 @@ public class Location { return null; } + public static String getLocationId(String name) { + for (Location loc : LOCATIONS) { + if (loc.getName().equals(name)) { + return loc.getId(); + } + } + return null; + } + @Override public String toString() { return "{ \"id\": " + id + ", \"name\": " + name + ", \"address\": " + address + ", \"number\": " + number + " }"; diff --git a/src/main/java/tech/nevets/vcardgen/Main.java b/src/main/java/tech/nevets/vcardgen/Main.java index b963628..de6cd45 100644 --- a/src/main/java/tech/nevets/vcardgen/Main.java +++ b/src/main/java/tech/nevets/vcardgen/Main.java @@ -3,6 +3,7 @@ package tech.nevets.vcardgen; import com.google.gson.Gson; import com.google.gson.JsonObject; +import javax.servlet.MultipartConfigElement; import java.io.*; import static spark.Spark.*; @@ -37,10 +38,11 @@ public class Main { }); post("/edit", (req, res) -> { + req.attribute("org.eclipse.jetty.multipartConfig", new MultipartConfigElement("/temp")); res.status(200); res.type("application/json"); res.header("Access-Control-Allow-Origin", "*"); - return VCard.getDataFromVCard(req.bodyAsBytes()); + return VCard.getDataFromVCard(req.raw().getPart("card").getInputStream()); }); }); } diff --git a/src/main/java/tech/nevets/vcardgen/VCard.java b/src/main/java/tech/nevets/vcardgen/VCard.java index 4db65d2..34986fa 100644 --- a/src/main/java/tech/nevets/vcardgen/VCard.java +++ b/src/main/java/tech/nevets/vcardgen/VCard.java @@ -2,6 +2,9 @@ package tech.nevets.vcardgen; import com.google.gson.Gson; import com.google.gson.JsonObject; +import spark.Request; +import spark.Response; +import spark.Route; import javax.imageio.*; import javax.imageio.metadata.IIOMetadata; @@ -13,6 +16,7 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -221,9 +225,9 @@ public class VCard { return C.getFontMetrics(font).stringWidth(text) < maxLength; } - public static String getDataFromVCard(byte[] rawImage) throws IOException { + public static String getDataFromVCard(InputStream rawImage) throws IOException { ImageReader reader = ImageIO.getImageReadersByMIMEType("image/png").next(); - reader.setInput(ImageIO.createImageInputStream(new ByteArrayInputStream(rawImage))); + reader.setInput(ImageIO.createImageInputStream(rawImage)); IIOMetadata metadata = reader.getImageMetadata(0); IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree("javax_imageio_png_1.0"); @@ -235,6 +239,12 @@ public class VCard { IIOMetadataNode textEntry = (IIOMetadataNode) text.item(i); String key = textEntry.getAttribute("keyword"); String value = textEntry.getAttribute("value"); + if (key.equals("Address") || key.equals("SchoolNumber")) { + continue; + } + if (key.equals("Location")) { + value = Location.getLocationId(value); + } keyValueMap.put(key, value); }