uller

Crates.iouller
lib.rsuller
version0.1.23
sourcesrc
created_at2024-08-01 17:15:50.80716
updated_at2024-08-01 19:42:37.989768
descriptionGenerate/Donwload your links
homepage
repositoryhttps://github.com/TOwInOK/uller
max_upload_size
id1322243
size13,998
TOwInOK#nqcq (TOwInOK)

documentation

https://docs.rs/uller

README

Uller

About

This crate provides you with:

  • MakeLink
    • An interface for generating a Url from a structure.
  • JsonDownload<T>
    • An interface for fetching data from a generated Url using MakeLink and converting it to a <T> structure.
  • BytesDownload
    • An interface for downloading data as bytes from a MakeLink conversion.

Note: Add url crate for your project.

Information below contains examples from the uller-macro crate.

Example (future - macro)

Qller (default)

Macros for implementing MakeLink in query style using a struct as input

Example

use uller::prelude;
#[derive(Qller)]
#[url = "http://127.0.0.1:1234/"]
struct Test {
    #[name = "f"] // rename to "f"
    f111: String,
    #[name = "v"] // rename to "v"
    #[pos = 0]    // move it to the first position
    v222: String,
}

This will convert to: http://127.0.0.1:1234/?v={value}&f={value}

Note: Positions start at 0, like an array.

Example (future - juller)

Juller (feature - juller)

Macros for downloading <T> using a struct that implements MakeLink (Qller) and JsonDownload

Example

use uller::prelude;
#[derive(Qller, Juller)]
#[output = "TestOut"]
#[url = "http://127.0.0.1:41112/"]
struct Test {
    f: String,
    v: String,
}

#[derive(Deserialize, Debug)]
struct TestOut {
    field: String,
}

async fn convert(st: &Test) -> TestOut {
    st.download().await.unwrap()
    // or
    st.download_verbose().await.unwrap()
}

Example (future - buller)

Buller (feature - buller)

Macros for downloading Bytes using a struct that implements MakeLink (Qller) and BytesDownload

Example

use uller::prelude;

#[derive(Qller, Buller)]
#[url = "http://127.0.0.1:41112/"]
struct Test {
    f: String,
    v: String,
}

async fn convert(st: &Test) -> bytes::Bytes {
    st.download().await.unwrap()
    // or
    st.download_verbose().await.unwrap()
}
Commit count: 0

cargo fmt