#api #spam #detection #akismet

instant-akismet

Rust client for Akismet spam protection

3 releases

0.1.2 Jan 9, 2023
0.1.1 Sep 26, 2022
0.1.0 Sep 21, 2022

#884 in Web programming

Download history 396/week @ 2022-10-08 432/week @ 2022-10-15 406/week @ 2022-10-22 823/week @ 2022-10-29 534/week @ 2022-11-05 44/week @ 2022-11-12 27/week @ 2022-11-19 11/week @ 2022-11-26 37/week @ 2022-12-03 48/week @ 2022-12-10 13/week @ 2022-12-17 2/week @ 2022-12-24 12/week @ 2022-12-31 79/week @ 2023-01-07 36/week @ 2023-01-14 35/week @ 2023-01-21

162 downloads per month

Apache-2.0

23KB
399 lines

Instant Akismet: Akismet spam detection client written in Rust

Documentation Crates.io Build status License: Apache 2.0

Instant Akismet is a full set of Rust bindings for the Akismet spam-detection service and is used in production over at Instant Domains to help us protect our users' sites from comment and messaging spam.

Features

  • Supports all Akismet API features
    • Akismet key verification
    • Comment spam check
    • Report spam (false negative)
    • Report ham (false positive)
  • Akismet pro-tip handling
  • Full Akismet error propagation
  • Unit tests for all API features

Getting Started

To begin with, you'll need to head over to Akismet and join the developer program to obtain an API key.

Note: In order to run the included tests, this key should be set as AKISMET_KEY in your environment.

Usage

// Initialize client
let akismet_client = AkismetClient::new(
    String::from("https://exampleblog.com"), // The URL for your blog
    akismet_key, // Your Akismet API key
    reqwest::Client::new(), // Reqwest client to use for requests
    AkismetOptions::default(), // AkismetOptions config
);

// Verify key
akismet_client.verify_key().await?;

// Create a comment
let comment = Comment::new(akismet_client.blog.as_ref(), "8.8.8.8")
    .comment_author("exampleUser1")
    .comment_author_email("example-user@example.com")
    .comment_content("example comment content");

// Check comment for spam
let is_spam = akismet_client.check_comment(comment).await?;

Testing

In order to run the included tests, you will need to ensure that you have your API key set as AKISMET_KEY in your environment.

cargo test

Dependencies

~6–14MB
~280K SLoC