e63aa80c3a
* Fixes #2900 - Checks slur regex to see if it is too permissive along with small validation organization * Clean up variable names, add handler for valid empty string usecase * Update tests * Create validation function and add tests * Test clean up * Use payload value vs local site value to prevent stunlocking * Remove println added while testing * Fall back to local site regex if not provided from request * Attempt clean up of flaky comment_view tests * Pull in latest submodule * Move application, post check into functions, add more tests and improve test readability --------- Co-authored-by: Nutomic <me@nutomic.com> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |
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/v3/post/list")
.query(¶ms)
.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 parameter types from this file. For the response types you need to look through the crates lemmy_api and lemmy_api_crud for the place where Perform/PerformCrud is implemented for the parameter type. The response type is specified as a type parameter on the trait.
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.