Truncate UTC timestamp to seconds.

This commit is contained in:
Erik C. Thauvin 2021-05-15 12:01:00 -07:00
parent 2de9dc66bd
commit 81cee7b00f
3 changed files with 31 additions and 21 deletions

View file

@ -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)
}
/**

View file

@ -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 {

View file

@ -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