Akismet for Kotlin/Java/Android, a client library for accessing the Automattic Kismet (Akismet) spam comments filtering service. https://github.com/ethauvin/akismet-kotlin
Find a file
2024-01-31 16:41:17 -08:00
.circleci Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
.github/workflows Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
.idea Using provided directory for Kotlin serialization plugin 2024-01-31 16:41:17 -08:00
.vscode Bumped bld to 1.8.0 2024-01-31 16:02:46 -08:00
config Added detekt extension 2023-11-25 21:46:55 -08:00
docs Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
examples Bumped dependencies 2024-01-31 16:14:00 -08:00
lib Using provided directory for Kotlin serialization plugin 2024-01-31 16:41:17 -08:00
src Using provided directory for Kotlin serialization plugin 2024-01-31 16:41:17 -08:00
.editorconfig Initial commit. 2019-09-18 05:16:01 -07:00
.gitattributes Initial commit. 2019-09-18 05:16:01 -07:00
.gitignore Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
.gitlab-ci.yml Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
bitbucket-pipelines.yml Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
bld Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
bld.bat Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
LICENSE.txt Updated copyright 2023-09-24 21:11:36 -07:00
pom.xml Bumped dependencies 2024-01-31 16:14:00 -08:00
README.md Bumped bld to 1.8.0 2024-01-31 16:02:46 -08:00
sonar-project.properties Moved from Gradle to bld 2023-11-12 15:12:11 -08:00
version.txt Moved from Gradle to bld 2023-11-12 15:12:11 -08:00

License (3-Clause BSD) Kotlin Release bld Nexus Snapshot Maven Central

Quality Gate Status GitHub CI CircleCI

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.

Examples (TL;DR)

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) {
    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."
}
// ...

val isSpam = akismet.checkComment(comment)
if (isSpam) {
    // ...
}

View Full Examples

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 boolean isSpam = akismet.checkComment(comment);
if (isSpam) {
    // ...
}

View Full Examples

bld

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.0.0"));

Gradle

To use with Gradle, include the following dependency in your build file:

repositories {
    mavenCentral()
}

dependencies {
    implementation("net.thauvin.erik:akismet-kotlin:1.0.0")
}

Instructions for using with Maven, Ivy, etc. can be found on Maven Central.

HttpServletRequest

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.

View Full Example

JSON

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))

More…

If all else fails, there's always more Documentation.