download_server_descriptors

Function download_server_descriptors 

Source
pub async fn download_server_descriptors(
    fingerprints: Option<&[&str]>,
    endpoints: Option<&[DirPort]>,
    request_timeout: Option<Duration>,
) -> Result<DownloadResult, Error>
Expand description

Downloads server descriptors.

Server descriptors contain detailed information about relays including their keys, exit policies, and capabilities.

§Arguments

  • fingerprints - Optional list of relay fingerprints to fetch. If None, downloads all server descriptors (large!). Maximum 96 fingerprints per request.
  • endpoints - Optional list of endpoints to try.
  • request_timeout - Optional timeout for each download attempt.

§Returns

A DownloadResult containing the server descriptors.

§Errors

Returns Error::InvalidRequest if more than 96 fingerprints are requested. Returns Error::Download if all endpoints fail.

§Example

use stem_rs::descriptor::remote::download_server_descriptors;
use std::time::Duration;

// Download specific relay descriptors
let fingerprints = ["9695DFC35FFEB861329B9F1AB04C46397020CE31"];
let result = download_server_descriptors(
    Some(&fingerprints.iter().map(|s| *s).collect::<Vec<_>>()),
    None,
    Some(Duration::from_secs(30)),
).await?;