#nntp #usenet #api-bindings

rek2_nntp

这是一个Rust库,提供与NNTP服务器交互的方式,符合RFC 3977和RFC 4643规范。

6个版本

0.1.5 2023年10月1日
0.1.4 2023年10月1日
0.1.1 2023年9月26日

#1 in #nntp

每月 34 次下载

GPL-3.0-or-later

17KB
263

ReK2 NNTP RFC4643 RFC3977 库

这是一个Rust库,提供与NNTP服务器交互的方式,符合RFC 3977RFC 4643规范。

特性

  • 文章发布
  • 新闻组列表
  • 从组中读取文章
  • 身份验证(TLS/SSL)

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
rek2_nntp = "0.1.3"  # Replace with the actual version

运行 cargo build 来构建依赖项。

使用方法

导入库

首先,将以下导入添加到您的代码中

extern crate rek2_nntp;

身份验证

要验证身份,请使用 authenticate 函数

use rek2_nntp::authenticate;

// Example of how to authenticate using the library
let result = authenticate("host.com", "username", "password").await;
match result {
    Ok(connection) => {
        // Do something with the authenticated connection
    }
    Err(err) => {
        println!("Failed to authenticate: {}", err);
    }
}

列出新闻组

要列出新闻组,请使用 list_newsgroups 函数

use rek2_nntp::list_newsgroups;

let result = list_newsgroups(&mut authenticated_connection).await;
match result {
    Ok(newsgroups) => {
        for newsgroup in newsgroups {
            println!("Newsgroup: {}", newsgroup.name);
        }
    }
    Err(err) => {
        println!("Failed to list newsgroups: {}", err);
    }
}

从组中读取

要从新闻组中读取文章

use rek2_nntp::read_from_group;

let result = read_from_group(&mut authenticated_connection, "group.name", None).await;
match result {
    Ok(articles) => {
        for article in articles {
            println!("Article: {}", article.header);
        }
    }
    Err(err) => {
        println!("Failed to read articles: {}", err);
    }
}

向组发布

要将文章发布到新闻组

use rek2_nntp::post_to_group;
use rek2_nntp::Article;

let article = Article {
    from: "[email protected]".to_string(),
    subject: "Hello".to_string(),
    body: "World".to_string(),
};

let result = post_to_group(&mut authenticated_connection, &article, &"newsgroup.name".to_string()).await;
match result {
    Ok(_) => println!("Posted successfully"),
    Err(err) => println!("Failed to post: {}", err),
}

贡献

您可以创建问题、拉取请求或改进文档来为该项目做出贡献。

许可

本项目采用GNU通用公共许可证v3.0许可。

依赖项

~10–22MB
~395K SLoC