Truncate UTC timestamp to seconds.
This commit is contained in:
parent
2de9dc66bd
commit
81cee7b00f
3 changed files with 31 additions and 21 deletions
|
@ -39,6 +39,7 @@ import net.thauvin.erik.pinboard.PinboardPoster
|
||||||
import java.time.ZoneId
|
import java.time.ZoneId
|
||||||
import java.time.ZonedDateTime
|
import java.time.ZonedDateTime
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.time.temporal.ChronoUnit
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,16 +51,15 @@ object PinboardUtils {
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun addPin(poster: PinboardPoster, ircServer: String, entry: EntryLink) = runBlocking {
|
fun addPin(poster: PinboardPoster, ircServer: String, entry: EntryLink) = runBlocking {
|
||||||
val add = async {
|
async {
|
||||||
poster.addPin(
|
poster.addPin(
|
||||||
entry.link,
|
entry.link,
|
||||||
entry.title,
|
entry.title,
|
||||||
postedBy(entry, ircServer),
|
postedBy(entry, ircServer),
|
||||||
entry.pinboardTags,
|
entry.pinboardTags,
|
||||||
formatDate(entry.date)
|
entry.date.toTimestamp()
|
||||||
)
|
)
|
||||||
}
|
}.await()
|
||||||
add.await()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,10 +67,9 @@ object PinboardUtils {
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun deletePin(poster: PinboardPoster, entry: EntryLink) = runBlocking {
|
fun deletePin(poster: PinboardPoster, entry: EntryLink) = runBlocking {
|
||||||
val delete = async {
|
async {
|
||||||
poster.deletePin(entry.link)
|
poster.deletePin(entry.link)
|
||||||
}
|
}.await()
|
||||||
delete.await()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,7 +77,7 @@ object PinboardUtils {
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun updatePin(poster: PinboardPoster, ircServer: String, oldUrl: String, entry: EntryLink) = runBlocking {
|
fun updatePin(poster: PinboardPoster, ircServer: String, oldUrl: String, entry: EntryLink) = runBlocking {
|
||||||
val update = async {
|
async {
|
||||||
with(entry) {
|
with(entry) {
|
||||||
if (oldUrl != link) {
|
if (oldUrl != link) {
|
||||||
poster.deletePin(oldUrl)
|
poster.deletePin(oldUrl)
|
||||||
|
@ -87,7 +86,7 @@ object PinboardUtils {
|
||||||
title,
|
title,
|
||||||
postedBy(entry, ircServer),
|
postedBy(entry, ircServer),
|
||||||
pinboardTags,
|
pinboardTags,
|
||||||
formatDate(date)
|
date.toTimestamp()
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
poster.addPin(
|
poster.addPin(
|
||||||
|
@ -95,21 +94,23 @@ object PinboardUtils {
|
||||||
title,
|
title,
|
||||||
postedBy(entry, ircServer),
|
postedBy(entry, ircServer),
|
||||||
pinboardTags,
|
pinboardTags,
|
||||||
formatDate(date),
|
date.toTimestamp(),
|
||||||
replace = true,
|
replace = true,
|
||||||
shared = true
|
shared = true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}.await()
|
||||||
update.await()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a date to a UTC timestamp.
|
* Format a date to a UTC timestamp.
|
||||||
*/
|
*/
|
||||||
private fun formatDate(date: Date): String {
|
@JvmStatic
|
||||||
return ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).format(DateTimeFormatter.ISO_INSTANT)
|
fun Date.toTimestamp(): String {
|
||||||
|
return ZonedDateTime.ofInstant(
|
||||||
|
this.toInstant().truncatedTo(ChronoUnit.SECONDS),
|
||||||
|
ZoneId.systemDefault()).format(DateTimeFormatter.ISO_INSTANT)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -33,9 +33,12 @@
|
||||||
package net.thauvin.erik.mobibot
|
package net.thauvin.erik.mobibot
|
||||||
|
|
||||||
import net.thauvin.erik.mobibot.entries.EntryLink
|
import net.thauvin.erik.mobibot.entries.EntryLink
|
||||||
|
import net.thauvin.erik.mobibot.PinboardUtils.toTimestamp
|
||||||
import net.thauvin.erik.pinboard.PinboardPoster
|
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 org.testng.annotations.Test
|
||||||
|
import java.util.Date
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
class PinboardUtilsTest : LocalProperties() {
|
class PinboardUtilsTest : LocalProperties() {
|
||||||
|
@ -48,14 +51,20 @@ class PinboardUtilsTest : LocalProperties() {
|
||||||
val entry = EntryLink(url, "Test Example", "ErikT", "", "#mobitopia", listOf("test"))
|
val entry = EntryLink(url, "Test Example", "ErikT", "", "#mobitopia", listOf("test"))
|
||||||
|
|
||||||
PinboardUtils.addPin(pinboard, ircServer, entry)
|
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/"
|
entry.link = "https://www.foo.com/"
|
||||||
|
|
||||||
PinboardUtils.updatePin(pinboard, ircServer, url, entry)
|
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)
|
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 {
|
private fun validatePin(apiToken: String, ircServer: String = "", url: String): Boolean {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#Generated by the Semver Plugin for Gradle
|
#Generated by the Semver Plugin for Gradle
|
||||||
#Sat May 15 01:24:55 PDT 2021
|
#Sat May 15 12:48:51 PDT 2021
|
||||||
version.buildmeta=791
|
version.buildmeta=803
|
||||||
version.major=0
|
version.major=0
|
||||||
version.minor=8
|
version.minor=8
|
||||||
version.patch=0
|
version.patch=0
|
||||||
version.prerelease=beta
|
version.prerelease=beta
|
||||||
version.project=mobibot
|
version.project=mobibot
|
||||||
version.semver=0.8.0-beta+791
|
version.semver=0.8.0-beta+803
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue