Skip to main content

Crate finger_protocol

Crate finger_protocol 

Source
Expand description

§finger-protocol

Finger (RFC 1288, port 79) and its successor WebFinger (RFC 7033), which honours it by name.

Both answer the same question, thirty years apart: who is this person? Finger answers with whatever text the host felt like printing. WebFinger answers with a JSON Resource Descriptor, which is why it, and not finger, is what resolves @alice@example.social on the fediverse.

§Two protocols, two features

ModuleFeaturePulls
Finger, RFC 1288clientclienttokio, url
WebFinger, RFC 7033webfingerwebfingerserde, serde_json, percent-encoding

Both are on by default. Take default-features = false with just one when the other is dead weight.

§WebFinger without an HTTP client

WebFinger rides on HTTPS and this crate deliberately contains no HTTP stack: it builds the request URL and parses the response, and the GET itself belongs to the caller, who already has an HTTP client and opinions about timeouts, redirects, and TLS. See webfinger.

Fingering a host is client::fetch, documented on that module so the example stays honest when the client feature is off.

Re-exports§

pub use client::ClientError;
pub use client::DEFAULT_PORT;
pub use client::Query;
pub use client::Response;
pub use client::fetch;
pub use client::query;
pub use webfinger::Jrd;
pub use webfinger::MEDIA_TYPE;
pub use webfinger::acct;
pub use webfinger::request_url;

Modules§

client
The classic finger client (finger://, port 79, RFC 1288).
webfinger
WebFinger (RFC 7033), the successor that honours finger by name.