Akismet for Kotlin, Java and Android
A pretty complete and straightforward implementation of the Automattic's Akismet API, a free service which can be used to actively stop comments spam.
val akismet = Akismet(apiKey = "YOUR_API_KEY", blog = "YOUR_BLOG_URL")
val comment = AkismetComment(userIp = "127.0.0.1", userAgent = "curl/7.29.0").apply {
referrer = "https://www.google.com"
type = CommentType.COMMENT
author = "admin"
authorEmail = "[email protected]"
authorUrl = "https://www.CheckOutMyCoolSite.com"
dateGmt = Akismet.dateToGmt(Date())
content = "Thanks for reviewing our software."
}
// ...
val isSpam = akismet.checkComment(comment)
if (isSpam) {
// ...
}
final Akismet akismet = new Akismet("YOUR_API_KEY", "YOUR_BLOG_URL");
final AkismetComment comment = new AkismetComment(
new CommentConfig.Builder("127.0.0.1", "curl/7.29.0")
.referrer("https://www.google.com")
.type(CommentType.COMMENT)
.author("admin")
.authorEmail("[email protected]")
.authorUrl("https://www.CheckOutMyCoolSite.com")
.dateGmt(Akismet.dateToGmt(new Date()))
.content("Thanks for reviewing our software.")
.build
);
//...
final boolean isSpam = akismet.checkComment(comment);
if (isSpam) {
// ...
}
To use with bld, include the following dependency in your build file:
repositories = List.of(MAVEN_CENTRAL, SONATYPE_SNAPSHOTS_LEGACY);
scope(compile)
.include(dependency("net.thauvin.erik:akismet-kotlin:1.1.0-SNAPSHOT"));
To use with Gradle, include the following dependency in your build file:
repositories {
mavenCentral()
}
dependencies {
implementation("net.thauvin.erik:akismet-kotlin:1.1.0-SNAPSHOT")
}
Instructions for using with Maven, Ivy, etc. can be found on Maven Central.
The more information is sent to Akismet, the more accurate the response is. An HttpServletRequest can be used as a parameter so that all the relevant information is automatically included.
AkismetComment(request = context.getRequest())
This will ensure that the user's IP, agent, referrer and various environment variables are automatically extracted from the request.
Since comments mis-identified as spam or ham can be submitted to Askimet to improve the service. A comment can be saved as a JSON object to be stored in a database, etc.
var json = comment.toJson()
At a latter time, the comment can then be submitted:
akismet.submitSpam(Akismet.jsonComment(json))
If you want to contribute to this project, all you have to do is clone the GitHub repository:
git clone [email protected]:ethauvin/akismet-kotlin.git
Then use bld to build:
cd akismet-kotlin
./bld compile
The project has an IntelliJ IDEA project structure. You can just open it after all the dependencies were downloaded and peruse the code.
If all else fails, there's always more Documentation.