diff --git a/examples/src/main/java/com/example/AkismetSample.java b/examples/src/main/java/com/example/AkismetSample.java index 503f63a..87273f6 100644 --- a/examples/src/main/java/com/example/AkismetSample.java +++ b/examples/src/main/java/com/example/AkismetSample.java @@ -3,6 +3,8 @@ package com.example; import net.thauvin.erik.akismet.Akismet; import net.thauvin.erik.akismet.AkismetComment; +import java.util.Date; + public class AkismetSample { public static void main(String[] args) { final Akismet akismet = new Akismet("YOUR_API_KEY", "YOUR_BLOG_URL"); @@ -17,6 +19,7 @@ public class AkismetSample { comment.setAuthor("admin"); comment.setAuthorEmail("test@test.com"); comment.setAuthorUrl("http://www.CheckOutMyCoolSite.com"); + comment.setDateGmt(Akismet.dateToGmt(new Date())); // comment.setUserRole(AkismetComment.ADMIN_ROLE); comment.setContent("It means a lot that you would take the time to review our software. Thanks again."); diff --git a/examples/src/main/kotlin/com/example/AkismetExample.kt b/examples/src/main/kotlin/com/example/AkismetExample.kt index 099834a..b6c05ce 100644 --- a/examples/src/main/kotlin/com/example/AkismetExample.kt +++ b/examples/src/main/kotlin/com/example/AkismetExample.kt @@ -2,6 +2,7 @@ package com.example import net.thauvin.erik.akismet.Akismet import net.thauvin.erik.akismet.AkismetComment +import java.util.Date import kotlin.system.exitProcess fun main() { @@ -19,6 +20,7 @@ fun main() { comment.author = "admin" comment.authorEmail = "test@test.com" comment.authorUrl = "http://www.CheckOutMyCoolSite.com" + comment.dateGmt = Akismet.dateToGmt(Date()) // comment.userRole = AkismetComment.ADMIN_ROLE comment.content = "It means a lot that you would take the time to review our software. Thanks again." @@ -40,7 +42,7 @@ fun main() { System.err.println(akismet.errorMessage) } } else { - println("The comment is not SPAM (HAM) according to Akismet.") + println("The comment is not SPAM according to Akismet.") val hasBeenSubmitted = akismet.submitHam(comment) diff --git a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt index 6eaf0ed..304144f 100644 --- a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt +++ b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt @@ -57,6 +57,44 @@ import java.util.logging.Logger */ @Version(properties = "version.properties", type = "kt") open class Akismet(apiKey: String) { + companion object { + /** + * (Re)Create a [comment][AkismetComment] from a JSON string. + * + * @see [AkismetComment.toString] + */ + @JvmStatic + fun jsonComment(json: String): AkismetComment { + return Json(JsonConfiguration.Stable).parse(AkismetComment.serializer(), json) + } + + /** + * Convert a date to a UTC timestamp. (ISO 8601) + * + * @see [AkismetComment.dateGmt] + * @see [AkismetComment.postModifiedGmt] + */ + @JvmStatic + fun dateToGmt(date: Date): String { + return DateTimeFormatter.ISO_DATE_TIME.format( + OffsetDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).truncatedTo(ChronoUnit.SECONDS) + ) + } + + /** + * Convert a locale date/time to a UTC timestamp. (ISO 8601) + * + * @see [AkismetComment.dateGmt] + * @see [AkismetComment.postModifiedGmt] + */ + @JvmStatic + fun dateToGmt(date: LocalDateTime): String { + return DateTimeFormatter.ISO_DATE_TIME.format( + date.atOffset(OffsetDateTime.now().offset).truncatedTo(ChronoUnit.SECONDS) + ) + } + } + private val apiEndPoint = "https://%srest.akismet.com/1.1/%s" private val libUserAgent = "${GeneratedVersion.PROJECT}/${GeneratedVersion.VERSION}" private val verifyMethod = "verify-key" @@ -280,39 +318,6 @@ open class Akismet(apiKey: String) { return executeMethod(buildApiUrl("submit-ham"), buildFormBody(comment)) } - /** - * (Re)Create a [comment][AkismetComment] from a JSON string. - * - * @see [AkismetComment.toString] - */ - fun jsonComment(json: String): AkismetComment { - return Json(JsonConfiguration.Stable).parse(AkismetComment.serializer(), json) - } - - /** - * Convert a date to a UTC timestamp. (ISO 8601) - * - * @see [AkismetComment.dateGmt] - * @see [AkismetComment.postModifiedGmt] - */ - fun dateToGmt(date: Date): String { - return DateTimeFormatter.ISO_DATE_TIME.format( - OffsetDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).truncatedTo(ChronoUnit.SECONDS) - ) - } - - /** - * Convert a locale date/time to a UTC timestamp. (ISO 8601) - * - * @see [AkismetComment.dateGmt] - * @see [AkismetComment.postModifiedGmt] - */ - fun dateToGmt(date: LocalDateTime): String { - return DateTimeFormatter.ISO_DATE_TIME.format( - date.atOffset(OffsetDateTime.now().offset).truncatedTo(ChronoUnit.SECONDS) - ) - } - /** * Execute a call to an Akismet REST API method. * diff --git a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt index a5d1ac3..77882af 100644 --- a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt +++ b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt @@ -102,7 +102,7 @@ class AkismetTest { comment.authorEmail = "test@test.com" comment.authorUrl = "http://www.CheckOutMyCoolSite.com" comment.content = "It means a lot that you would take the time to review our software. Thanks again." - comment.dateGmt = akismet.dateToGmt(date) + comment.dateGmt = Akismet.dateToGmt(date) comment.postModifiedGmt = comment.dateGmt comment.blogLang = "en" comment.blogCharset = "UTF-8" @@ -279,7 +279,7 @@ class AkismetTest { @Test fun testJsonComment() { - val jsonComment = akismet.jsonComment(mockComment.toString()) + val jsonComment = Akismet.jsonComment(mockComment.toString()) assertEquals(jsonComment, mockComment, "equals") assertEquals(jsonComment.hashCode(), mockComment.hashCode(), "hashcode") @@ -305,8 +305,8 @@ class AkismetTest { @Test fun dateToGmtTest() { val localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()) - val utcDate = akismet.dateToGmt(date) - assertEquals(akismet.dateToGmt(localDateTime), utcDate, "dateGmt(localDateTime) = utcDate") + val utcDate = Akismet.dateToGmt(date) + assertEquals(Akismet.dateToGmt(localDateTime), utcDate, "dateGmt(localDateTime) = utcDate") assertEquals(comment.dateGmt, utcDate, "dateGmt == utcDate") }