From f40de46250ba654fbe7a22b6b4f202452cd0bdee Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 1 Dec 2023 20:19:57 +0100 Subject: [PATCH] JSN-LD improvements --- .../main/assets/schema.org/emailmessage.html | 4 +++- .../assets/schema.org/flightreservation.html | 2 +- .../main/java/eu/faircode/email/JsonLd.java | 21 ++++++++++++------- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/assets/schema.org/emailmessage.html b/app/src/main/assets/schema.org/emailmessage.html index 8f2f003a7f..bb8f815b68 100644 --- a/app/src/main/assets/schema.org/emailmessage.html +++ b/app/src/main/assets/schema.org/emailmessage.html @@ -1,3 +1,5 @@
- + + +
diff --git a/app/src/main/assets/schema.org/flightreservation.html b/app/src/main/assets/schema.org/flightreservation.html index 27d41c2eb6..454820636e 100644 --- a/app/src/main/assets/schema.org/flightreservation.html +++ b/app/src/main/assets/schema.org/flightreservation.html @@ -1,6 +1,6 @@
- Reservation ID:
Reservation number:
+ Status:
Passenger:
Flight:
Operated by:
diff --git a/app/src/main/java/eu/faircode/email/JsonLd.java b/app/src/main/java/eu/faircode/email/JsonLd.java index 5b9bb3178d..c46f4c75f2 100644 --- a/app/src/main/java/eu/faircode/email/JsonLd.java +++ b/app/src/main/java/eu/faircode/email/JsonLd.java @@ -43,14 +43,17 @@ import java.util.Locale; // https://json-ld.org/ // https://schema.org/ +// https://schema.org/EmailMessage // https://schema.org/FlightReservation +// https://developers.google.com/gmail/markup/reference/flight-reservation // https://structured.email/content/introduction/getting_started.html public class JsonLd { private Object jroot; private Throwable error = null; - private static final String URI_SCHEMA_ORG = "https://schema.org"; + private static final String HTTP_SCHEMA_ORG = "http://schema.org"; + private static final String HTTPS_SCHEMA_ORG = "https://schema.org"; private static final String PLACEHOLDER_START = ""; @@ -79,8 +82,8 @@ public class JsonLd { String jtype = jobject.getString("@type"); Log.i("JSON-LD template " + jcontext + "=" + jtype); - if (!URI_SCHEMA_ORG.equals(jcontext) && - !"http://schema.org".equals(jcontext)) { + if (!HTTP_SCHEMA_ORG.equals(jcontext) && + !HTTPS_SCHEMA_ORG.equals(jcontext)) { Log.e("JSON-LD " + jcontext + "?=" + jtype); return null; } @@ -113,8 +116,10 @@ public class JsonLd { value = JsonPath.read(document, placeholder); if (value == null) value = ""; - if (value.startsWith(URI_SCHEMA_ORG + "/")) - value = unCamelCase(value.substring(URI_SCHEMA_ORG.length() + 1)); + if (value.startsWith(HTTP_SCHEMA_ORG + "/")) + value = unCamelCase(value.substring(HTTP_SCHEMA_ORG.length() + 1)); + else if (value.startsWith(HTTPS_SCHEMA_ORG + "/")) + value = unCamelCase(value.substring(HTTPS_SCHEMA_ORG.length() + 1)); } catch (PathNotFoundException ex) { Log.i(ex); value = ""; @@ -204,8 +209,10 @@ public class JsonLd { getHtml(context, v, indent + 1, holder); } else { String _v = v.toString(); - if (_v.startsWith(URI_SCHEMA_ORG + "/")) - _v = unCamelCase(_v.substring(URI_SCHEMA_ORG.length() + 1)); + if (_v.startsWith(HTTP_SCHEMA_ORG + "/")) + _v = unCamelCase(_v.substring(HTTP_SCHEMA_ORG.length() + 1)); + else if (_v.startsWith(HTTPS_SCHEMA_ORG + "/")) + _v = unCamelCase(_v.substring(HTTPS_SCHEMA_ORG.length() + 1)); holder.appendElement("span").text(_v); holder.appendElement("br"); }