diff --git a/src/main/java/de/jalin/fedipage/FediMedium.java b/src/main/java/de/jalin/fedipage/FediMedium.java
index bfb0699..3b05bdc 100644
--- a/src/main/java/de/jalin/fedipage/FediMedium.java
+++ b/src/main/java/de/jalin/fedipage/FediMedium.java
@@ -20,7 +20,7 @@ public class FediMedium implements Serializable {
this.mediumType = IMAGE;
this.description = "missing alt text";
this.mediumUrl = "unknown";
- this.mediumImage = "unknown";
+ this.mediumImage = "assets/splash.jpg";
}
public String getMediumType() {
diff --git a/src/main/java/de/jalin/fedipage/FediServlet.java b/src/main/java/de/jalin/fedipage/FediServlet.java
index a477ac0..c7ce870 100644
--- a/src/main/java/de/jalin/fedipage/FediServlet.java
+++ b/src/main/java/de/jalin/fedipage/FediServlet.java
@@ -41,7 +41,15 @@ public class FediServlet extends HttpServlet {
throws ServletException, IOException {
try {
- final JSONLoader loader = new JSONLoader(instance, account);
+ final String scheme = request.getScheme();
+ final String serverName = request.getServerName();
+ final int serverPort = request.getServerPort();
+ final String contextPath = request.getContextPath();
+ String contextUrl = scheme + "://" + serverName + ":" + serverPort + "/" + contextPath;
+ if (!contextUrl.endsWith("/")) {
+ contextUrl += "/";
+ }
+ final JSONLoader loader = new JSONLoader(instance, account, contextUrl);
final VelocityContext context = new VelocityContext();
context.put("dateformatter", new PostDateFormatter());
context.put("page", loader.loadPage());
diff --git a/src/main/java/de/jalin/fedipage/JSONLoader.java b/src/main/java/de/jalin/fedipage/JSONLoader.java
index bdabad3..2c948a7 100644
--- a/src/main/java/de/jalin/fedipage/JSONLoader.java
+++ b/src/main/java/de/jalin/fedipage/JSONLoader.java
@@ -18,12 +18,14 @@ public class JSONLoader implements Serializable {
private final String instance;
private final String account;
-
+ private final String contextUrl;
+
private long id;
- public JSONLoader(String instance, String account) {
+ public JSONLoader(final String instance, final String account, final String contextUrl) {
this.instance = instance;
this.account = account;
+ this.contextUrl = contextUrl;
this.id = -1L;
}
@@ -67,13 +69,20 @@ public class JSONLoader implements Serializable {
post.setPostUrl(jsonStatus.getString("url"));
final JSONArray mediaJsonArray = jsonStatus.getJSONArray("media_attachments");
if (mediaJsonArray.length() == 0) {
- final JSONObject jsonCard = jsonStatus.getJSONObject("card");
- if (jsonCard != null && jsonCard.getString("image") != null) {
+ final Object cardItem = jsonStatus.get("card");
+ if (cardItem != null && cardItem instanceof JSONObject) {
+ final JSONObject jsonCard = jsonStatus.getJSONObject("card");
final FediMedium medium = new FediMedium();
medium.setMediumType(FediMedium.CARD);
medium.setDescription(jsonCard.getString("description"));
medium.setMediumUrl(jsonCard.getString("url"));
- medium.setMediumImage(jsonCard.getString("image"));
+ final Object imageObject = jsonCard.get("image");
+ if (imageObject != null && imageObject instanceof String) {
+ medium.setMediumImage(jsonCard.getString("image"));
+ } else {
+ final String defaultImage = contextUrl + medium.getMediumImage();
+ medium.setMediumImage(defaultImage);
+ }
post.addFediMedium(medium);
}
} else {
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 650aed8..85fded9 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -21,10 +21,10 @@
FediServlet
- /
+
- /
+
diff --git a/src/main/webapp/assets/splash.jpg b/src/main/webapp/assets/splash.jpg
new file mode 100644
index 0000000..0cfc997
Binary files /dev/null and b/src/main/webapp/assets/splash.jpg differ