diff --git a/README.md b/README.md
index 9e41b8e..38ce246 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
[](https://opensource.org/licenses/BSD-3-Clause)
-[](https://kotlinlang.org/)
+[](https://kotlinlang.org/)
[](https://rife2.com/bld)
[](https://github.com/ethauvin/akismet-kotlin/releases/latest)
[](https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/akismet-kotlin/)
@@ -19,16 +19,14 @@ A pretty complete and straightforward implementation of the [Automattic's Akisme
```kotlin
val akismet = Akismet(apiKey = "YOUR_API_KEY", blog = "YOUR_BLOG_URL")
-val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0")
-
-with(comment) {
+val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0").apply {
referrer = "https://www.google.com"
type = AkismetComment.TYPE_COMMENT
author = "admin"
authorEmail = "test@test.com"
authorUrl = "https://www.CheckOutMyCoolSite.com"
dateGmt = Akismet.dateToGmt(Date())
- content = "It means a lot that you would take the time to review our software."
+ content = "Thanks for reviewing our software."
}
// ...
@@ -44,15 +42,17 @@ if (isSpam) {
```java
final Akismet akismet = new Akismet("YOUR_API_KEY", "YOUR_BLOG_URL");
-final AkismetComment comment = new AkismetComment("127.0.0.1", "curl/7.29.0");
-
-comment.setReferrer("https://www.google.com");
-comment.setType(AkismetComment.TYPE_COMMENT);
-comment.setAuthor("admin");
-comment.setAuthorEmail("test@test.com");
-comment.setAuthorUrl("https://www.CheckOutMyCoolSite.com");
-comment.setDateGmt(Akismet.dateToGmt(new Date()));
-comment.setContent("It means a lot that you would take the time to review our software.");
+final AkismetComment comment = new AkismetComment(
+ new CommentConfig.Builder("127.0.0.1", "curl/7.29.0")
+ .referrer("https://www.google.com")
+ .type(Akismet.TYPE_COMMENT)
+ .author("admin")
+ .authorEmail("test@test.com")
+ .authorUrl("https://www.CheckOutMyCoolSite.com")
+ .dateGmt(Akismet.dateToGmt(new Date()))
+ .content("Thanks for reviewing our software.")
+ .build
+);
//...
final boolean isSpam = akismet.checkComment(comment);
diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml
index 935e447..a4794c3 100644
--- a/config/detekt/baseline.xml
+++ b/config/detekt/baseline.xml
@@ -5,12 +5,14 @@
CyclomaticComplexMethod:Akismet.kt$Akismet$private fun buildFormBody(comment: AkismetComment): FormBody
CyclomaticComplexMethod:AkismetComment.kt$AkismetComment$@Suppress("DuplicatedCode") override fun equals(other: Any?): Boolean
LongParameterList:AkismetServlet.kt$AkismetServlet$( id: String, name: String?, email: String?, date: String?, comment: String?, json: String, isSpam: Boolean )
+ LongParameterList:CommentConfig.kt$CommentConfig$( var userIp: String, var userAgent: String, var referrer: String = "", var permalink: String = "", var type: String = "", var author: String = "", var authorEmail: String = "", var authorUrl: String = "", var content: String = "", var dateGmt: String = "", var postModifiedGmt: String = "", var blogLang: String = "", var blogCharset: String = "", var userRole: String = "", var isTest: Boolean = false, var recheckReason: String = "", var serverEnv: Map<String, String> = emptyMap() )
MagicNumber:Akismet.kt$Akismet$12
MagicNumber:Akismet.kt$Akismet$8
NestedBlockDepth:Akismet.kt$Akismet$@JvmOverloads fun executeMethod(apiUrl: HttpUrl, formBody: FormBody, trueOnError: Boolean = false): Boolean
NestedBlockDepth:AkismetExample.kt$fun main(args: Array<String>)
NestedBlockDepth:AkismetTest.kt$fun getKey(key: String): String
ReturnCount:Akismet.kt$Akismet$@JvmOverloads fun executeMethod(apiUrl: HttpUrl, formBody: FormBody, trueOnError: Boolean = false): Boolean
+ TooManyFunctions:CommentConfig.kt$CommentConfig$Builder
WildcardImport:AkismetTest.kt$import assertk.assertions.*
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
index 3013bd1..7c95c93 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
@@ -66,10 +66,10 @@
Akismet Comment
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html
index 66a74d9..d034a3f 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html
index 5968791..7355fc7 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html
index 9df75a7..afe8804 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html
index c6d715d..8b621e3 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html
index e7affbe..904d5ab 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html
index c9e30ef..6eebb27 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html
index 978e89b..88d4c32 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html
index 546c9e7..27d019e 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html
index 23556f1..ffbd0fe 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html
index 0eed509..5cf4269 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html
index 3c1f811..6d6a965 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html
index 66d5f6f..fa7d536 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html
@@ -243,7 +243,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html
index 32b3e8e..7a99041 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html
@@ -66,10 +66,10 @@
author Email
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html
index b4eaa89..3c7bb0b 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html
@@ -66,10 +66,10 @@
author Url
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html
index b483d03..fbf6f8b 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html
@@ -66,10 +66,10 @@
author
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html
index 5bf0ffc..e41952e 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html
@@ -66,10 +66,10 @@
blog Charset
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html
index 23a222b..408401c 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html
@@ -66,10 +66,10 @@
blog Lang
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html
index b0a64a8..f61a684 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html
@@ -66,10 +66,10 @@
content
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html
index 9a963db..332a620 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html
@@ -66,10 +66,10 @@
date Gmt
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html
index 7b22c2a..e4cde43 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html
@@ -66,10 +66,10 @@
equals
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html
index 2fd48d0..590c660 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html
@@ -66,10 +66,10 @@
hash Code
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html
index bc05111..d7f79e9 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html
@@ -72,17 +72,17 @@
@@ -165,7 +165,7 @@
@@ -180,7 +180,7 @@
@@ -195,7 +195,7 @@
@@ -210,7 +210,7 @@
@@ -225,7 +225,7 @@
@@ -240,7 +240,7 @@
@@ -255,7 +255,7 @@
@@ -270,7 +270,7 @@
@@ -285,7 +285,7 @@
@@ -300,7 +300,7 @@
@@ -315,7 +315,7 @@
@@ -330,7 +330,7 @@
@@ -345,7 +345,7 @@
@@ -360,7 +360,7 @@
@@ -409,7 +409,7 @@
@@ -435,7 +435,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html
index 58cc1e9..ef61f6e 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html
@@ -66,10 +66,10 @@
is Test
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html
index ae5f2b4..b4d9093 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html
@@ -66,10 +66,10 @@
permalink
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html
index 2a322f3..d1bb3c7 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html
@@ -66,10 +66,10 @@
post Modified Gmt
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html
index 45a2265..77a4f0e 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html
@@ -66,10 +66,10 @@
recheck Reason
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html
index 426839f..2efc507 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html
@@ -66,10 +66,10 @@
referrer
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html
index e850422..12d306d 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html
@@ -66,10 +66,10 @@
server Env
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html
index 3345ebe..87190b6 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html
@@ -66,10 +66,10 @@
to Json
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html
index d2628b4..98e8082 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html
@@ -66,10 +66,10 @@
to String
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html
index a067ff5..fa164f7 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html
@@ -66,10 +66,10 @@
type
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html
index 1ce0772..425c8e0 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html
@@ -66,10 +66,10 @@
user Agent
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html
index 2b9bfbc..382ca42 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html
@@ -66,10 +66,10 @@
user Ip
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html
index 8ae0f29..6fbc2a1 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html
@@ -66,10 +66,10 @@
user Role
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html
index d65404f..6c96d10 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html
@@ -69,7 +69,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html
index f7a9122..12ebc0b 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html
@@ -66,10 +66,10 @@
date To Gmt
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html
index 03314eb..15cb77a 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html
@@ -82,7 +82,7 @@
@@ -97,7 +97,7 @@
@@ -108,7 +108,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html
index eeb9e5d..4899569 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html
@@ -66,10 +66,10 @@
json Comment
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html
index c88ec98..2af3726 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html
@@ -66,10 +66,10 @@
app User Agent
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html
index 0da56d6..16c3896 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html
@@ -66,10 +66,10 @@
blog
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html
index 12364f2..51c4b63 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html
@@ -66,10 +66,10 @@
check Comment
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html
index b0d819a..662ecd8 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html
@@ -66,10 +66,10 @@
debug Help
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html
index 072beab..7ebd106 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html
@@ -66,10 +66,10 @@
error Message
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html
index 9917361..6864594 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html
@@ -66,10 +66,10 @@
execute Method
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html
index 4f00cdf..ef6eb2d 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html
@@ -66,10 +66,10 @@
http Status Code
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html
index 2b797a4..ecd5030 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html
@@ -120,7 +120,7 @@
@@ -135,7 +135,7 @@
@@ -150,7 +150,7 @@
@@ -165,7 +165,7 @@
@@ -180,7 +180,7 @@
@@ -195,7 +195,7 @@
@@ -210,7 +210,7 @@
@@ -225,7 +225,7 @@
@@ -240,7 +240,7 @@
@@ -255,7 +255,7 @@
@@ -274,7 +274,7 @@
@@ -289,7 +289,7 @@
@@ -304,7 +304,7 @@
@@ -319,7 +319,7 @@
@@ -334,7 +334,7 @@
@@ -349,7 +349,7 @@
@@ -360,7 +360,7 @@
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html
index ae2d654..7432915 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html
@@ -66,10 +66,10 @@
is Discard
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html
index 1030676..63bd9ed 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html
@@ -66,10 +66,10 @@
is Verified Key
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html
index 1ab7294..4a22835 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html
@@ -66,10 +66,10 @@
logger
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html
index 04647a8..d84c664 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html
@@ -66,10 +66,10 @@
pro Tip
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html
index aa0b1cc..89b0d83 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html
@@ -66,10 +66,10 @@
reset
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html
index 9c21ba0..441f1d3 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html
@@ -66,10 +66,10 @@
response
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html
index 0c1b658..fd3d7a4 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html
@@ -66,10 +66,10 @@
submit Ham
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html
index 22d568e..0ee0cc5 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html
@@ -66,10 +66,10 @@
submit Spam
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html
index 9272ecd..b59bdb6 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html
@@ -66,10 +66,10 @@
verify Key
-
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/-builder.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/-builder.html
new file mode 100644
index 0000000..fd78ecf
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/-builder.html
@@ -0,0 +1,80 @@
+
+
+
+
+ Builder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html
new file mode 100644
index 0000000..37a811e
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html
@@ -0,0 +1,80 @@
+
+
+
+
+ authorEmail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html
new file mode 100644
index 0000000..39880c6
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html
@@ -0,0 +1,80 @@
+
+
+
+
+ authorUrl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html
new file mode 100644
index 0000000..553d17b
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html
@@ -0,0 +1,80 @@
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html
new file mode 100644
index 0000000..f6eba16
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html
@@ -0,0 +1,80 @@
+
+
+
+
+ blogCharset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html
new file mode 100644
index 0000000..c9820b0
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html
@@ -0,0 +1,80 @@
+
+
+
+
+ blogLang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/build.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/build.html
new file mode 100644
index 0000000..4846b23
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/build.html
@@ -0,0 +1,80 @@
+
+
+
+
+ build
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html
new file mode 100644
index 0000000..ab0641a
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html
@@ -0,0 +1,80 @@
+
+
+
+
+ content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html
new file mode 100644
index 0000000..50cb95f
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html
@@ -0,0 +1,80 @@
+
+
+
+
+ dateGmt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/index.html
new file mode 100644
index 0000000..6989807
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/index.html
@@ -0,0 +1,637 @@
+
+
+
+
+ Builder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
+
Members
+
+
+
+
Properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html
new file mode 100644
index 0000000..4cfd974
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html
@@ -0,0 +1,80 @@
+
+
+
+
+ isTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html
new file mode 100644
index 0000000..7e5089b
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html
@@ -0,0 +1,80 @@
+
+
+
+
+ permalink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html
new file mode 100644
index 0000000..d2103fa
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html
@@ -0,0 +1,80 @@
+
+
+
+
+ postModifiedGmt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
post Modified Gmt
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html
new file mode 100644
index 0000000..ed9266f
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html
@@ -0,0 +1,80 @@
+
+
+
+
+ recheckReason
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
recheck Reason
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html
new file mode 100644
index 0000000..1687d92
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html
@@ -0,0 +1,80 @@
+
+
+
+
+ referrer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html
new file mode 100644
index 0000000..4fe2379
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html
@@ -0,0 +1,80 @@
+
+
+
+
+ serverEnv
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html
new file mode 100644
index 0000000..1223c05
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html
@@ -0,0 +1,80 @@
+
+
+
+
+ type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html
new file mode 100644
index 0000000..ebe0b60
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userAgent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html
new file mode 100644
index 0000000..f2b7151
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userIp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html
new file mode 100644
index 0000000..53891ca
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userRole
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html
new file mode 100644
index 0000000..d3106ab
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html
@@ -0,0 +1,80 @@
+
+
+
+
+ CommentConfig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
Comment Config
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-email.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-email.html
new file mode 100644
index 0000000..f929016
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-email.html
@@ -0,0 +1,80 @@
+
+
+
+
+ authorEmail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-url.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-url.html
new file mode 100644
index 0000000..b68ae93
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-url.html
@@ -0,0 +1,80 @@
+
+
+
+
+ authorUrl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author.html
new file mode 100644
index 0000000..4dddd46
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author.html
@@ -0,0 +1,80 @@
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-charset.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-charset.html
new file mode 100644
index 0000000..e461179
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-charset.html
@@ -0,0 +1,80 @@
+
+
+
+
+ blogCharset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-lang.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-lang.html
new file mode 100644
index 0000000..2cabbb2
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-lang.html
@@ -0,0 +1,80 @@
+
+
+
+
+ blogLang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/content.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/content.html
new file mode 100644
index 0000000..47f76d7
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/content.html
@@ -0,0 +1,80 @@
+
+
+
+
+ content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/date-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/date-gmt.html
new file mode 100644
index 0000000..4fa14cb
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/date-gmt.html
@@ -0,0 +1,80 @@
+
+
+
+
+ dateGmt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/index.html
new file mode 100644
index 0000000..6a4ceaf
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/index.html
@@ -0,0 +1,382 @@
+
+
+
+
+ CommentConfig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
+
Members
+
+
+
+
+
Properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/is-test.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/is-test.html
new file mode 100644
index 0000000..6268169
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/is-test.html
@@ -0,0 +1,80 @@
+
+
+
+
+ isTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/permalink.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/permalink.html
new file mode 100644
index 0000000..71ced0d
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/permalink.html
@@ -0,0 +1,80 @@
+
+
+
+
+ permalink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/post-modified-gmt.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/post-modified-gmt.html
new file mode 100644
index 0000000..5c5b107
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/post-modified-gmt.html
@@ -0,0 +1,80 @@
+
+
+
+
+ postModifiedGmt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
post Modified Gmt
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/recheck-reason.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/recheck-reason.html
new file mode 100644
index 0000000..7c47420
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/recheck-reason.html
@@ -0,0 +1,80 @@
+
+
+
+
+ recheckReason
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
+
+
+
+
+
recheck Reason
+
+
+
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/referrer.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/referrer.html
new file mode 100644
index 0000000..4b72c35
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/referrer.html
@@ -0,0 +1,80 @@
+
+
+
+
+ referrer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/server-env.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/server-env.html
new file mode 100644
index 0000000..56a04ef
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/server-env.html
@@ -0,0 +1,80 @@
+
+
+
+
+ serverEnv
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/type.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/type.html
new file mode 100644
index 0000000..f9e6853
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/type.html
@@ -0,0 +1,80 @@
+
+
+
+
+ type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-agent.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-agent.html
new file mode 100644
index 0000000..3fe2c97
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-agent.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userAgent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-ip.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-ip.html
new file mode 100644
index 0000000..6505d24
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-ip.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userIp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-role.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-role.html
new file mode 100644
index 0000000..4f5faac
--- /dev/null
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-role.html
@@ -0,0 +1,80 @@
+
+
+
+
+ userRole
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
switch theme
+
search in API
+
+
+
+
+
+
diff --git a/docs/-akismet -kotlin/net.thauvin.erik.akismet/index.html b/docs/-akismet -kotlin/net.thauvin.erik.akismet/index.html
index bbb72b5..f2b4375 100644
--- a/docs/-akismet -kotlin/net.thauvin.erik.akismet/index.html
+++ b/docs/-akismet -kotlin/net.thauvin.erik.akismet/index.html
@@ -102,13 +102,28 @@
+
+
diff --git a/docs/-akismet -kotlin/package-list b/docs/-akismet -kotlin/package-list
index e7dce2a..28d612c 100644
--- a/docs/-akismet -kotlin/package-list
+++ b/docs/-akismet -kotlin/package-list
@@ -39,6 +39,7 @@ $dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_TWEET/#/P
$dokka.location:net.thauvin.erik.akismet/AkismetComment///PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/AkismetComment/#[Error type: Unresolved type for HttpServletRequest]/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/AkismetComment/#kotlin.String#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
+$dokka.location:net.thauvin.erik.akismet/AkismetComment/AkismetComment/#net.thauvin.erik.akismet.CommentConfig/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/author/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/authorEmail/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/authorUrl/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html
@@ -60,5 +61,62 @@ $dokka.location:net.thauvin.erik.akismet/AkismetComment/type/#/PointingToDeclara
$dokka.location:net.thauvin.erik.akismet/AkismetComment/userAgent/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/userIp/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html
$dokka.location:net.thauvin.erik.akismet/AkismetComment/userRole/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder///PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/index.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/Builder/#kotlin.String#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/-builder.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/author/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/author/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/authorEmail/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/authorEmail/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/authorUrl/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/authorUrl/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/blogCharset/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/blogCharset/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/blogLang/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/blogLang/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/build/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/build.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/content/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/content/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/dateGmt/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/dateGmt/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/isTest/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/isTest/#kotlin.Boolean/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/permalink/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/permalink/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/postModifiedGmt/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/postModifiedGmt/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/recheckReason/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/recheckReason/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/referrer/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/referrer/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/serverEnv/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/serverEnv/#kotlin.collections.Map[kotlin.String,kotlin.String]/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/type/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/type/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userAgent/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userAgent/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userIp/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userIp/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userRole/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig.Builder/userRole/#kotlin.String/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig///PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/index.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/CommentConfig/#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.Boolean#kotlin.String#kotlin.collections.Map[kotlin.String,kotlin.String]/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/CommentConfig/#net.thauvin.erik.akismet.CommentConfig.Builder/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/author/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/authorEmail/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-email.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/authorUrl/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-url.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/blogCharset/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-charset.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/blogLang/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-lang.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/content/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/content.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/dateGmt/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/date-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/isTest/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/is-test.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/permalink/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/permalink.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/postModifiedGmt/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/post-modified-gmt.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/recheckReason/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/recheck-reason.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/referrer/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/referrer.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/serverEnv/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/server-env.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/type/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/type.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/userAgent/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-agent.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/userIp/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-ip.html
+$dokka.location:net.thauvin.erik.akismet/CommentConfig/userRole/#/PointingToDeclaration/-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-role.html
net.thauvin.erik.akismet
diff --git a/docs/images/homepage.svg b/docs/images/homepage.svg
new file mode 100644
index 0000000..e3c83b1
--- /dev/null
+++ b/docs/images/homepage.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/index.html b/docs/index.html
index c16d667..4a4f063 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -90,7 +90,7 @@
diff --git a/docs/navigation.html b/docs/navigation.html
index aff718a..08fa7f2 100644
--- a/docs/navigation.html
+++ b/docs/navigation.html
@@ -14,6 +14,12 @@
+
diff --git a/docs/scripts/pages.json b/docs/scripts/pages.json
index bdcd091..ed1cadd 100644
--- a/docs/scripts/pages.json
+++ b/docs/scripts/pages.json
@@ -1 +1 @@
-[{"name":"const val ADMIN_ROLE: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.ADMIN_ROLE","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html","searchKeys":["ADMIN_ROLE","const val ADMIN_ROLE: String","net.thauvin.erik.akismet.AkismetComment.Companion.ADMIN_ROLE"]},{"name":"const val TYPE_BLOG_POST: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_BLOG_POST","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html","searchKeys":["TYPE_BLOG_POST","const val TYPE_BLOG_POST: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_BLOG_POST"]},{"name":"const val TYPE_COMMENT: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_COMMENT","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html","searchKeys":["TYPE_COMMENT","const val TYPE_COMMENT: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_COMMENT"]},{"name":"const val TYPE_CONTACT_FORM: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_CONTACT_FORM","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html","searchKeys":["TYPE_CONTACT_FORM","const val TYPE_CONTACT_FORM: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_CONTACT_FORM"]},{"name":"const val TYPE_FORUM_POST: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_FORUM_POST","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html","searchKeys":["TYPE_FORUM_POST","const val TYPE_FORUM_POST: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_FORUM_POST"]},{"name":"const val TYPE_MESSAGE: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_MESSAGE","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html","searchKeys":["TYPE_MESSAGE","const val TYPE_MESSAGE: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_MESSAGE"]},{"name":"const val TYPE_PINGBACK: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_PINGBACK","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html","searchKeys":["TYPE_PINGBACK","const val TYPE_PINGBACK: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_PINGBACK"]},{"name":"const val TYPE_REPLY: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_REPLY","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html","searchKeys":["TYPE_REPLY","const val TYPE_REPLY: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_REPLY"]},{"name":"const val TYPE_SIGNUP: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_SIGNUP","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html","searchKeys":["TYPE_SIGNUP","const val TYPE_SIGNUP: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_SIGNUP"]},{"name":"const val TYPE_TRACKBACK: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TRACKBACK","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html","searchKeys":["TYPE_TRACKBACK","const val TYPE_TRACKBACK: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TRACKBACK"]},{"name":"const val TYPE_TWEET: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TWEET","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html","searchKeys":["TYPE_TWEET","const val TYPE_TWEET: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TWEET"]},{"name":"constructor(apiKey: String)","description":"net.thauvin.erik.akismet.Akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html","searchKeys":["Akismet","constructor(apiKey: String)","net.thauvin.erik.akismet.Akismet.Akismet"]},{"name":"constructor(apiKey: String, blog: String)","description":"net.thauvin.erik.akismet.Akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html","searchKeys":["Akismet","constructor(apiKey: String, blog: String)","net.thauvin.erik.akismet.Akismet.Akismet"]},{"name":"constructor(request: )","description":"net.thauvin.erik.akismet.AkismetComment.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html","searchKeys":["AkismetComment","constructor(request: )","net.thauvin.erik.akismet.AkismetComment.AkismetComment"]},{"name":"constructor(userIp: String, userAgent: String)","description":"net.thauvin.erik.akismet.AkismetComment.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html","searchKeys":["AkismetComment","constructor(userIp: String, userAgent: String)","net.thauvin.erik.akismet.AkismetComment.AkismetComment"]},{"name":"fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean","description":"net.thauvin.erik.akismet.Akismet.checkComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html","searchKeys":["checkComment","fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean","net.thauvin.erik.akismet.Akismet.checkComment"]},{"name":"fun dateToGmt(date: Date): String","description":"net.thauvin.erik.akismet.Akismet.Companion.dateToGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html","searchKeys":["dateToGmt","fun dateToGmt(date: Date): String","net.thauvin.erik.akismet.Akismet.Companion.dateToGmt"]},{"name":"fun dateToGmt(date: LocalDateTime): String","description":"net.thauvin.erik.akismet.Akismet.Companion.dateToGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html","searchKeys":["dateToGmt","fun dateToGmt(date: LocalDateTime): String","net.thauvin.erik.akismet.Akismet.Companion.dateToGmt"]},{"name":"fun executeMethod(apiUrl: , formBody: , trueOnError: Boolean = false): Boolean","description":"net.thauvin.erik.akismet.Akismet.executeMethod","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html","searchKeys":["executeMethod","fun executeMethod(apiUrl: , formBody: , trueOnError: Boolean = false): Boolean","net.thauvin.erik.akismet.Akismet.executeMethod"]},{"name":"fun jsonComment(json: String): AkismetComment","description":"net.thauvin.erik.akismet.Akismet.Companion.jsonComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html","searchKeys":["jsonComment","fun jsonComment(json: String): AkismetComment","net.thauvin.erik.akismet.Akismet.Companion.jsonComment"]},{"name":"fun reset()","description":"net.thauvin.erik.akismet.Akismet.reset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html","searchKeys":["reset","fun reset()","net.thauvin.erik.akismet.Akismet.reset"]},{"name":"fun submitHam(comment: AkismetComment): Boolean","description":"net.thauvin.erik.akismet.Akismet.submitHam","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html","searchKeys":["submitHam","fun submitHam(comment: AkismetComment): Boolean","net.thauvin.erik.akismet.Akismet.submitHam"]},{"name":"fun submitSpam(comment: AkismetComment): Boolean","description":"net.thauvin.erik.akismet.Akismet.submitSpam","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html","searchKeys":["submitSpam","fun submitSpam(comment: AkismetComment): Boolean","net.thauvin.erik.akismet.Akismet.submitSpam"]},{"name":"fun toJson(): String","description":"net.thauvin.erik.akismet.AkismetComment.toJson","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html","searchKeys":["toJson","fun toJson(): String","net.thauvin.erik.akismet.AkismetComment.toJson"]},{"name":"fun verifyKey(): Boolean","description":"net.thauvin.erik.akismet.Akismet.verifyKey","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html","searchKeys":["verifyKey","fun verifyKey(): Boolean","net.thauvin.erik.akismet.Akismet.verifyKey"]},{"name":"object Companion","description":"net.thauvin.erik.akismet.Akismet.Companion","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html","searchKeys":["Companion","object Companion","net.thauvin.erik.akismet.Akismet.Companion"]},{"name":"object Companion","description":"net.thauvin.erik.akismet.AkismetComment.Companion","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html","searchKeys":["Companion","object Companion","net.thauvin.erik.akismet.AkismetComment.Companion"]},{"name":"open class Akismet(apiKey: String)","description":"net.thauvin.erik.akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html","searchKeys":["Akismet","open class Akismet(apiKey: String)","net.thauvin.erik.akismet.Akismet"]},{"name":"open class AkismetComment(val userIp: String, val userAgent: String)","description":"net.thauvin.erik.akismet.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html","searchKeys":["AkismetComment","open class AkismetComment(val userIp: String, val userAgent: String)","net.thauvin.erik.akismet.AkismetComment"]},{"name":"open operator override fun equals(other: Any?): Boolean","description":"net.thauvin.erik.akismet.AkismetComment.equals","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html","searchKeys":["equals","open operator override fun equals(other: Any?): Boolean","net.thauvin.erik.akismet.AkismetComment.equals"]},{"name":"open override fun hashCode(): Int","description":"net.thauvin.erik.akismet.AkismetComment.hashCode","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html","searchKeys":["hashCode","open override fun hashCode(): Int","net.thauvin.erik.akismet.AkismetComment.hashCode"]},{"name":"open override fun toString(): String","description":"net.thauvin.erik.akismet.AkismetComment.toString","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html","searchKeys":["toString","open override fun toString(): String","net.thauvin.erik.akismet.AkismetComment.toString"]},{"name":"val logger: Logger","description":"net.thauvin.erik.akismet.Akismet.logger","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html","searchKeys":["logger","val logger: Logger","net.thauvin.erik.akismet.Akismet.logger"]},{"name":"val userAgent: String","description":"net.thauvin.erik.akismet.AkismetComment.userAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html","searchKeys":["userAgent","val userAgent: String","net.thauvin.erik.akismet.AkismetComment.userAgent"]},{"name":"val userIp: String","description":"net.thauvin.erik.akismet.AkismetComment.userIp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html","searchKeys":["userIp","val userIp: String","net.thauvin.erik.akismet.AkismetComment.userIp"]},{"name":"var appUserAgent: String","description":"net.thauvin.erik.akismet.Akismet.appUserAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html","searchKeys":["appUserAgent","var appUserAgent: String","net.thauvin.erik.akismet.Akismet.appUserAgent"]},{"name":"var author: String?","description":"net.thauvin.erik.akismet.AkismetComment.author","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html","searchKeys":["author","var author: String?","net.thauvin.erik.akismet.AkismetComment.author"]},{"name":"var authorEmail: String?","description":"net.thauvin.erik.akismet.AkismetComment.authorEmail","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html","searchKeys":["authorEmail","var authorEmail: String?","net.thauvin.erik.akismet.AkismetComment.authorEmail"]},{"name":"var authorUrl: String?","description":"net.thauvin.erik.akismet.AkismetComment.authorUrl","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html","searchKeys":["authorUrl","var authorUrl: String?","net.thauvin.erik.akismet.AkismetComment.authorUrl"]},{"name":"var blog: String","description":"net.thauvin.erik.akismet.Akismet.blog","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html","searchKeys":["blog","var blog: String","net.thauvin.erik.akismet.Akismet.blog"]},{"name":"var blogCharset: String?","description":"net.thauvin.erik.akismet.AkismetComment.blogCharset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html","searchKeys":["blogCharset","var blogCharset: String?","net.thauvin.erik.akismet.AkismetComment.blogCharset"]},{"name":"var blogLang: String?","description":"net.thauvin.erik.akismet.AkismetComment.blogLang","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html","searchKeys":["blogLang","var blogLang: String?","net.thauvin.erik.akismet.AkismetComment.blogLang"]},{"name":"var content: String?","description":"net.thauvin.erik.akismet.AkismetComment.content","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html","searchKeys":["content","var content: String?","net.thauvin.erik.akismet.AkismetComment.content"]},{"name":"var dateGmt: String?","description":"net.thauvin.erik.akismet.AkismetComment.dateGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html","searchKeys":["dateGmt","var dateGmt: String?","net.thauvin.erik.akismet.AkismetComment.dateGmt"]},{"name":"var debugHelp: String","description":"net.thauvin.erik.akismet.Akismet.debugHelp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html","searchKeys":["debugHelp","var debugHelp: String","net.thauvin.erik.akismet.Akismet.debugHelp"]},{"name":"var errorMessage: String","description":"net.thauvin.erik.akismet.Akismet.errorMessage","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html","searchKeys":["errorMessage","var errorMessage: String","net.thauvin.erik.akismet.Akismet.errorMessage"]},{"name":"var httpStatusCode: Int","description":"net.thauvin.erik.akismet.Akismet.httpStatusCode","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html","searchKeys":["httpStatusCode","var httpStatusCode: Int","net.thauvin.erik.akismet.Akismet.httpStatusCode"]},{"name":"var isDiscard: Boolean","description":"net.thauvin.erik.akismet.Akismet.isDiscard","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html","searchKeys":["isDiscard","var isDiscard: Boolean","net.thauvin.erik.akismet.Akismet.isDiscard"]},{"name":"var isTest: Boolean","description":"net.thauvin.erik.akismet.AkismetComment.isTest","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html","searchKeys":["isTest","var isTest: Boolean","net.thauvin.erik.akismet.AkismetComment.isTest"]},{"name":"var isVerifiedKey: Boolean","description":"net.thauvin.erik.akismet.Akismet.isVerifiedKey","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html","searchKeys":["isVerifiedKey","var isVerifiedKey: Boolean","net.thauvin.erik.akismet.Akismet.isVerifiedKey"]},{"name":"var permalink: String?","description":"net.thauvin.erik.akismet.AkismetComment.permalink","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html","searchKeys":["permalink","var permalink: String?","net.thauvin.erik.akismet.AkismetComment.permalink"]},{"name":"var postModifiedGmt: String?","description":"net.thauvin.erik.akismet.AkismetComment.postModifiedGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html","searchKeys":["postModifiedGmt","var postModifiedGmt: String?","net.thauvin.erik.akismet.AkismetComment.postModifiedGmt"]},{"name":"var proTip: String","description":"net.thauvin.erik.akismet.Akismet.proTip","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html","searchKeys":["proTip","var proTip: String","net.thauvin.erik.akismet.Akismet.proTip"]},{"name":"var recheckReason: String?","description":"net.thauvin.erik.akismet.AkismetComment.recheckReason","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html","searchKeys":["recheckReason","var recheckReason: String?","net.thauvin.erik.akismet.AkismetComment.recheckReason"]},{"name":"var referrer: String?","description":"net.thauvin.erik.akismet.AkismetComment.referrer","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html","searchKeys":["referrer","var referrer: String?","net.thauvin.erik.akismet.AkismetComment.referrer"]},{"name":"var response: String","description":"net.thauvin.erik.akismet.Akismet.response","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html","searchKeys":["response","var response: String","net.thauvin.erik.akismet.Akismet.response"]},{"name":"var serverEnv: Map","description":"net.thauvin.erik.akismet.AkismetComment.serverEnv","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html","searchKeys":["serverEnv","var serverEnv: Map","net.thauvin.erik.akismet.AkismetComment.serverEnv"]},{"name":"var type: String?","description":"net.thauvin.erik.akismet.AkismetComment.type","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html","searchKeys":["type","var type: String?","net.thauvin.erik.akismet.AkismetComment.type"]},{"name":"var userRole: String?","description":"net.thauvin.erik.akismet.AkismetComment.userRole","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html","searchKeys":["userRole","var userRole: String?","net.thauvin.erik.akismet.AkismetComment.userRole"]}]
+[{"name":"class CommentConfig constructor(var userIp: String, var userAgent: String, var referrer: String = \"\", var permalink: String = \"\", var type: String = \"\", var author: String = \"\", var authorEmail: String = \"\", var authorUrl: String = \"\", var content: String = \"\", var dateGmt: String = \"\", var postModifiedGmt: String = \"\", var blogLang: String = \"\", var blogCharset: String = \"\", var userRole: String = \"\", var isTest: Boolean = false, var recheckReason: String = \"\", var serverEnv: Map = emptyMap())","description":"net.thauvin.erik.akismet.CommentConfig","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/index.html","searchKeys":["CommentConfig","class CommentConfig constructor(var userIp: String, var userAgent: String, var referrer: String = \"\", var permalink: String = \"\", var type: String = \"\", var author: String = \"\", var authorEmail: String = \"\", var authorUrl: String = \"\", var content: String = \"\", var dateGmt: String = \"\", var postModifiedGmt: String = \"\", var blogLang: String = \"\", var blogCharset: String = \"\", var userRole: String = \"\", var isTest: Boolean = false, var recheckReason: String = \"\", var serverEnv: Map = emptyMap())","net.thauvin.erik.akismet.CommentConfig"]},{"name":"const val ADMIN_ROLE: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.ADMIN_ROLE","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html","searchKeys":["ADMIN_ROLE","const val ADMIN_ROLE: String","net.thauvin.erik.akismet.AkismetComment.Companion.ADMIN_ROLE"]},{"name":"const val TYPE_BLOG_POST: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_BLOG_POST","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html","searchKeys":["TYPE_BLOG_POST","const val TYPE_BLOG_POST: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_BLOG_POST"]},{"name":"const val TYPE_COMMENT: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_COMMENT","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html","searchKeys":["TYPE_COMMENT","const val TYPE_COMMENT: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_COMMENT"]},{"name":"const val TYPE_CONTACT_FORM: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_CONTACT_FORM","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html","searchKeys":["TYPE_CONTACT_FORM","const val TYPE_CONTACT_FORM: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_CONTACT_FORM"]},{"name":"const val TYPE_FORUM_POST: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_FORUM_POST","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html","searchKeys":["TYPE_FORUM_POST","const val TYPE_FORUM_POST: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_FORUM_POST"]},{"name":"const val TYPE_MESSAGE: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_MESSAGE","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html","searchKeys":["TYPE_MESSAGE","const val TYPE_MESSAGE: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_MESSAGE"]},{"name":"const val TYPE_PINGBACK: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_PINGBACK","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html","searchKeys":["TYPE_PINGBACK","const val TYPE_PINGBACK: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_PINGBACK"]},{"name":"const val TYPE_REPLY: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_REPLY","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html","searchKeys":["TYPE_REPLY","const val TYPE_REPLY: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_REPLY"]},{"name":"const val TYPE_SIGNUP: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_SIGNUP","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html","searchKeys":["TYPE_SIGNUP","const val TYPE_SIGNUP: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_SIGNUP"]},{"name":"const val TYPE_TRACKBACK: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TRACKBACK","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html","searchKeys":["TYPE_TRACKBACK","const val TYPE_TRACKBACK: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TRACKBACK"]},{"name":"const val TYPE_TWEET: String","description":"net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TWEET","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html","searchKeys":["TYPE_TWEET","const val TYPE_TWEET: String","net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TWEET"]},{"name":"constructor(apiKey: String)","description":"net.thauvin.erik.akismet.Akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html","searchKeys":["Akismet","constructor(apiKey: String)","net.thauvin.erik.akismet.Akismet.Akismet"]},{"name":"constructor(apiKey: String, blog: String)","description":"net.thauvin.erik.akismet.Akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html","searchKeys":["Akismet","constructor(apiKey: String, blog: String)","net.thauvin.erik.akismet.Akismet.Akismet"]},{"name":"constructor(builder: CommentConfig.Builder)","description":"net.thauvin.erik.akismet.CommentConfig.CommentConfig","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html","searchKeys":["CommentConfig","constructor(builder: CommentConfig.Builder)","net.thauvin.erik.akismet.CommentConfig.CommentConfig"]},{"name":"constructor(config: CommentConfig)","description":"net.thauvin.erik.akismet.AkismetComment.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html","searchKeys":["AkismetComment","constructor(config: CommentConfig)","net.thauvin.erik.akismet.AkismetComment.AkismetComment"]},{"name":"constructor(request: )","description":"net.thauvin.erik.akismet.AkismetComment.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html","searchKeys":["AkismetComment","constructor(request: )","net.thauvin.erik.akismet.AkismetComment.AkismetComment"]},{"name":"constructor(userIp: String, userAgent: String)","description":"net.thauvin.erik.akismet.AkismetComment.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html","searchKeys":["AkismetComment","constructor(userIp: String, userAgent: String)","net.thauvin.erik.akismet.AkismetComment.AkismetComment"]},{"name":"constructor(userIp: String, userAgent: String)","description":"net.thauvin.erik.akismet.CommentConfig.Builder.Builder","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/-builder.html","searchKeys":["Builder","constructor(userIp: String, userAgent: String)","net.thauvin.erik.akismet.CommentConfig.Builder.Builder"]},{"name":"constructor(userIp: String, userAgent: String, referrer: String = \"\", permalink: String = \"\", type: String = \"\", author: String = \"\", authorEmail: String = \"\", authorUrl: String = \"\", content: String = \"\", dateGmt: String = \"\", postModifiedGmt: String = \"\", blogLang: String = \"\", blogCharset: String = \"\", userRole: String = \"\", isTest: Boolean = false, recheckReason: String = \"\", serverEnv: Map = emptyMap())","description":"net.thauvin.erik.akismet.CommentConfig.CommentConfig","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-comment-config.html","searchKeys":["CommentConfig","constructor(userIp: String, userAgent: String, referrer: String = \"\", permalink: String = \"\", type: String = \"\", author: String = \"\", authorEmail: String = \"\", authorUrl: String = \"\", content: String = \"\", dateGmt: String = \"\", postModifiedGmt: String = \"\", blogLang: String = \"\", blogCharset: String = \"\", userRole: String = \"\", isTest: Boolean = false, recheckReason: String = \"\", serverEnv: Map = emptyMap())","net.thauvin.erik.akismet.CommentConfig.CommentConfig"]},{"name":"data class Builder(var userIp: String, var userAgent: String)","description":"net.thauvin.erik.akismet.CommentConfig.Builder","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/index.html","searchKeys":["Builder","data class Builder(var userIp: String, var userAgent: String)","net.thauvin.erik.akismet.CommentConfig.Builder"]},{"name":"fun author(author: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.author","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html","searchKeys":["author","fun author(author: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.author"]},{"name":"fun authorEmail(authorEmail: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.authorEmail","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html","searchKeys":["authorEmail","fun authorEmail(authorEmail: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.authorEmail"]},{"name":"fun authorUrl(authorUrl: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.authorUrl","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html","searchKeys":["authorUrl","fun authorUrl(authorUrl: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.authorUrl"]},{"name":"fun blogCharset(blogCharset: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.blogCharset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html","searchKeys":["blogCharset","fun blogCharset(blogCharset: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.blogCharset"]},{"name":"fun blogLang(blogLang: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.blogLang","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html","searchKeys":["blogLang","fun blogLang(blogLang: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.blogLang"]},{"name":"fun build(): CommentConfig","description":"net.thauvin.erik.akismet.CommentConfig.Builder.build","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/build.html","searchKeys":["build","fun build(): CommentConfig","net.thauvin.erik.akismet.CommentConfig.Builder.build"]},{"name":"fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean","description":"net.thauvin.erik.akismet.Akismet.checkComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html","searchKeys":["checkComment","fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean","net.thauvin.erik.akismet.Akismet.checkComment"]},{"name":"fun content(content: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.content","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html","searchKeys":["content","fun content(content: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.content"]},{"name":"fun dateGmt(dateGmt: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.dateGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html","searchKeys":["dateGmt","fun dateGmt(dateGmt: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.dateGmt"]},{"name":"fun dateToGmt(date: Date): String","description":"net.thauvin.erik.akismet.Akismet.Companion.dateToGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html","searchKeys":["dateToGmt","fun dateToGmt(date: Date): String","net.thauvin.erik.akismet.Akismet.Companion.dateToGmt"]},{"name":"fun dateToGmt(date: LocalDateTime): String","description":"net.thauvin.erik.akismet.Akismet.Companion.dateToGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html","searchKeys":["dateToGmt","fun dateToGmt(date: LocalDateTime): String","net.thauvin.erik.akismet.Akismet.Companion.dateToGmt"]},{"name":"fun executeMethod(apiUrl: , formBody: , trueOnError: Boolean = false): Boolean","description":"net.thauvin.erik.akismet.Akismet.executeMethod","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html","searchKeys":["executeMethod","fun executeMethod(apiUrl: , formBody: , trueOnError: Boolean = false): Boolean","net.thauvin.erik.akismet.Akismet.executeMethod"]},{"name":"fun isTest(isTest: Boolean): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.isTest","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html","searchKeys":["isTest","fun isTest(isTest: Boolean): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.isTest"]},{"name":"fun jsonComment(json: String): AkismetComment","description":"net.thauvin.erik.akismet.Akismet.Companion.jsonComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html","searchKeys":["jsonComment","fun jsonComment(json: String): AkismetComment","net.thauvin.erik.akismet.Akismet.Companion.jsonComment"]},{"name":"fun permalink(permalink: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.permalink","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html","searchKeys":["permalink","fun permalink(permalink: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.permalink"]},{"name":"fun postModifiedGmt(postModifiedGmt: String): ","description":"net.thauvin.erik.akismet.CommentConfig.Builder.postModifiedGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html","searchKeys":["postModifiedGmt","fun postModifiedGmt(postModifiedGmt: String): ","net.thauvin.erik.akismet.CommentConfig.Builder.postModifiedGmt"]},{"name":"fun recheckReason(checkReason: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.recheckReason","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html","searchKeys":["recheckReason","fun recheckReason(checkReason: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.recheckReason"]},{"name":"fun referrer(referrer: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.referrer","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html","searchKeys":["referrer","fun referrer(referrer: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.referrer"]},{"name":"fun reset()","description":"net.thauvin.erik.akismet.Akismet.reset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/reset.html","searchKeys":["reset","fun reset()","net.thauvin.erik.akismet.Akismet.reset"]},{"name":"fun serverEnv(serverEnv: Map): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.serverEnv","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html","searchKeys":["serverEnv","fun serverEnv(serverEnv: Map): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.serverEnv"]},{"name":"fun submitHam(comment: AkismetComment): Boolean","description":"net.thauvin.erik.akismet.Akismet.submitHam","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html","searchKeys":["submitHam","fun submitHam(comment: AkismetComment): Boolean","net.thauvin.erik.akismet.Akismet.submitHam"]},{"name":"fun submitSpam(comment: AkismetComment): Boolean","description":"net.thauvin.erik.akismet.Akismet.submitSpam","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html","searchKeys":["submitSpam","fun submitSpam(comment: AkismetComment): Boolean","net.thauvin.erik.akismet.Akismet.submitSpam"]},{"name":"fun toJson(): String","description":"net.thauvin.erik.akismet.AkismetComment.toJson","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html","searchKeys":["toJson","fun toJson(): String","net.thauvin.erik.akismet.AkismetComment.toJson"]},{"name":"fun type(type: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.type","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html","searchKeys":["type","fun type(type: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.type"]},{"name":"fun userAgent(userAgent: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html","searchKeys":["userAgent","fun userAgent(userAgent: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.userAgent"]},{"name":"fun userIp(userIp: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userIp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html","searchKeys":["userIp","fun userIp(userIp: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.userIp"]},{"name":"fun userRole(userRole: String): CommentConfig.Builder","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userRole","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html","searchKeys":["userRole","fun userRole(userRole: String): CommentConfig.Builder","net.thauvin.erik.akismet.CommentConfig.Builder.userRole"]},{"name":"fun verifyKey(): Boolean","description":"net.thauvin.erik.akismet.Akismet.verifyKey","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html","searchKeys":["verifyKey","fun verifyKey(): Boolean","net.thauvin.erik.akismet.Akismet.verifyKey"]},{"name":"object Companion","description":"net.thauvin.erik.akismet.Akismet.Companion","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html","searchKeys":["Companion","object Companion","net.thauvin.erik.akismet.Akismet.Companion"]},{"name":"object Companion","description":"net.thauvin.erik.akismet.AkismetComment.Companion","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html","searchKeys":["Companion","object Companion","net.thauvin.erik.akismet.AkismetComment.Companion"]},{"name":"open class Akismet(apiKey: String)","description":"net.thauvin.erik.akismet.Akismet","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/index.html","searchKeys":["Akismet","open class Akismet(apiKey: String)","net.thauvin.erik.akismet.Akismet"]},{"name":"open class AkismetComment(val userIp: String, val userAgent: String)","description":"net.thauvin.erik.akismet.AkismetComment","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html","searchKeys":["AkismetComment","open class AkismetComment(val userIp: String, val userAgent: String)","net.thauvin.erik.akismet.AkismetComment"]},{"name":"open operator override fun equals(other: Any?): Boolean","description":"net.thauvin.erik.akismet.AkismetComment.equals","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html","searchKeys":["equals","open operator override fun equals(other: Any?): Boolean","net.thauvin.erik.akismet.AkismetComment.equals"]},{"name":"open override fun hashCode(): Int","description":"net.thauvin.erik.akismet.AkismetComment.hashCode","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html","searchKeys":["hashCode","open override fun hashCode(): Int","net.thauvin.erik.akismet.AkismetComment.hashCode"]},{"name":"open override fun toString(): String","description":"net.thauvin.erik.akismet.AkismetComment.toString","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html","searchKeys":["toString","open override fun toString(): String","net.thauvin.erik.akismet.AkismetComment.toString"]},{"name":"val logger: Logger","description":"net.thauvin.erik.akismet.Akismet.logger","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/logger.html","searchKeys":["logger","val logger: Logger","net.thauvin.erik.akismet.Akismet.logger"]},{"name":"val userAgent: String","description":"net.thauvin.erik.akismet.AkismetComment.userAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html","searchKeys":["userAgent","val userAgent: String","net.thauvin.erik.akismet.AkismetComment.userAgent"]},{"name":"val userIp: String","description":"net.thauvin.erik.akismet.AkismetComment.userIp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html","searchKeys":["userIp","val userIp: String","net.thauvin.erik.akismet.AkismetComment.userIp"]},{"name":"var appUserAgent: String","description":"net.thauvin.erik.akismet.Akismet.appUserAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html","searchKeys":["appUserAgent","var appUserAgent: String","net.thauvin.erik.akismet.Akismet.appUserAgent"]},{"name":"var author: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.author","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author.html","searchKeys":["author","var author: String","net.thauvin.erik.akismet.CommentConfig.Builder.author"]},{"name":"var author: String","description":"net.thauvin.erik.akismet.CommentConfig.author","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author.html","searchKeys":["author","var author: String","net.thauvin.erik.akismet.CommentConfig.author"]},{"name":"var author: String?","description":"net.thauvin.erik.akismet.AkismetComment.author","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html","searchKeys":["author","var author: String?","net.thauvin.erik.akismet.AkismetComment.author"]},{"name":"var authorEmail: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.authorEmail","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-email.html","searchKeys":["authorEmail","var authorEmail: String","net.thauvin.erik.akismet.CommentConfig.Builder.authorEmail"]},{"name":"var authorEmail: String","description":"net.thauvin.erik.akismet.CommentConfig.authorEmail","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-email.html","searchKeys":["authorEmail","var authorEmail: String","net.thauvin.erik.akismet.CommentConfig.authorEmail"]},{"name":"var authorEmail: String?","description":"net.thauvin.erik.akismet.AkismetComment.authorEmail","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html","searchKeys":["authorEmail","var authorEmail: String?","net.thauvin.erik.akismet.AkismetComment.authorEmail"]},{"name":"var authorUrl: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.authorUrl","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/author-url.html","searchKeys":["authorUrl","var authorUrl: String","net.thauvin.erik.akismet.CommentConfig.Builder.authorUrl"]},{"name":"var authorUrl: String","description":"net.thauvin.erik.akismet.CommentConfig.authorUrl","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/author-url.html","searchKeys":["authorUrl","var authorUrl: String","net.thauvin.erik.akismet.CommentConfig.authorUrl"]},{"name":"var authorUrl: String?","description":"net.thauvin.erik.akismet.AkismetComment.authorUrl","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html","searchKeys":["authorUrl","var authorUrl: String?","net.thauvin.erik.akismet.AkismetComment.authorUrl"]},{"name":"var blog: String","description":"net.thauvin.erik.akismet.Akismet.blog","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/blog.html","searchKeys":["blog","var blog: String","net.thauvin.erik.akismet.Akismet.blog"]},{"name":"var blogCharset: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.blogCharset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-charset.html","searchKeys":["blogCharset","var blogCharset: String","net.thauvin.erik.akismet.CommentConfig.Builder.blogCharset"]},{"name":"var blogCharset: String","description":"net.thauvin.erik.akismet.CommentConfig.blogCharset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-charset.html","searchKeys":["blogCharset","var blogCharset: String","net.thauvin.erik.akismet.CommentConfig.blogCharset"]},{"name":"var blogCharset: String?","description":"net.thauvin.erik.akismet.AkismetComment.blogCharset","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html","searchKeys":["blogCharset","var blogCharset: String?","net.thauvin.erik.akismet.AkismetComment.blogCharset"]},{"name":"var blogLang: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.blogLang","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/blog-lang.html","searchKeys":["blogLang","var blogLang: String","net.thauvin.erik.akismet.CommentConfig.Builder.blogLang"]},{"name":"var blogLang: String","description":"net.thauvin.erik.akismet.CommentConfig.blogLang","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/blog-lang.html","searchKeys":["blogLang","var blogLang: String","net.thauvin.erik.akismet.CommentConfig.blogLang"]},{"name":"var blogLang: String?","description":"net.thauvin.erik.akismet.AkismetComment.blogLang","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html","searchKeys":["blogLang","var blogLang: String?","net.thauvin.erik.akismet.AkismetComment.blogLang"]},{"name":"var content: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.content","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/content.html","searchKeys":["content","var content: String","net.thauvin.erik.akismet.CommentConfig.Builder.content"]},{"name":"var content: String","description":"net.thauvin.erik.akismet.CommentConfig.content","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/content.html","searchKeys":["content","var content: String","net.thauvin.erik.akismet.CommentConfig.content"]},{"name":"var content: String?","description":"net.thauvin.erik.akismet.AkismetComment.content","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html","searchKeys":["content","var content: String?","net.thauvin.erik.akismet.AkismetComment.content"]},{"name":"var dateGmt: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.dateGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/date-gmt.html","searchKeys":["dateGmt","var dateGmt: String","net.thauvin.erik.akismet.CommentConfig.Builder.dateGmt"]},{"name":"var dateGmt: String","description":"net.thauvin.erik.akismet.CommentConfig.dateGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/date-gmt.html","searchKeys":["dateGmt","var dateGmt: String","net.thauvin.erik.akismet.CommentConfig.dateGmt"]},{"name":"var dateGmt: String?","description":"net.thauvin.erik.akismet.AkismetComment.dateGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html","searchKeys":["dateGmt","var dateGmt: String?","net.thauvin.erik.akismet.AkismetComment.dateGmt"]},{"name":"var debugHelp: String","description":"net.thauvin.erik.akismet.Akismet.debugHelp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html","searchKeys":["debugHelp","var debugHelp: String","net.thauvin.erik.akismet.Akismet.debugHelp"]},{"name":"var errorMessage: String","description":"net.thauvin.erik.akismet.Akismet.errorMessage","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/error-message.html","searchKeys":["errorMessage","var errorMessage: String","net.thauvin.erik.akismet.Akismet.errorMessage"]},{"name":"var httpStatusCode: Int","description":"net.thauvin.erik.akismet.Akismet.httpStatusCode","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html","searchKeys":["httpStatusCode","var httpStatusCode: Int","net.thauvin.erik.akismet.Akismet.httpStatusCode"]},{"name":"var isDiscard: Boolean","description":"net.thauvin.erik.akismet.Akismet.isDiscard","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html","searchKeys":["isDiscard","var isDiscard: Boolean","net.thauvin.erik.akismet.Akismet.isDiscard"]},{"name":"var isTest: Boolean","description":"net.thauvin.erik.akismet.AkismetComment.isTest","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html","searchKeys":["isTest","var isTest: Boolean","net.thauvin.erik.akismet.AkismetComment.isTest"]},{"name":"var isTest: Boolean","description":"net.thauvin.erik.akismet.CommentConfig.Builder.isTest","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/is-test.html","searchKeys":["isTest","var isTest: Boolean","net.thauvin.erik.akismet.CommentConfig.Builder.isTest"]},{"name":"var isTest: Boolean","description":"net.thauvin.erik.akismet.CommentConfig.isTest","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/is-test.html","searchKeys":["isTest","var isTest: Boolean","net.thauvin.erik.akismet.CommentConfig.isTest"]},{"name":"var isVerifiedKey: Boolean","description":"net.thauvin.erik.akismet.Akismet.isVerifiedKey","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html","searchKeys":["isVerifiedKey","var isVerifiedKey: Boolean","net.thauvin.erik.akismet.Akismet.isVerifiedKey"]},{"name":"var permalink: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.permalink","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/permalink.html","searchKeys":["permalink","var permalink: String","net.thauvin.erik.akismet.CommentConfig.Builder.permalink"]},{"name":"var permalink: String","description":"net.thauvin.erik.akismet.CommentConfig.permalink","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/permalink.html","searchKeys":["permalink","var permalink: String","net.thauvin.erik.akismet.CommentConfig.permalink"]},{"name":"var permalink: String?","description":"net.thauvin.erik.akismet.AkismetComment.permalink","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html","searchKeys":["permalink","var permalink: String?","net.thauvin.erik.akismet.AkismetComment.permalink"]},{"name":"var postModifiedGmt: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.postModifiedGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/post-modified-gmt.html","searchKeys":["postModifiedGmt","var postModifiedGmt: String","net.thauvin.erik.akismet.CommentConfig.Builder.postModifiedGmt"]},{"name":"var postModifiedGmt: String","description":"net.thauvin.erik.akismet.CommentConfig.postModifiedGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/post-modified-gmt.html","searchKeys":["postModifiedGmt","var postModifiedGmt: String","net.thauvin.erik.akismet.CommentConfig.postModifiedGmt"]},{"name":"var postModifiedGmt: String?","description":"net.thauvin.erik.akismet.AkismetComment.postModifiedGmt","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html","searchKeys":["postModifiedGmt","var postModifiedGmt: String?","net.thauvin.erik.akismet.AkismetComment.postModifiedGmt"]},{"name":"var proTip: String","description":"net.thauvin.erik.akismet.Akismet.proTip","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html","searchKeys":["proTip","var proTip: String","net.thauvin.erik.akismet.Akismet.proTip"]},{"name":"var recheckReason: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.recheckReason","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/recheck-reason.html","searchKeys":["recheckReason","var recheckReason: String","net.thauvin.erik.akismet.CommentConfig.Builder.recheckReason"]},{"name":"var recheckReason: String","description":"net.thauvin.erik.akismet.CommentConfig.recheckReason","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/recheck-reason.html","searchKeys":["recheckReason","var recheckReason: String","net.thauvin.erik.akismet.CommentConfig.recheckReason"]},{"name":"var recheckReason: String?","description":"net.thauvin.erik.akismet.AkismetComment.recheckReason","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html","searchKeys":["recheckReason","var recheckReason: String?","net.thauvin.erik.akismet.AkismetComment.recheckReason"]},{"name":"var referrer: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.referrer","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/referrer.html","searchKeys":["referrer","var referrer: String","net.thauvin.erik.akismet.CommentConfig.Builder.referrer"]},{"name":"var referrer: String","description":"net.thauvin.erik.akismet.CommentConfig.referrer","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/referrer.html","searchKeys":["referrer","var referrer: String","net.thauvin.erik.akismet.CommentConfig.referrer"]},{"name":"var referrer: String?","description":"net.thauvin.erik.akismet.AkismetComment.referrer","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html","searchKeys":["referrer","var referrer: String?","net.thauvin.erik.akismet.AkismetComment.referrer"]},{"name":"var response: String","description":"net.thauvin.erik.akismet.Akismet.response","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet/response.html","searchKeys":["response","var response: String","net.thauvin.erik.akismet.Akismet.response"]},{"name":"var serverEnv: Map","description":"net.thauvin.erik.akismet.AkismetComment.serverEnv","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html","searchKeys":["serverEnv","var serverEnv: Map","net.thauvin.erik.akismet.AkismetComment.serverEnv"]},{"name":"var serverEnv: Map","description":"net.thauvin.erik.akismet.CommentConfig.Builder.serverEnv","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/server-env.html","searchKeys":["serverEnv","var serverEnv: Map","net.thauvin.erik.akismet.CommentConfig.Builder.serverEnv"]},{"name":"var serverEnv: Map","description":"net.thauvin.erik.akismet.CommentConfig.serverEnv","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/server-env.html","searchKeys":["serverEnv","var serverEnv: Map","net.thauvin.erik.akismet.CommentConfig.serverEnv"]},{"name":"var type: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.type","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/type.html","searchKeys":["type","var type: String","net.thauvin.erik.akismet.CommentConfig.Builder.type"]},{"name":"var type: String","description":"net.thauvin.erik.akismet.CommentConfig.type","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/type.html","searchKeys":["type","var type: String","net.thauvin.erik.akismet.CommentConfig.type"]},{"name":"var type: String?","description":"net.thauvin.erik.akismet.AkismetComment.type","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html","searchKeys":["type","var type: String?","net.thauvin.erik.akismet.AkismetComment.type"]},{"name":"var userAgent: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-agent.html","searchKeys":["userAgent","var userAgent: String","net.thauvin.erik.akismet.CommentConfig.Builder.userAgent"]},{"name":"var userAgent: String","description":"net.thauvin.erik.akismet.CommentConfig.userAgent","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-agent.html","searchKeys":["userAgent","var userAgent: String","net.thauvin.erik.akismet.CommentConfig.userAgent"]},{"name":"var userIp: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userIp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-ip.html","searchKeys":["userIp","var userIp: String","net.thauvin.erik.akismet.CommentConfig.Builder.userIp"]},{"name":"var userIp: String","description":"net.thauvin.erik.akismet.CommentConfig.userIp","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-ip.html","searchKeys":["userIp","var userIp: String","net.thauvin.erik.akismet.CommentConfig.userIp"]},{"name":"var userRole: String","description":"net.thauvin.erik.akismet.CommentConfig.Builder.userRole","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/-builder/user-role.html","searchKeys":["userRole","var userRole: String","net.thauvin.erik.akismet.CommentConfig.Builder.userRole"]},{"name":"var userRole: String","description":"net.thauvin.erik.akismet.CommentConfig.userRole","location":"-akismet -kotlin/net.thauvin.erik.akismet/-comment-config/user-role.html","searchKeys":["userRole","var userRole: String","net.thauvin.erik.akismet.CommentConfig.userRole"]},{"name":"var userRole: String?","description":"net.thauvin.erik.akismet.AkismetComment.userRole","location":"-akismet -kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html","searchKeys":["userRole","var userRole: String?","net.thauvin.erik.akismet.AkismetComment.userRole"]}]
diff --git a/docs/scripts/platform-content-handler.js b/docs/scripts/platform-content-handler.js
index 8c4ca53..811c478 100644
--- a/docs/scripts/platform-content-handler.js
+++ b/docs/scripts/platform-content-handler.js
@@ -18,8 +18,6 @@ const samplesLightThemeName = 'idea'
window.addEventListener('load', () => {
document.querySelectorAll("div[data-platform-hinted]")
.forEach(elem => elem.addEventListener('click', (event) => togglePlatformDependent(event, elem)))
- document.querySelectorAll("div[tabs-section]")
- .forEach(elem => elem.addEventListener('click', (event) => toggleSectionsEventHandler(event)))
const filterSection = document.getElementById('filter-section')
if (filterSection) {
filterSection.addEventListener('click', (event) => filterButtonHandler(event))
@@ -177,19 +175,30 @@ function handleAnchor() {
}
function initTabs() {
- document.querySelectorAll("div[tabs-section]")
- .forEach(element => {
- showCorrespondingTabBody(element)
- element.addEventListener('click', (event) => toggleSectionsEventHandler(event))
- })
- let cached = localStorage.getItem("active-tab")
- if (cached) {
- let parsed = JSON.parse(cached)
- let tab = document.querySelector('div[tabs-section] > button[data-togglable="' + parsed + '"]')
- if (tab) {
- toggleSections(tab)
- }
- }
+ // we could have only a single type of data - classlike or package
+ const mainContent = document.querySelector('.main-content');
+ const type = mainContent ? mainContent.getAttribute("data-page-type") : null;
+ const localStorageKey = "active-tab-" + type;
+ document.querySelectorAll('div[tabs-section]').forEach(element => {
+ showCorrespondingTabBody(element);
+ element.addEventListener('click', ({target}) => {
+ const togglable = target ? target.getAttribute("data-togglable") : null;
+ if (!togglable) return;
+
+ localStorage.setItem(localStorageKey, JSON.stringify(togglable));
+ toggleSections(target);
+ });
+ });
+
+ const cached = localStorage.getItem(localStorageKey);
+ if (!cached) return;
+
+ const tab = document.querySelector(
+ 'div[tabs-section] > button[data-togglable="' + JSON.parse(cached) + '"]'
+ );
+ if (!tab) return;
+
+ toggleSections(tab);
}
function showCorrespondingTabBody(element) {
@@ -293,12 +302,6 @@ function toggleSections(target) {
activateTabsBody("tabs-section-body")
}
-function toggleSectionsEventHandler(evt) {
- if (!evt.target.getAttribute("data-togglable")) return
- localStorage.setItem('active-tab', JSON.stringify(evt.target.getAttribute("data-togglable")))
- toggleSections(evt.target)
-}
-
function togglePlatformDependent(e, container) {
let target = e.target
if (target.tagName != 'BUTTON') return;
diff --git a/docs/styles/main.css b/docs/styles/main.css
index ebe1ce1..5f7781e 100644
--- a/docs/styles/main.css
+++ b/docs/styles/main.css
@@ -1,6 +1,6 @@
/*!
* Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */#pages-search{cursor:pointer;border:none;border-radius:50%;background:transparent;fill:#fff;fill:var(--dark-mode-and-search-icon-color)}#pages-search:focus{outline:none}#pages-search:hover{background:var(--white-10)}.search,.search [data-test=ring-select],.search [data-test=ring-tooltip],.search [data-test=ring-select_focus],.search #pages-search{display:inline-block;padding:0;margin:0;font-size:0;line-height:0}.search-hotkey-popup{background-color:var(--background-color) !important;padding:4px}.popup-wrapper{min-width:calc(100% - 322px) !important;border:1px solid rgba(255,255,255,.2) !important;background-color:#27282c !important}.popup-wrapper [class^=filterWrapper]{border-bottom:1px solid rgba(255,255,255,.2)}.popup-wrapper input{color:rgba(255,255,255,.8) !important;font-weight:normal !important}.popup-wrapper span[data-test-custom=ring-select-popup-filter-icon]{color:#fff}.popup-wrapper button[data-test=ring-input-clear]{color:#fff !important}@media screen and (max-width: 759px){.popup-wrapper{min-width:100% !important}}.template-wrapper{display:grid;height:32px;grid-template-columns:auto auto}.template-wrapper strong{color:rgba(255,255,255,.8)}.template-wrapper span{color:rgba(255,255,255,.8);line-height:32px}.template-wrapper span.template-description{color:rgba(255,255,255,.6);justify-self:end}@media screen and (max-width: 759px){.template-wrapper{display:flex;flex-direction:column;height:auto}.template-wrapper span{line-height:unset}}.template-name{justify-self:start}[class^=fade]{display:none}[class*=hover]{background-color:rgba(255,255,255,.1) !important}
+ */#pages-search{cursor:pointer;border:none;border-radius:50%;background:transparent;fill:#fff;fill:var(--dark-mode-and-search-icon-color)}#pages-search:hover{background:var(--white-10)}.search,.search [data-test=ring-select],.search [data-test=ring-tooltip],.search [data-test=ring-select_focus],.search #pages-search{display:inline-block;padding:0;margin:0;font-size:0;line-height:0}.search-hotkey-popup{background-color:var(--background-color) !important;padding:4px}.popup-wrapper{min-width:calc(100% - 322px) !important;border:1px solid rgba(255,255,255,.2) !important;background-color:#27282c !important;color:rgba(255,255,255,.8)}.popup-wrapper [class^=filterWrapper]{border-bottom:1px solid rgba(255,255,255,.2)}.popup-wrapper input{color:rgba(255,255,255,.8) !important;font-weight:normal !important}.popup-wrapper span[data-test-custom=ring-select-popup-filter-icon]{color:#fff}.popup-wrapper button[data-test=ring-input-clear]{color:#fff !important}@media screen and (max-width: 759px){.popup-wrapper{min-width:100% !important}}.template-wrapper{display:grid;height:32px;grid-template-columns:auto auto}.template-wrapper strong{color:rgba(255,255,255,.8)}.template-wrapper span{color:rgba(255,255,255,.8);line-height:32px}.template-wrapper span.template-description{color:rgba(255,255,255,.6);justify-self:end}@media screen and (max-width: 759px){.template-wrapper{display:flex;flex-direction:column;height:auto}.template-wrapper span{line-height:unset}}.template-name{justify-self:start}[class^=fade]{display:none}[class*=hover]{background-color:rgba(255,255,255,.1) !important}
/* stylelint-disable color-no-hex */
:root {
diff --git a/docs/styles/style.css b/docs/styles/style.css
index 67a899a..fc2b84d 100644
--- a/docs/styles/style.css
+++ b/docs/styles/style.css
@@ -342,6 +342,7 @@ td:first-child {
/* --- Navigation controls --- */
.navigation-controls {
display: flex;
+ margin-left: 4px;
}
@media (min-width: 760px) {
@@ -354,37 +355,31 @@ td:first-child {
display: none;
}
-/* --- Navigation THEME --- */
-.navigation-controls--search {
+.navigation-controls--btn {
display: inline-flex;
- font-size: 0;
- line-height: 0;
-}
-
-.navigation-controls--theme {
- display: block;
+ align-items: center;
+ justify-content: center;
+ width: 40px;
+ height: 40px;
border-radius: 50%;
background-color: inherit;
- margin-left: 4px;
+ background-position: 50% 50%;
padding: 0;
border: none;
cursor: pointer;
font-size: 0;
line-height: 0;
+ transition: background-color 200ms ease-in-out;
+ will-change: background-color;
}
-.navigation-controls--theme::before {
- height: 40px;
- width: 40px;
+.navigation-controls--btn:hover {
+ background-color: var(--white-10);
}
-.navigation-controls--theme:hover {
- background: var(--white-10);
-}
-
-.navigation-controls--theme::before {
- display: block;
- content: url("../images/theme-toggle.svg");
+.navigation-controls--theme {
+ background-image: url("../images/theme-toggle.svg");
+ background-repeat: no-repeat;
}
@media (max-width: 759px) {
@@ -392,7 +387,18 @@ td:first-child {
display: none;
}
}
-/* /--- Navigation THEME --- */
+
+.navigation-controls--homepage {
+ background-image: url("../images/homepage.svg");
+ background-repeat: no-repeat;
+ background-size: 24px 24px;
+}
+
+@media (max-width: 759px) {
+ .navigation-controls--homepage {
+ display: none;
+ }
+}
.navigation .platform-selector:not([data-active]) {
color: #fff;
@@ -656,6 +662,26 @@ code.paragraph {
text-decoration: line-through;
}
+/* Workaround for Firefox https://github.com/Kotlin/dokka/issues/3156 */
+@-moz-document url-prefix() {
+ .strikethrough {
+ position: relative;
+ text-decoration: none;
+ }
+
+ /* complex selectors here are required to handle multiline cases */
+ .strikethrough::after, .strikethrough span:after {
+ content: '';
+ position: absolute;
+ top: 7px;
+ left: 0;
+ right: 0;
+ height: 1px;
+ background-color: currentColor;
+ z-index: 1;
+ }
+}
+
.symbol:empty {
padding: 0;
}
@@ -684,7 +710,7 @@ code {
code:not(.block) {
display: inline-block;
- vertical-align: middle;
+ vertical-align: bottom;
}
.symbol > a {
diff --git a/examples/bld/README.md b/examples/bld/README.md
index 52ef7f3..9786305 100644
--- a/examples/bld/README.md
+++ b/examples/bld/README.md
@@ -8,7 +8,6 @@ To compile & run the Kotlin example:
```
## Java Example
-cd
To compile & run the Java example:
```console
diff --git a/examples/bld/src/main/java/com/example/AkismetSample.java b/examples/bld/src/main/java/com/example/AkismetSample.java
index f70698f..6d6ced5 100644
--- a/examples/bld/src/main/java/com/example/AkismetSample.java
+++ b/examples/bld/src/main/java/com/example/AkismetSample.java
@@ -2,6 +2,7 @@ package com.example;
import net.thauvin.erik.akismet.Akismet;
import net.thauvin.erik.akismet.AkismetComment;
+import net.thauvin.erik.akismet.CommentConfig;
import java.util.Date;
@@ -9,25 +10,26 @@ public class AkismetSample {
public static void main(String... args) {
if (args.length == 1 && !args[0].isBlank()) {
final Akismet akismet = new Akismet(args[0], "https://yourblogdomainname.com/blog/");
- final AkismetComment comment = new AkismetComment("127.0.0.1", "curl/7.29.0");
+ final AkismetComment comment = new AkismetComment(
+ new CommentConfig.Builder("127.0.0.1", "curl/7.29.0")
+ .isTest(true)
+ .referrer("https://www.google.com")
+ .permalink(akismet.getBlog() + "post=1")
+ .type(AkismetComment.TYPE_COMMENT)
+ .author("admin")
+ .authorEmail("test@test.com")
+ .authorUrl("http://www.CheckOutMyCoolSite.com")
+ .dateGmt(Akismet.dateToGmt(new Date()))
+// .userRole(AkismetComment.ADMIN_ROLE)
+ .content("It means a lot that you would take the time to review our software. Thanks again.")
+ .build()
+ );
- comment.setTest(true);
-
- comment.setReferrer("https://www.google.com");
- comment.setPermalink(akismet.getBlog() + "post=1");
- comment.setType(AkismetComment.TYPE_COMMENT);
- 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.");
-
- // final ConsoleHandler consoleHandler = new ConsoleHandler();
- // consoleHandler.setLevel(Level.FINE);
- // final Logger logger = akismet.getLogger();
- // logger.addHandler(consoleHandler);
- // logger.setLevel(Level.FINE);
+// final ConsoleHandler consoleHandler = new ConsoleHandler();
+// consoleHandler.setLevel(Level.FINE);
+// final Logger logger = akismet.getLogger();
+// logger.addHandler(consoleHandler);
+// logger.setLevel(Level.FINE);
if (akismet.verifyKey()) {
final boolean isSpam = akismet.checkComment(comment);
diff --git a/examples/bld/src/main/kotlin/com/example/AkismetExample.kt b/examples/bld/src/main/kotlin/com/example/AkismetExample.kt
index 149555f..013e633 100644
--- a/examples/bld/src/main/kotlin/com/example/AkismetExample.kt
+++ b/examples/bld/src/main/kotlin/com/example/AkismetExample.kt
@@ -2,18 +2,14 @@ package com.example
import net.thauvin.erik.akismet.Akismet
import net.thauvin.erik.akismet.AkismetComment
-import java.util.Date
+import java.util.*
import kotlin.system.exitProcess
fun main(args: Array) {
-
if (args.size == 1 && args[0].isNotEmpty()) {
val akismet = Akismet(apiKey = args[0], blog = "https://yourblogdomainname.com/blog/")
- val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0")
-
- with(comment) {
+ val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0").apply {
isTest = true
-
referrer = "https://www.google.com"
permalink = "${akismet.blog}post=1"
type = AkismetComment.TYPE_COMMENT
@@ -21,7 +17,7 @@ fun main(args: Array) {
authorEmail = "test@test.com"
authorUrl = "https://www.CheckOutMyCoolSite.com"
dateGmt = Akismet.dateToGmt(Date())
-// userRole = AkismetComment.ADMIN_ROLE
+// userRole = AkismetComment.ADMIN_ROLE
content = "It means a lot that you would take the time to review our software. Thanks again."
}
diff --git a/examples/bld/src/main/kotlin/com/example/AkismetServlet.kt b/examples/bld/src/main/kotlin/com/example/AkismetServlet.kt
index 4b245c8..3e776ed 100644
--- a/examples/bld/src/main/kotlin/com/example/AkismetServlet.kt
+++ b/examples/bld/src/main/kotlin/com/example/AkismetServlet.kt
@@ -20,8 +20,7 @@ class AkismetServlet : HttpServlet() {
akismet.appUserAgent = request.servletContext.serverInfo
- val comment = AkismetComment(request)
- with(comment) {
+ val comment = AkismetComment(request).apply {
permalink = "${akismet.blog}/comment/$id"
type = AkismetComment.TYPE_COMMENT
author = request.getParameter("name")
diff --git a/examples/gradle/.idea/.name b/examples/gradle/.idea/.name
index bdb1d33..ac5e64e 100644
--- a/examples/gradle/.idea/.name
+++ b/examples/gradle/.idea/.name
@@ -1 +1 @@
-akismet-examples
\ No newline at end of file
+akismet-examples-gradle
\ No newline at end of file
diff --git a/examples/gradle/.idea/kotlinc.xml b/examples/gradle/.idea/kotlinc.xml
index e805548..6d0ee1c 100644
--- a/examples/gradle/.idea/kotlinc.xml
+++ b/examples/gradle/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/examples/gradle/.idea/misc.xml b/examples/gradle/.idea/misc.xml
index 7940811..72d1c06 100644
--- a/examples/gradle/.idea/misc.xml
+++ b/examples/gradle/.idea/misc.xml
@@ -6,11 +6,8 @@
-
-
-
-
+
-
\ No newline at end of file
+
diff --git a/examples/gradle/build.gradle.kts b/examples/gradle/build.gradle.kts
index b9c5436..db1e416 100644
--- a/examples/gradle/build.gradle.kts
+++ b/examples/gradle/build.gradle.kts
@@ -1,5 +1,3 @@
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
plugins {
id("application")
id("com.github.ben-manes.versions") version "0.51.0"
@@ -15,7 +13,7 @@ repositories {
dependencies {
implementation("jakarta.servlet:jakarta.servlet-api:6.0.0")
- implementation("net.thauvin.erik:akismet-kotlin:1.0.0")
+ implementation("net.thauvin.erik:akismet-kotlin:1.0.1-SNAPSHOT")
}
java {
@@ -27,11 +25,11 @@ application {
mainClass.set("com.example.AkismetExampleKt")
}
-tasks {
- withType().configureEach {
- kotlinOptions.jvmTarget = java.targetCompatibility.toString()
- }
+kotlin {
+ compilerOptions.jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11)
+}
+tasks {
register("runJava", JavaExec::class) {
group = "application"
mainClass.set("com.example.AkismetSample")
diff --git a/examples/gradle/src/main/java/com/example/AkismetSample.java b/examples/gradle/src/main/java/com/example/AkismetSample.java
index f70698f..6d6ced5 100644
--- a/examples/gradle/src/main/java/com/example/AkismetSample.java
+++ b/examples/gradle/src/main/java/com/example/AkismetSample.java
@@ -2,6 +2,7 @@ package com.example;
import net.thauvin.erik.akismet.Akismet;
import net.thauvin.erik.akismet.AkismetComment;
+import net.thauvin.erik.akismet.CommentConfig;
import java.util.Date;
@@ -9,25 +10,26 @@ public class AkismetSample {
public static void main(String... args) {
if (args.length == 1 && !args[0].isBlank()) {
final Akismet akismet = new Akismet(args[0], "https://yourblogdomainname.com/blog/");
- final AkismetComment comment = new AkismetComment("127.0.0.1", "curl/7.29.0");
+ final AkismetComment comment = new AkismetComment(
+ new CommentConfig.Builder("127.0.0.1", "curl/7.29.0")
+ .isTest(true)
+ .referrer("https://www.google.com")
+ .permalink(akismet.getBlog() + "post=1")
+ .type(AkismetComment.TYPE_COMMENT)
+ .author("admin")
+ .authorEmail("test@test.com")
+ .authorUrl("http://www.CheckOutMyCoolSite.com")
+ .dateGmt(Akismet.dateToGmt(new Date()))
+// .userRole(AkismetComment.ADMIN_ROLE)
+ .content("It means a lot that you would take the time to review our software. Thanks again.")
+ .build()
+ );
- comment.setTest(true);
-
- comment.setReferrer("https://www.google.com");
- comment.setPermalink(akismet.getBlog() + "post=1");
- comment.setType(AkismetComment.TYPE_COMMENT);
- 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.");
-
- // final ConsoleHandler consoleHandler = new ConsoleHandler();
- // consoleHandler.setLevel(Level.FINE);
- // final Logger logger = akismet.getLogger();
- // logger.addHandler(consoleHandler);
- // logger.setLevel(Level.FINE);
+// final ConsoleHandler consoleHandler = new ConsoleHandler();
+// consoleHandler.setLevel(Level.FINE);
+// final Logger logger = akismet.getLogger();
+// logger.addHandler(consoleHandler);
+// logger.setLevel(Level.FINE);
if (akismet.verifyKey()) {
final boolean isSpam = akismet.checkComment(comment);
diff --git a/examples/gradle/src/main/kotlin/com/example/AkismetExample.kt b/examples/gradle/src/main/kotlin/com/example/AkismetExample.kt
index 149555f..013e633 100644
--- a/examples/gradle/src/main/kotlin/com/example/AkismetExample.kt
+++ b/examples/gradle/src/main/kotlin/com/example/AkismetExample.kt
@@ -2,18 +2,14 @@ package com.example
import net.thauvin.erik.akismet.Akismet
import net.thauvin.erik.akismet.AkismetComment
-import java.util.Date
+import java.util.*
import kotlin.system.exitProcess
fun main(args: Array) {
-
if (args.size == 1 && args[0].isNotEmpty()) {
val akismet = Akismet(apiKey = args[0], blog = "https://yourblogdomainname.com/blog/")
- val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0")
-
- with(comment) {
+ val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0").apply {
isTest = true
-
referrer = "https://www.google.com"
permalink = "${akismet.blog}post=1"
type = AkismetComment.TYPE_COMMENT
@@ -21,7 +17,7 @@ fun main(args: Array) {
authorEmail = "test@test.com"
authorUrl = "https://www.CheckOutMyCoolSite.com"
dateGmt = Akismet.dateToGmt(Date())
-// userRole = AkismetComment.ADMIN_ROLE
+// userRole = AkismetComment.ADMIN_ROLE
content = "It means a lot that you would take the time to review our software. Thanks again."
}
diff --git a/examples/gradle/src/main/kotlin/com/example/AkismetServlet.kt b/examples/gradle/src/main/kotlin/com/example/AkismetServlet.kt
index 4b245c8..3e776ed 100644
--- a/examples/gradle/src/main/kotlin/com/example/AkismetServlet.kt
+++ b/examples/gradle/src/main/kotlin/com/example/AkismetServlet.kt
@@ -20,8 +20,7 @@ class AkismetServlet : HttpServlet() {
akismet.appUserAgent = request.servletContext.serverInfo
- val comment = AkismetComment(request)
- with(comment) {
+ val comment = AkismetComment(request).apply {
permalink = "${akismet.blog}/comment/$id"
type = AkismetComment.TYPE_COMMENT
author = request.getParameter("name")
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 1267563..d83a407 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -1,9 +1,9 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
-bld.extensions-detekt=com.uwyn.rife2:bld-detekt:0.9.2
bld.extensions=com.uwyn.rife2:bld-generated-version:0.9.5
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
-bld.extensions-kotlin=com.uwyn.rife2:bld-kotlin:0.9.7
+bld.extensions-kotlin=com.uwyn.rife2:bld-kotlin:0.9.5
+bld.extensions-detekt=com.uwyn.rife2:bld-detekt:0.9.4
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.downloadLocation=
bld.sourceDirectories=
diff --git a/src/bld/java/net/thauvin/erik/AkismetBuild.java b/src/bld/java/net/thauvin/erik/AkismetBuild.java
index 2f7d983..b2db28b 100644
--- a/src/bld/java/net/thauvin/erik/AkismetBuild.java
+++ b/src/bld/java/net/thauvin/erik/AkismetBuild.java
@@ -67,7 +67,7 @@ public class AkismetBuild extends Project {
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL);
var okHttp = version(4, 12, 0);
- final var kotlin = version(2, 0, 0);
+ final var kotlin = version(1, 9, 24);
scope(compile)
.include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin))
.include(dependency("com.squareup.okhttp3", "okhttp", okHttp))
diff --git a/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt b/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt
index dbfcc1c..dc9c163 100644
--- a/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt
+++ b/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt
@@ -243,6 +243,24 @@ open class AkismetComment(val userIp: String, val userAgent: String) {
serverEnv = buildServerEnv(request)
}
+ constructor(config: CommentConfig) : this(config.userIp, config.userAgent) {
+ referrer = config.referrer
+ permalink = config.permalink
+ type = config.type
+ author = config.author
+ authorEmail = config.authorEmail
+ authorUrl = config.authorUrl
+ content = config.content
+ dateGmt = config.dateGmt
+ postModifiedGmt = config.postModifiedGmt
+ blogLang = config.blogLang
+ blogCharset = config.blogCharset
+ userRole = config.userRole
+ isTest = config.isTest
+ recheckReason = config.recheckReason
+ serverEnv = config.serverEnv
+ }
+
/**
* Returns a JSON representation of the comment.
*
diff --git a/src/main/kotlin/net/thauvin/erik/akismet/CommentConfig.kt b/src/main/kotlin/net/thauvin/erik/akismet/CommentConfig.kt
new file mode 100644
index 0000000..01b0659
--- /dev/null
+++ b/src/main/kotlin/net/thauvin/erik/akismet/CommentConfig.kt
@@ -0,0 +1,237 @@
+/*
+ * CommentConfig.kt
+ *
+ * Copyright 2019-2024 Erik C. Thauvin (erik@thauvin.net)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of this project nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package net.thauvin.erik.akismet
+
+import net.thauvin.erik.akismet.AkismetComment.Companion.ADMIN_ROLE
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_BLOG_POST
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_COMMENT
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_CONTACT_FORM
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_FORUM_POST
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_MESSAGE
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_PINGBACK
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_REPLY
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_SIGNUP
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TRACKBACK
+import net.thauvin.erik.akismet.AkismetComment.Companion.TYPE_TWEET
+
+/**
+ * Provides a comment configuration.
+ *
+ * @param userIp IP address of the comment submitter.
+ * @param userAgent User agent string of the web browser submitting the comment.
+ */
+class CommentConfig @JvmOverloads constructor(
+ var userIp: String,
+ var userAgent: String,
+ var referrer: String = "",
+ var permalink: String = "",
+ var type: String = "",
+ var author: String = "",
+ var authorEmail: String = "",
+ var authorUrl: String = "",
+ var content: String = "",
+ var dateGmt: String = "",
+ var postModifiedGmt: String = "",
+ var blogLang: String = "",
+ var blogCharset: String = "",
+ var userRole: String = "",
+ var isTest: Boolean = false,
+ var recheckReason: String = "",
+ var serverEnv: Map = emptyMap()
+
+) {
+ constructor(builder: Builder) : this(builder.userIp, builder.userAgent) {
+ referrer = builder.referrer
+ permalink = builder.permalink
+ type = builder.type
+ author = builder.author
+ authorEmail = builder.authorEmail
+ authorUrl = builder.authorUrl
+ content = builder.content
+ dateGmt = builder.dateGmt
+ postModifiedGmt = builder.postModifiedGmt
+ blogLang = builder.blogLang
+ blogCharset = builder.blogCharset
+ userRole = builder.userRole
+ isTest = builder.isTest
+ recheckReason = builder.recheckReason
+ serverEnv = builder.serverEnv
+ }
+
+ /**
+ * Provides a configuration builder.
+ *
+ * @param userIp IP address of the comment submitter.
+ * @param userAgent User agent string of the web browser submitting the comment.
+ */
+ data class Builder(var userIp: String, var userAgent: String) {
+ var referrer = ""
+ var permalink = ""
+ var type = ""
+ var author = ""
+ var authorEmail = ""
+ var authorUrl = ""
+ var content = ""
+ var dateGmt = ""
+ var postModifiedGmt = ""
+ var blogLang = ""
+ var blogCharset = ""
+ var userRole = ""
+ var isTest = false
+ var recheckReason = ""
+ var serverEnv: Map = emptyMap()
+
+ /**
+ * Sets the IP address of the comment submitter.
+ */
+ fun userIp(userIp: String) : Builder = apply { this.userIp = userIp }
+
+ /**
+ * Sets the user agent string of the web browser submitting the comment.
+ */
+ fun userAgent(userAgent: String) : Builder = apply { this.userAgent = userAgent }
+
+ /**
+ * Sets the content of the referrer header.
+ */
+ fun referrer(referrer: String): Builder = apply { this.referrer = referrer }
+
+ /**
+ * Sets the full permanent URL of the entry the comment was submitted to.
+ */
+ fun permalink(permalink: String): Builder = apply { this.permalink = permalink }
+
+ /**
+ * Sets a string that describes the type of content being sent, such as:
+ *
+ * - [TYPE_COMMENT]
+ * - [TYPE_FORUM_POST]
+ * - [TYPE_REPLY]
+ * - [TYPE_BLOG_POST]
+ * - [TYPE_CONTACT_FORM]
+ * - [TYPE_SIGNUP]
+ * - [TYPE_MESSAGE]
+ * - [TYPE_PINGBACK]
+ * - [TYPE_TRACKBACK]
+ * - [TYPE_TWEET]
+ *
+ * You may send a value not listed above if none of them accurately describe your content.
+ *
+ * This is further explained [here](http://blog.akismet.com/2012/06/19/pro-tip-tell-us-your-comment_type/).
+ */
+ fun type(type: String): Builder = apply { this.type = type }
+
+ /**
+ * Sets the mame submitted with the comment.
+ */
+ fun author(author: String): Builder = apply { this.author = author }
+
+ /**
+ * Sets the email address submitted with the comment.
+ */
+ fun authorEmail(authorEmail: String): Builder = apply { this.authorEmail = authorEmail }
+
+ /**
+ * Sets the URL submitted with comment.
+ */
+ fun authorUrl(authorUrl: String): Builder = apply { this.authorUrl = authorUrl }
+
+ /**
+ * Sets the content that was submitted.
+ */
+ fun content(content: String): Builder = apply { this.content = content }
+
+ /**
+ * Sets the UTC timestamp of the creation of the comment, in ISO 8601 format.
+ *
+ * May be omitted if the comment is sent to the API at the time it is created.
+ *
+ * @see [Akismet.dateToGmt]
+ */
+ fun dateGmt(dateGmt: String): Builder = apply { this.dateGmt = dateGmt }
+
+ /**
+ * Sets the UTC timestamp of the publication time for the post, page or thread on which the comment was posted.
+ *
+ * @see [Akismet.dateToGmt]
+ */
+ fun postModifiedGmt(postModifiedGmt: String) = apply { this.postModifiedGmt = postModifiedGmt }
+
+ /**
+ * Indicates the language(s) in use on the blog or site, in ISO 639-1 format, comma-separated.
+ *
+ * A site with articles in English and French might use: `en, fr_ca`
+ */
+ fun blogLang(blogLang: String): Builder = apply { this.blogLang = blogLang }
+
+ /**
+ * Sets the character encoding for the form values included in comment parameters, such as UTF-8 or ISO-8859-1
+ */
+ fun blogCharset(blogCharset: String): Builder = apply { this.blogCharset = blogCharset }
+
+ /**
+ * Set the user role of the user who submitted the comment. This is an optional parameter.
+ *
+ * If you set it to [ADMIN_ROLE], Akismet will always return false.
+ */
+ fun userRole(userRole: String): Builder = apply { this.userRole = userRole }
+
+ /**
+ * This is optional. You can set it when submitting test queries to Akismet.
+ */
+ fun isTest(isTest: Boolean): Builder = apply { this.isTest = isTest }
+
+ /**
+ * If you are sending content to Akismet to be rechecked, such as a post that has been edited or old pending
+ * comments that you'd like to recheck, include this parameter with a string describing why the content is
+ * being rechecked.
+ *
+ * For example: `edit`
+ */
+ fun recheckReason(checkReason: String): Builder = apply { this.recheckReason = checkReason }
+
+ /**
+ * In PHP, there is an array of environmental variables called `$_SERVER` that contains information about the
+ * Web server itself as well as a key/value for every HTTP header sent with the request. This data is highly
+ * useful to Akismet.
+ *
+ * How the submitted content interacts with the server can be very telling, so please include as much of it as
+ * possible.
+ */
+ fun serverEnv(serverEnv: Map): Builder = apply { this.serverEnv = serverEnv }
+
+ /**
+ * Builds a new comment configuration.
+ */
+ fun build(): CommentConfig = CommentConfig(this)
+ }
+}
diff --git a/src/main/kotlin/net/thauvin/erik/akismet/GeneratedVersion.kt b/src/main/kotlin/net/thauvin/erik/akismet/GeneratedVersion.kt
index bc2ee49..8f63ec2 100644
--- a/src/main/kotlin/net/thauvin/erik/akismet/GeneratedVersion.kt
+++ b/src/main/kotlin/net/thauvin/erik/akismet/GeneratedVersion.kt
@@ -1,34 +1,3 @@
-/*
- * GeneratedVersion.kt
- *
- * Copyright 2019-2024 Erik C. Thauvin (erik@thauvin.net)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of this project nor the names of its contributors may be
- * used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
/*
* This file is automatically generated.
* Do not modify! -- ALL CHANGES WILL BE ERASED!
diff --git a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt
index 31f3376..3074992 100644
--- a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt
+++ b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt
@@ -118,6 +118,11 @@ class AkismetTest {
assertThat(akismet::blog).isEqualTo(blog)
}
+ @Test
+ fun validateConfigTest() {
+ assertThat(AkismetComment(config) == comment).isTrue()
+ }
+
@Test
fun verifyKeyTest() {
assertThat(akismet, "akismet").all {
@@ -367,6 +372,7 @@ class AkismetTest {
}
companion object {
+ private const val REFERER = "http://www.google.com"
private val apiKey = getKey("AKISMET_API_KEY")
private val blog = getKey("AKISMET_BLOG")
private val akismet = Akismet(apiKey, blog)
@@ -375,24 +381,40 @@ class AkismetTest {
userAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6"
)
private val date = Date()
+ private val config = CommentConfig.Builder(comment.userIp, comment.userAgent)
+ .referrer(REFERER)
+ .permalink("http://yourblogdomainname.com/blog/post=1")
+ .type(AkismetComment.TYPE_COMMENT)
+ .author("admin")
+ .authorEmail("test@test.com")
+ .authorUrl("http://www.CheckOutMyCoolSite.com")
+ .content("It means a lot that you would take the time to review our software. Thanks again.")
+ .dateGmt(Akismet.dateToGmt(date))
+ .postModifiedGmt(Akismet.dateToGmt(date))
+ .blogLang("en")
+ .blogCharset("UTF-8")
+ .userRole(AkismetComment.ADMIN_ROLE)
+ .recheckReason("edit")
+ .isTest(true)
+ .build()
private val mockComment: AkismetComment = AkismetComment(request = getMockRequest())
- private const val REFERER = "http://www.google.com"
init {
with(comment) {
- referrer = REFERER
- permalink = "http://yourblogdomainname.com/blog/post=1"
- type = AkismetComment.TYPE_COMMENT
- author = "admin"
- authorEmail = "test@test.com"
- authorUrl = "http://www.CheckOutMyCoolSite.com"
- content = "It means a lot that you would take the time to review our software. Thanks again."
- dateGmt = Akismet.dateToGmt(date)
- postModifiedGmt = dateGmt
- blogLang = "en"
- blogCharset = "UTF-8"
- userRole = AkismetComment.ADMIN_ROLE
- isTest = true
+ referrer = config.referrer
+ permalink = config.permalink
+ type = config.type
+ author = config.author
+ authorEmail = config.authorEmail
+ authorUrl = config.authorUrl
+ content = config.content
+ dateGmt = config.dateGmt
+ postModifiedGmt = config.postModifiedGmt
+ blogLang = config.blogLang
+ blogCharset = config.blogCharset
+ userRole = config.userRole
+ recheckReason = config.recheckReason
+ isTest = config.isTest
}
with(mockComment) {
@@ -407,7 +429,7 @@ class AkismetTest {
blogLang = comment.blogLang
blogCharset = comment.blogCharset
userRole = comment.userRole
- recheckReason = "edit"
+ recheckReason = comment.recheckReason
isTest = true
}
}