#dictionary #webster #merriam #api-bindings

merriam-webster-http

An HTTP client for the Merriam Webster's Dictionary API

1 unstable release

0.2.0 Oct 14, 2023

#595 in HTTP client

MIT/Apache

105KB
873 lines

Merriam Webster HTTP

An HTTP client for the Merriam Webster's Dictionary API

CI Crate API

Example

use std::env;

use merriam_webster_http::MerriamWebsterClient;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    tracing_subscriber::fmt::init();

    let api_key = env::var("MERRIAM_WEBSTER_API_KEY")?;
    let client = MerriamWebsterClient::new(api_key.into());

    let defs = client
        .collegiate_definition("documentation".to_string())
        .await?;
    let def = defs.first()
        .expect(format!("No definition found for {}", word).as_str());
    let shortdefs = def.shortdef.as_ref().unwrap();

    println!("Short definitions for 'documentation': {shortdefs:#?}");

    Ok(())
}

Features

TLS

Note: not enabling any TLS feature is supported for use behind a proxy; Merrium Webster's API is HTTPS only.

Note: this TLS code was taken from twilight-http in accodance with its license.

merriam-webster-http has features to enable HTTPS connectivity with hyper. These features are mutually exclusive. rustls-native-roots is enabled by default.

native

The native feature uses a HTTPS connector provided by hyper-tls.

To enable native, do something like this in your Cargo.toml:

[dependencies]
merriam-webster-http = { default-features = false, features = ["native"], version = "0.1" }

rustls-native-roots

The rustls-native-roots feature uses a HTTPS connector provided by hyper-rustls, which uses rustls as the TLS backend, and enables its native-tokio feature, which uses rustls-native-certs for root certificates.

This is enabled by default.

rustls-webpki-roots

The rustls-webpki-roots feature uses a HTTPS connector provided by hyper-rustls, which uses rustls as the TLS backend, and enables its webpki-tokio feature, which uses webpki-roots for root certificates.

This should be preferred over rustls-native-roots in Docker containers based on scratch.

Trust-DNS

The trust-dns enables hyper-trust-dns, which replaces the default GaiResolver in hyper. hyper-trust-dns instead provides a fully async DNS resolver on the application level.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~7–20MB
~305K SLoC