textsynth 0.1.0

A (unofficial) wrapper for the TextSynth API, a text synthesization service.
Documentation
use anyhow::Context;
use std::env;
use textsynth::prelude::TextSynth;

pub enum ApiKeyRetrievalMethod {
    EnvironmentVariable,
    CommandLineArgument,
}

impl ApiKeyRetrievalMethod {
    pub const fn skip_by(&self) -> usize {
        match self {
            Self::EnvironmentVariable => 1,
            Self::CommandLineArgument => 2,
        }
    }
}

pub fn textsynth() -> anyhow::Result<(TextSynth, ApiKeyRetrievalMethod)> {
    let (api_key, retrieval_method) = match env::var("API_KEY") {
        Ok(api_key) => (api_key, ApiKeyRetrievalMethod::EnvironmentVariable),
        Err(_) => (
            env::args().nth(1).context("pass the api key to either an `API_KEY` environment variable or a command line argument")?,
            ApiKeyRetrievalMethod::CommandLineArgument,
        ),
    };
    let textsynth = TextSynth::try_new(api_key).context("failed to create a TextSynth instance")?;

    Ok((textsynth, retrieval_method))
}

#[allow(dead_code)]
fn main() {}