1
0
Fork 0
mirror of https://github.com/LemmyNet/lemmy.git synced 2025-04-21 18:34:07 +00:00
lemmy/crates/api_common
Richard Schwab f76322e3f5
Reduce false positives in URL blocklist to reduce scunthorpe problem by matching at word boundaries. ()
This addresses an issue brought up on matrix where blocking rt.com resulted in links to deviantart.com getting blocked.
2024-12-27 12:53:23 -05:00
..
src Reduce false positives in URL blocklist to reduce scunthorpe problem by matching at word boundaries. () 2024-12-27 12:53:23 -05:00
Cargo.toml Running cargo-features-manager prune. () 2024-12-20 23:20:16 +01:00
README.md Reorganize api endpoints (fixes ) () 2024-12-07 14:06:33 -07:00

lemmy_api_common

This crate provides all the data types which are necessary to build a client for Lemmy. You can use them with the HTTP client of your choice.

Here is an example using reqwest:

    let params = GetPosts {
        community_name: Some("asklemmy".to_string()),
        ..Default::default()
    };
    let client = Client::new();
    let response = client
        .get("https://lemmy.ml/api/v4/post/list")
        .query(&params)
        .send()
        .await?;
    let json = response.json::<GetPostsResponse>().await.unwrap();
    print!("{:?}", &json);

As you can see, each API endpoint needs a parameter type ( GetPosts), path (/post/list) and response type (GetPostsResponse). You can find the paths and handler methods from this file. The parameter type and response type are defined on each handler method.

For a real example of a Lemmy API client, look at lemmyBB.

Lemmy also provides a websocket API. You can find the full websocket code in this file.

Generate TypeScript bindings

TypeScript bindings (API types) can be generated by running cargo test --features full. The ts files be generated into a bindings folder.

This crate uses ts_rs macros derive(TS) and ts(export) to attribute types for binding generating.