diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/PinboardUtils.kt b/src/main/kotlin/net/thauvin/erik/mobibot/PinboardUtils.kt index 8c388f9..c4d3a5f 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/PinboardUtils.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/PinboardUtils.kt @@ -39,6 +39,7 @@ import net.thauvin.erik.pinboard.PinboardPoster import java.time.ZoneId import java.time.ZonedDateTime import java.time.format.DateTimeFormatter +import java.time.temporal.ChronoUnit import java.util.Date /** @@ -50,16 +51,15 @@ object PinboardUtils { */ @JvmStatic fun addPin(poster: PinboardPoster, ircServer: String, entry: EntryLink) = runBlocking { - val add = async { + async { poster.addPin( entry.link, entry.title, postedBy(entry, ircServer), entry.pinboardTags, - formatDate(entry.date) + entry.date.toTimestamp() ) - } - add.await() + }.await() } /** @@ -67,10 +67,9 @@ object PinboardUtils { */ @JvmStatic fun deletePin(poster: PinboardPoster, entry: EntryLink) = runBlocking { - val delete = async { + async { poster.deletePin(entry.link) - } - delete.await() + }.await() } /** @@ -78,7 +77,7 @@ object PinboardUtils { */ @JvmStatic fun updatePin(poster: PinboardPoster, ircServer: String, oldUrl: String, entry: EntryLink) = runBlocking { - val update = async { + async { with(entry) { if (oldUrl != link) { poster.deletePin(oldUrl) @@ -87,7 +86,7 @@ object PinboardUtils { title, postedBy(entry, ircServer), pinboardTags, - formatDate(date) + date.toTimestamp() ) } else { poster.addPin( @@ -95,21 +94,23 @@ object PinboardUtils { title, postedBy(entry, ircServer), pinboardTags, - formatDate(date), + date.toTimestamp(), replace = true, shared = true ) } } - } - update.await() + }.await() } /** * Format a date to a UTC timestamp. */ - private fun formatDate(date: Date): String { - return ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).format(DateTimeFormatter.ISO_INSTANT) + @JvmStatic + fun Date.toTimestamp(): String { + return ZonedDateTime.ofInstant( + this.toInstant().truncatedTo(ChronoUnit.SECONDS), + ZoneId.systemDefault()).format(DateTimeFormatter.ISO_INSTANT) } /** diff --git a/src/test/kotlin/net/thauvin/erik/mobibot/PinboardUtilsTest.kt b/src/test/kotlin/net/thauvin/erik/mobibot/PinboardUtilsTest.kt index d6bb8f4..dd698e4 100644 --- a/src/test/kotlin/net/thauvin/erik/mobibot/PinboardUtilsTest.kt +++ b/src/test/kotlin/net/thauvin/erik/mobibot/PinboardUtilsTest.kt @@ -33,9 +33,12 @@ package net.thauvin.erik.mobibot import net.thauvin.erik.mobibot.entries.EntryLink +import net.thauvin.erik.mobibot.PinboardUtils.toTimestamp import net.thauvin.erik.pinboard.PinboardPoster -import org.testng.Assert +import org.testng.Assert.assertFalse +import org.testng.Assert.assertTrue import org.testng.annotations.Test +import java.util.Date import java.net.URL class PinboardUtilsTest : LocalProperties() { @@ -48,14 +51,20 @@ class PinboardUtilsTest : LocalProperties() { val entry = EntryLink(url, "Test Example", "ErikT", "", "#mobitopia", listOf("test")) PinboardUtils.addPin(pinboard, ircServer, entry) - Assert.assertTrue(validatePin(apiToken, ircServer, entry.link), "addPin") + assertTrue(validatePin(apiToken, ircServer, entry.link), "addPin") entry.link = "https://www.foo.com/" PinboardUtils.updatePin(pinboard, ircServer, url, entry) - Assert.assertTrue(validatePin(apiToken, ircServer, entry.link), "updatePin") + assertTrue(validatePin(apiToken, ircServer, entry.link), "updatePin") PinboardUtils.deletePin(pinboard, entry) - Assert.assertFalse(validatePin(apiToken, url = entry.link), "deletePin") + assertFalse(validatePin(apiToken, url = entry.link), "deletePin") + } + + @Test + fun toTimestampTest() { + val d = Date() + assertTrue(d.toTimestamp().matches("[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z".toRegex())) } private fun validatePin(apiToken: String, ircServer: String = "", url: String): Boolean { diff --git a/version.properties b/version.properties index a15c017..b7bbbbd 100644 --- a/version.properties +++ b/version.properties @@ -1,9 +1,9 @@ #Generated by the Semver Plugin for Gradle -#Sat May 15 01:24:55 PDT 2021 -version.buildmeta=791 +#Sat May 15 12:48:51 PDT 2021 +version.buildmeta=803 version.major=0 version.minor=8 version.patch=0 version.prerelease=beta version.project=mobibot -version.semver=0.8.0-beta+791 +version.semver=0.8.0-beta+803