Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
Sdks

Rust SDK

Install and use the MisarBlog Rust SDK

Installation

Add to Cargo.toml:

[dependencies]
misarblog = "0.1"
tokio = { version = "1", features = ["full"] }

Quick Start

use misarblog::MisarBlogClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = MisarBlogClient::new(std::env::var("MISARBLOG_API_KEY")?);

    let posts = client.posts().list("johndoe", Default::default()).await?;
    for post in &posts.data {
        println!("{} — {}", post.title, post.slug);
    }

    Ok(())
}

Generate an Embed URL

let url = client.embed().url("johndoe", &Default::default());
println!("{}", url);

// Single post with options
use misarblog::EmbedOptions;
let url = client.embed().url("johndoe", &EmbedOptions {
    slug: Some("my-first-post".into()),
    theme: Some("dark".into()),
    ..Default::default()
});

Available Methods

MethodDescription
client.posts().list(username, params)List posts for a user
client.posts().get(username, slug)Get a single post by slug
client.embed().url(username, options)Generate an embed URL
client.auth().refresh_token(token)Refresh a session token
client.webhooks().list()List webhook endpoints
client.webhooks().create(request)Register a webhook
client.webhooks().delete(id)Delete a webhook

Error Handling

use misarblog::Error;

match client.posts().list("johndoe", Default::default()).await {
    Ok(posts) => { /* use posts */ }
    Err(Error::Api { status, message }) => {
        eprintln!("API error {}: {}", status, message);
    }
    Err(e) => eprintln!("Error: {}", e),
}