#gemini #protocols #smolnet

gmi

一个旨在轻量级的用于 Gemini 协议的 Rust 库

4 个版本

0.2.1 2021 年 11 月 9 日
0.2.0 2021 年 10 月 17 日
0.1.1 2021 年 10 月 11 日
0.1.0 2021 年 10 月 6 日

#26 in #gemini

LGPL-3.0-or-later

71KB
1K SLoC

gmi

gmi(发音为“Jee Mee”或您喜欢的任何方式)是一个简单易用、轻量级的 Rust 库,用于作为客户端与 Gemini 协议 进行接口。它是由于对现有库引入多个其他依赖的挫败感而创建的,这些依赖对我来说是多余的。它 **不** 旨在作为服务器运行的库。

此库分为三个主要部分

  • gemtext:一个 Gemtext 解析器
  • protocol:用于 Gemini 协议的各种数据结构的集合。
  • request:一个模块,用于向 Gemini 服务器实际发出请求。可以通过禁用功能标志 net 来禁用它。
  • url:一个简单的 URL RFC 子集实现,仅实现 Gemini 所需的功能。

重点

  • 轻量级
  • 小的外部依赖
  • 简单接口

特性

  • 支持 Gemini TLS
  • 解析 Gemini 响应
  • 解析 Gemtext
  • 客户端证书
  • 首次使用信任 (TOFU)
  • Mercury 支持

简单示例

use gmi::url::Url;
use gmi::request;
fn main() {
    let url = Url::from_str("gemini://gemini.circumlunar.space").unwrap();
    let resp = request::make_request(&url).unwrap();
    println!("{}", string::from_utf8_lossy(&resp.data));
}

替代方案

gemini 是一个较重但功能更完整的库,用于与 Gemini 协议进行接口。它可以用于服务器和客户端,而 gmi 只能用作客户端(目前是这样 (; )

依赖项

~0–9.5MB
~98K SLoC