Add endpoint to get information for a synonym

Signed-off-by: trivernis <trivernis@protonmail.com>
pull/1/head
trivernis 3 years ago
parent ec1dafe7d6
commit 630cde27e5
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

@ -1,5 +1,7 @@
use crate::error::ApiResult;
use crate::models::{Anime, Artist, Image, Resource, SearchResponse, Series, ThemeEntry};
use crate::models::{
Anime, AnimeSynonym, Artist, Image, Resource, SearchResponse, Series, ThemeEntry,
};
use reqwest::Response;
use serde::de::DeserializeOwned;
use serde::Serialize;
@ -100,6 +102,11 @@ impl AnimeThemesClient {
self.entry_by_id_with_include("series", slug, include).await
}
/// Returns a synonym by id
pub async fn synonym(&self, id: u32, include: &[&str]) -> ApiResult<AnimeSynonym> {
self.entry_by_id_with_include("synonym", id, include).await
}
/// Generic endpoint with the format /<endpoint>/<id> returning the type on the json field <endpoint>
async fn entry_by_id_with_include<T: DeserializeOwned, I: Display>(
&self,

@ -36,6 +36,7 @@ pub struct AnimeSynonym {
#[serde(flatten)]
pub meta: EntryMetadata,
pub text: String,
pub anime: Option<Anime>,
}
#[derive(Debug, Clone, Deserialize)]

@ -67,3 +67,11 @@ async fn it_returns_series_by_slug() {
assert!(result.anime.is_some())
}
#[tokio::test]
async fn it_returns_synonyms_b_id() {
let client = AnimeThemesClient::default();
let result = client.synonym(2462, &["anime"]).await.unwrap();
assert!(result.anime.is_some())
}

Loading…
Cancel
Save