auyer / lagoinha-rs

Rust library that retrieve Addresses from the Brazilian Postal Code (CEP) using multiple APIs asynchronously, returning the result from the first one to respond.
Apache License 2.0
6 stars 1 forks source link

Lagoinha-rs

Rust library that returns addresses from the Brazilian Postal Code (CEP)
using the following APIs: Correios, ViaCEP, Cepla

Readme in Português

Rust project inspired by https://github.com/IgorHalfeld/lagoinha used to retrieve Addresses from the Brazilian Postal Code (CEP)

✔️ - Contributions and reviews are appreciated !


CI crates.io API docs MIT licensed

Lagoinha is a package that uses public APIs to fetch addresses using the Brazilian Postal Code (CEP). This package concurrently calls all the supported APIs and returns the first result to arrive.

Diagram:

lagoinha call fluxogram

Why this name ?

It means "little pond". It is a Brazillian meme ! Check the vídeo!

Instalation

lagoinha-rs = "0.2"

How to use it

use lagoinha;
use async_std;

fn main() {
    let addr = async_std::task::block_on(lagoinha::get_address("CEP_GOES_HERE"));
    println!("{:#?}", addr);
}

The first method should be similar for any async runtime.

Or in an Async function (example using Tokio):

use lagoinha;
use tokio;

#[tokio::main]
async fn main() {
    let addr = lagoinha::get_address("CEP_GOES_HERE", None).await;
    println!("{:#?}", addr);
}

Run Examples

Check the examples folder ! To run them, use the commands below.

# these examples can be run with a specific CEP (or leave blank for default value)
cargo run --example get_address 20940040
cargo run --example get_address_tokio 20940040
cargo run --example standalone_services 20940040

Note on the HTTP Client

This library uses isahc as its http client because: 1) It works in any async backend, and 2) It offers a configuration option for Title-Case headers (necessary for CepLá)


Todo