discogs_api/endpoints/
release.rs

1use super::Endpoint;
2use crate::Error;
3use reqwest::Url;
4
5pub struct Release;
6
7impl<'de> Endpoint<'de> for Release {
8    type Parameters = isize;
9    type ReturnType = crate::data_types::Release;
10
11    fn build_url(base: &Url, params: Self::Parameters) -> Result<Url, Error> {
12        base.join(&format!("/releases/{params}"))
13            .map_err(|_| Error::UrlError)
14    }
15}
16
17#[cfg(test)]
18mod tests {
19    use super::Release;
20    use crate::{Auth, Client};
21
22    #[test]
23    fn basic() {
24        let id = 27651927;
25        let _data = Client::builder()
26            .build()
27            .unwrap()
28            .get::<Release>(id)
29            .unwrap();
30    }
31
32    #[test]
33    fn with_auth() {
34        let id = 27651927;
35        let pat = std::env::var("discogs-pat")
36            .expect("expected personal access token in env var `discogs-pat`");
37
38        let data = Client::builder()
39            .auth(Auth::Token(pat))
40            .build()
41            .unwrap()
42            .get::<Release>(id)
43            .unwrap();
44
45        assert!(!data.images.as_ref().unwrap()[0].resource_url.is_empty());
46    }
47}