diff --git a/src/main/java/org/kohsuke/github/GHNotificationStream.java b/src/main/java/org/kohsuke/github/GHNotificationStream.java index 674344f08..d97b2027f 100644 --- a/src/main/java/org/kohsuke/github/GHNotificationStream.java +++ b/src/main/java/org/kohsuke/github/GHNotificationStream.java @@ -189,5 +189,19 @@ public class GHNotificationStream implements Iterable { }; } + public void markAsRead() throws IOException { + markAsRead(-1); + } + + /** + * Marks all the notifications as read. + */ + public void markAsRead(long timestamp) throws IOException { + final Requester req = new Requester(root).method("PUT"); + if (timestamp>=0) + req.with("last_read_at", GitHub.printDate(new Date(timestamp))); + req.asHttpStatusCode(apiUrl); + } + private static final GHThread[] EMPTY_ARRAY = new GHThread[0]; } diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index b3c8d9412..f979f0d68 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -810,7 +810,7 @@ public class AppTest extends AbstractGitHubApiTestBase { @Test public void notifications() throws Exception { boolean found=false; - for (GHThread t : gitHub.listNotifications().nonBlocking(true)) { + for (GHThread t : gitHub.listNotifications().nonBlocking(true).read(true)) { found = true; assertNotNull(t.getTitle()); assertNotNull(t.getReason()); @@ -821,6 +821,7 @@ public class AppTest extends AbstractGitHubApiTestBase { System.out.println(); } assertTrue(found); + gitHub.listNotifications().markAsRead(); } private void kohsuke() {