Moved static functions to companion object.

This commit is contained in:
Erik C. Thauvin 2019-09-23 16:29:16 -07:00
parent 1815093f5f
commit 8702c6511d
4 changed files with 48 additions and 38 deletions

View file

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

View file

@ -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")
}