From bf6380cb288dca7646b8625dfcae296ebb7fd8bc Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Wed, 19 Mar 2025 11:22:03 +0530 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8feat:=20timeline=20preview=20imple?= =?UTF-8?q?mentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/contentstack/sdk/Config.java | 3 +++ src/main/java/com/contentstack/sdk/Stack.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/com/contentstack/sdk/Config.java b/src/main/java/com/contentstack/sdk/Config.java index 54011b92..d9fee7ea 100644 --- a/src/main/java/com/contentstack/sdk/Config.java +++ b/src/main/java/com/contentstack/sdk/Config.java @@ -31,6 +31,9 @@ public class Config { protected Proxy proxy = null; protected String[] earlyAccess = null; protected ConnectionPool connectionPool = new ConnectionPool(); + public String releaseId; + public String previewTimestamp; + protected List plugins = null; diff --git a/src/main/java/com/contentstack/sdk/Stack.java b/src/main/java/com/contentstack/sdk/Stack.java index 20bca289..62a933a9 100644 --- a/src/main/java/com/contentstack/sdk/Stack.java +++ b/src/main/java/com/contentstack/sdk/Stack.java @@ -142,6 +142,17 @@ public Stack livePreviewQuery(Map query) throws IOException { config.livePreviewEntryUid = query.get(ENTRY_UID); config.livePreviewContentType = query.get(CONTENT_TYPE_UID); + if(query.get("release_id") != null){ + config.releaseId = query.get("release_id"); + }else{ + config.releaseId = null; + } + if(query.get("preview_timestamp") != null){ + config.previewTimestamp = query.get("preview_timestamp"); + }else{ + config.previewTimestamp = null; + } + String livePreviewUrl = this.livePreviewEndpoint.concat(config.livePreviewContentType).concat("/entries/" + config.livePreviewEntryUid); if (livePreviewUrl.contains("/null/")) { throw new IllegalStateException("Malformed Query Url"); From e3a2b150d6fa659bcdf9cbf88ab6c68006746466 Mon Sep 17 00:00:00 2001 From: reeshika-h Date: Wed, 19 Mar 2025 11:39:00 +0530 Subject: [PATCH 2/2] testcases for timeline --- .../com/contentstack/sdk/TestLivePreview.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/test/java/com/contentstack/sdk/TestLivePreview.java b/src/test/java/com/contentstack/sdk/TestLivePreview.java index b5bec654..e81381c3 100644 --- a/src/test/java/com/contentstack/sdk/TestLivePreview.java +++ b/src/test/java/com/contentstack/sdk/TestLivePreview.java @@ -10,6 +10,7 @@ import java.io.IOException; import java.util.HashMap; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -223,4 +224,45 @@ void testLivePreviewDisabled() throws IllegalAccessException, IOException { "Expected exception message does not match"); } + @Test + void testTimelinePreview() throws IllegalAccessException, IOException { + Config config = new Config() + .enableLivePreview(true) + .setLivePreviewHost("rest-preview.contentstack.com") + .setPreviewToken("preview_token"); + + Stack stack = Contentstack.stack("stackApiKey", "deliveryToken", "env1", config); + + HashMap hashMap = new HashMap<>(); + hashMap.put("live_preview", "hash167673"); + hashMap.put("content_type_uid", "page"); + hashMap.put("entry_uid", "entryUid"); + hashMap.put("release_id", "12345"); + hashMap.put("preview_timestamp", "2025-09-25 17:45:30.005"); + + + stack.livePreviewQuery(hashMap); + Entry entry = stack.contentType("page").entry("entry_uid"); + entry.fetch(null); + Assertions.assertNotNull(entry); + } + + @Test + void testLivePreviewQueryWithoutReleaseId() throws Exception { + Config config = new Config().enableLivePreview(true) + .setLivePreviewHost("rest-preview.contentstack.com") + .setPreviewToken("previewToken"); + Stack stack = Contentstack.stack("api_key", "access_token", "env", config); + + Map queryParams = new HashMap<>(); + queryParams.put("content_type_uid", "blog"); + queryParams.put("entry_uid", "entry_123"); + queryParams.put("preview_timestamp", "1710800000"); + + stack.livePreviewQuery(queryParams); + + Assertions.assertNull(config.releaseId); + Assertions.assertEquals("1710800000", config.previewTimestamp); + } + }