Expand description
§Stellar Horizon
The stellar-horizon crate provides a client to connect to Horizon.
Horizon is an API to interact with the Stellar network.
If you are looking for a way to create Stellar transactions, take
a look at stellar-base.
§Design Goals
This crate makes some design choices that come from my experience in writing server side application that interact with the Stellar network:
HorizonClientis a trait to make writing unit tests easier.- Streaming responses are just a
Stream, again to simplify testing. - Expose response headers to follow rate limiting and avoid error response.
- Responses can be serialized back to json, making it possible to write middleware services.
§Connecting to Horizon and first request
You connect to horizon by creating an HorizonHttpClient, then
you can use this client to send requests to Horizon.
use stellar_horizon::api;
use stellar_horizon::client::{HorizonClient, HorizonHttpClient};
let client = HorizonHttpClient::new_from_str("https://horizon.stellar.org")?;
let request = api::root::root();
let (headers, response) = client.request(request).await?;
println!("Horizon Version = {}", response.horizon_version);§Account details
use stellar_base::PublicKey;
use stellar_horizon::api;
use stellar_horizon::client::{HorizonClient, HorizonHttpClient};
let client = HorizonHttpClient::new_from_str("https://horizon.stellar.org")?;
let account = PublicKey::from_account_id("GA73S4WXZG7EONFCIFDSZ6VOJKFC2PMV5574YDJC4V4UBDGPAYN4SPAC")?;
let request = api::accounts::single(&account);
let (headers, response) = client.request(request).await?;
println!("Account Sequence Number = {}", response.sequence);§Streaming responses
This crate has full support for streaming response from
Horizon. Since an Horizon stream is just a Stream, you can use
all methods that work on a Stream.
use stellar_horizon::api;
use stellar_horizon::client::{HorizonClient, HorizonHttpClient};
use stellar_horizon::request::PageRequest;
use futures::stream::{Stream, StreamExt, TryStreamExt};
let client = HorizonHttpClient::new_from_str("https://horizon.stellar.org")?;
let request = api::transactions::all().with_cursor("now");
// Only take the first 5 events.
let mut stream = client.stream(request)?.take(5);
while let Some(event) = stream.try_next().await? {
println!("Event = {:?}", event);
}Modules§
- api
- Horizon API requests builders and types.
- client
- Horizon client traits and types.
- error
- Crate error type.
- headers
- Helper functions to access Horizon headers.
- horizon_
error - Horizon error response.
- link
- Pagination link.
- page
- Pagination page.
- request
- Request traits.
- resources
- Horizon resources.
Constants§
- VERSION
- The crate version.