#network-programming #miette #protocols #gofer

no-std bin+lib gofer

Gofer.rs makes it easy to fetch data from any URL

6 releases

0.1.4 May 4, 2025
0.1.3 Apr 27, 2025
0.0.0 Apr 23, 2025

#468 in Rust patterns

Download history 434/week @ 2025-04-23 118/week @ 2025-04-30 122/week @ 2025-05-07

674 downloads per month
Used in 4 crates (3 directly)

Unlicense

25KB
332 lines

Gofer.rs

License Compatibility Package Documentation

Gofer.rs makes it easy to fetch data from any URL in Rust. Just call gofer::open(url) to get back a Read!

✨ Features

  • Currently supports https:, http:, ftp:, file:, and data: URLs.
  • Supports opting out of any feature using comprehensive feature flags.
  • Adheres to the Rust API Guidelines in its naming conventions.
  • 100% free and unencumbered public domain software.

🛠️ Prerequisites

⬇️ Installation

Installation via Cargo

cargo add gofer

Installation in Cargo.toml (with all features enabled)

[dependencies]
gofer = "0.1"

Installation in Cargo.toml (with only specific features enabled)

[dependencies]
gofer = { version = "0.1", default-features = false, features = ["file"] }

👉 Examples

Importing the library

use gofer::open;

Reading HTTP(S) URLs

let result = gofer::open("https://www.google.com/robots.txt");

Reading FTP URLs

let result = gofer::open("ftp://ftp.isc.org/welcome.msg");

Reading file: URLs

let result = gofer::open("file:///path/to/file.txt");

Reading stdin: URLs

let result = gofer::open("stdin:");

Reading data: URLs

let result = gofer::open("data:,Hello%2C%20world%21%0A");

📚 Reference

https://docs.rs/gofer/

Protocols

Scheme Feature Summary
data: data Inline data in Base64 or URL-encoded format
file: file Local file path
ftp: ftp FTP
http: http HTTP
https: https HTTPS
stdin: stdin Standard input stream

Integrations

Clap, Dogma, Miette

👨‍💻 Development

git clone https://github.com/dryrust/gofer.rs.git

Share on X Share on Reddit Share on Hacker News Share on Facebook Share on LinkedIn

Dependencies

~1–19MB
~297K SLoC