workflowy-api 0.1.1

Workflowy API client
Documentation
use crate::{Client, ClientGetNodesError, ClientNewError, GetNodesRequest, ParentId};
use errgonomic::handle;
use static_env_var::static_env_var;
use std::clone::Clone;
use thiserror::Error;

static_env_var!(TEST_WORKFLOWY_API_KEY);

#[tokio::test]
async fn must_get_nodes() -> Result<(), MustGetNodesError> {
    use MustGetNodesError::*;
    let client = handle!(Client::new((*TEST_WORKFLOWY_API_KEY).clone()), ClientNewFailed);
    let request = GetNodesRequest::<'static>::from(ParentId::Root);
    let nodes = handle!(client.get_nodes(&request).await, GetNodesFailed, request);
    assert!(!nodes.nodes.is_empty());
    Ok(())
}

#[derive(Error, Debug)]
pub enum MustGetNodesError {
    #[error("failed to create an API client")]
    ClientNewFailed { source: ClientNewError },
    #[error("failed to get nodes")]
    GetNodesFailed { source: ClientGetNodesError, request: GetNodesRequest<'static> },
}